Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.11.2014, 14:32
sospamom вне форума Посмотреть профиль Отправить личное сообщение для sospamom Найти все сообщения от sospamom
  № 1  
Ответить с цитированием
sospamom

Регистрация: Jun 2008
Сообщений: 126
По умолчанию Равномерно расположить объекты

Нужно посадить на карте N деревьев. N будет маленьким, штук 12.

Нужно чтобы позиции деревьев были случайными и деревья были распределены по карте примерно равномерно.

Если делать

Код AS3:
x = Math.random() * stage.stageWidth;
y = Math.random() * stage.stageHeight;
то деревья сбиваются в кучи.


По какому запросу гуглить решение?

Старый 14.11.2014, 15:22
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 2  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Если в лоб, то генерируйте точку, в которую хотите поставить дерево.
Потом проверяйте не слишком ли она близко к какой-либо еще.
И если все хорошо, то ставьте дерево, если все не очень хорошо -- генерите следующую точку.
Может быть, у вас будет столько деревьев, что с надлежащей дистанцией их рассадить не получится.
В таком случае после определенного количества холостых проходов можно начать постепенно уменьшать желаемую дистанцию. И так до тех пор, пока все не рассадится.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.

Старый 14.11.2014, 15:40
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 3  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
Тогда лучше сразу сделать сетку из точек удаленных на одинаковое положение
друг от друга, а потом от этих точек находить конечные точки деревьев удаленых
на рандомный, с зарание установленным максимумом, радиус и рандомный градус.

Старый 14.11.2014, 15:48
ObOs вне форума Посмотреть профиль Отправить личное сообщение для ObOs Найти все сообщения от ObOs
  № 4  
Ответить с цитированием
ObOs
 
Аватар для ObOs

Регистрация: Jul 2009
Сообщений: 149
Либо разбить на сетку ячеек(плиток) и помещать каждое дерево в случайные координаты соответствующей ячейки.

Код AS3:
 
			var linesCount:int  = 4;
			var columnsCount:int = 3;
 
			var cellWidth:Number = stage.stageWidth / linesCount;
			var cellHeight:Number = stage.stageHeight / columnsCount;
 
			for (var i:int = 0; i < linesCount; i++) 
			{
				for (var j:int = 0; j < columnsCount; j++) 
				{
					var tree:Tree = new Tree();
					var treeX:Number = randomInInterval(i * cellWidth, (i + 1) * cellWidth);
					var treeY:Number = randomInInterval(j * cellWidth, (j + 1) * cellWidth);
					tree.x = treeX;
					tree.y = treeY;
					addChild(tree);
				}
 
			}
 
		private function randomInInterval(start:Number = 0, end:Number = 1):Number
		{
			return start + Math.random() * (end - start);
		}
Trees.swf   (1.8 Кб)
Вложения
Тип файла: swf Trees.swf (1.8 Кб, 101 просмотров)


Последний раз редактировалось ObOs; 14.11.2014 в 17:37.
Создать новую тему Ответ Часовой пояс GMT +4, время: 13:20.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 13:20.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.