![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: May 2012
Сообщений: 166
|
Здравствуйте ищу совета как создать случайную точку что бы расстояние от нее до другой точки не превышало определенную цифру.
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Добавлено через 1 минуту
Ну, это для (0, 0) конечно; потом просто смещаете ее на координаты первой точки.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: May 2012
Сообщений: 166
|
А что может быть не так если выдает ошибку на эту строчку?
1067: Неявное приведение значения типа Function к несоответствующему типу Number. |
|
|||||
|
забыли скобочки круглые у Math.random()
Вот так правильно Цитата:
а для чего вам нужна такая случайная точка? Есть просто такая заумная штука как распределение случайной величины, так вот тут оно будет неравномерным, иначе говоря точки ближе к центру будут несколько плотнее чем к краям. Если вы хотите провести какой-то математический эксперимент то нужно чуть другую формулу, самым простым будет генерить точку в квадрате и если расстояние от неё до центра больше нужного радиуса, то пропускать и генерировать новую. Чтобы лучше прочувствовать это дело советую прочитать http://my-tribune.blogspot.com/2010/03/blog-post.html
__________________
:) |
|
|||||
|
Регистрация: May 2012
Сообщений: 166
|
Это нужно для игры в которой случайным образом будит выбираться тип поведения персонажей и 1м из которых будит передвижение в определенных пределах в случайную точку. Конечно есть 1 нюанс... игра с перспективой и соответственно было бы неплохо эту математическую окружность уменьшить по Y
Добавлено через 1 час 27 минут Всем спасибо, вы мне очень помогли. Последний раз редактировалось Tetraeon; 10.06.2012 в 13:25. |
|
|||||
|
Modus ponens
|
Еще вариант который приходит в голову, без генерации лишних точек, это пересчитывать удаление от центра добавляя к нему (r - sqrt((r - s)^2)) таким образом компенсируя большую плотность в районе центра за счет того, что чем ближе к центру находится найденная точка на тем большую величину мы ее сместим от центра.
r - радиус окружности, s - произвольное смещение от центра так что 0 <= s <= r.
__________________
Hell is the possibility of sanity |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Чтоб распределение по площади круга было равномерным (в центре не было больше точек, чем по краям):
Сплющить по у можно легко и просто, берёте и плющите, про это писать неинтересно =)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. Последний раз редактировалось -De-; 10.06.2012 в 17:27. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
for (var i:uint = 0; i < 1000; i++) { var p:Point = Point.polar(Math.random() * 200, Math.random() * 2 * Math.PI); this.graphics.beginFill(0xFFCC99, 0.5); this.graphics.drawCircle(p.x + 300, p.y / 2 + 300, 3); this.graphics.endFill(); } for (i = 0; i < 1000; i++) { var d:Number = Math.sqrt(Math.random()); var p2:Point = Point.polar(d * 200, Math.random() * 2 * Math.PI); this.graphics.beginFill(0xFFCC99, 0.5); this.graphics.drawCircle(p2.x + 800, p2.y / 2 + 300, 3); this.graphics.endFill(); }
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 10.06.2012 в 17:37. Причина: обновил алгоритм -De- |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:00. |
|
|
« Предыдущая тема | Следующая тема » |
|
|