![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2010
Сообщений: 28
|
Имеется массив мувиков, расположенных по окружности:
var objects:Array = new Array(); while (a < b) { mc = new MyObject(); mc.angle = ((2 * Math.PI) / 360) * randInt(1, 360); mc.x = radius * Math.cos(mc.angle); mc.y = radius * Math.sin(mc.angle); objects.push(mc); a++; } public function searchNeighbor(mo:MyObject):void { mo.neighborLeft = null; mo.neighborRight = null; var locObjects:* = objects; for each (var locObject:* in locObjects) { if (locObject != mo) { if (mo.neighborLeft == null || MyObject(locObject).angle < mo.neighborLeft.angle) { mo.neighborLeft = MyObject(locObject); } if (mo.neighborRight == null || MyObject(locObject).angle > mo.neighborRight.angle) { mo.neighborRight = MyObject(locObject); } } } } Подскажите пожалуйста. |
|
|||||
|
а если без геометрии по индексу массива objects, динамическому свойству какому-нибудь?
|
|
|||||
|
Регистрация: Jan 2010
Сообщений: 28
|
Цитата:
Формализую задачу: Имеем несколько точек, разбросанных по окружности. Необходимо найти для одной из этих точек, её соседку слева, и её соседку справа. |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Ну у вас есть куча углов, все от -пи до +пи например. Считаете для каждого
Ищите минимум этого diffLeft. Обьект, которому соответствует этот минимум - первый сосед слева. Аналогично ищем правого: Возможно, лево и право перепутаны, но всё равно это относительные понятия =)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. Последний раз редактировалось -De-; 09.12.2010 в 18:34. |
|
|||||
|
Lorem ipsum
|
я бы каждую проверку сделал так:
1. новый ноль — угол базового объекта. для этого вычитаем его angle из каждого нового угла в цикле 2. каждый угол приводим к диапазону [-180, 180] (angle += angle > 180 ? -360 : 360) 3. каждый новый угол сравниваем с текущими соседями в соответствующей песочнице (больше ноля — с левым, меньше — с правым) другое дело, что в п.3 углы соседей тоже надо будет привести к пп.1,2 для этого наверное стоит хранить эти углы в некоторых angleLeft и angleRight
__________________
Поймай яблоко 2! |
|
|||||
|
Регистрация: Jan 2010
Сообщений: 28
|
*они там от 0 до 2пи. Но это есно не суть важно.
Огромное спасибо! Вы волшебник. Всё работает просто супер! Вы сделали меня счастливым. =) |
|
|||||
|
у пропустил моментик в коде что они разбрасываются рандомно, навскидку показалось что вы их равномерно по кругу ракладываете
|
![]() |
![]() |
Часовой пояс GMT +4, время: 19:11. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| вычисление , окружность , угол |
|
|