|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Как правильно расчитать угол по координатам?
Здравствуйте.
Я пытаюсь сделать так: добавляю определённое количество объектов на сцену, определяю их угол, относительно определённой точки, определяю расстояние от определённого объекта до центра, после всего этого я присваиваю новые координаты каждому определённому объекту по такой системе: "определённыйОбъект.x = центр.x + Math.cos(угол) * расстояниеОтОбъектаДоТочки, определённыйОбъект.y = центр.y + Math.sin(угол) * расстояниеОтОбъектаДоТочки". В итоге некоторые объекты куда-то уезжают, а другие остаются... А цель вообще такая: добавить объекты через косинусы\синусы, определяя по изначальным координатам их угол, туда, где они изначально были. Что я делаю неправильно? |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
А что Вы в итоге хотите? я просто не понял цель Вам нужно просто точку под углом или повернуть объект на угол относительно центра к другой точки?
|
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Пока я хочу, просто добавить объект туда же, где он был изначально, но только с помощью косинусов\синусов. После этого я попытаюсь изменять угол, чтобы создать эффект вращения объекта вокруг центра.
|
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Вопрос о вращении во круг центра - на три темы ниже. А какие значения есть для возврата?
|
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Так я могу сделать так, чтобы они вращались (у меня вокруг определенных объектов вращаются звезды).
Есть радиус, угол. Хотя, если честно, я не понимаю, что обозначает "возврат". |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
А какие для этого есть значения. |
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
package classes.orders { import flash.display.MovieClip; import classes.init.Settings; import flash.geom.Point; import flash.events.Event; public class MotionStargazers extends MovieClip { public function MotionStargazers() { this.addEventListener(Event.ENTER_FRAME,motion); } private function motion(event:Event):void { const STARGAZERS:Array = Settings.STARGAZERS; //Ссылка на массив звездочётов: const LENGTHSTARGAZERS:int = Settings.STARGAZERS.length; //Длина массива звездочётов: const CENTER:Point = new Point(Settings.mainContainer.stageWidth/2,Settings.mainContainer.stageHeight/2); for(var stargazer:int = 0; stargazer < LENGTHSTARGAZERS; stargazer++) { const STARGAZER:MovieClip = STARGAZERS[stargazer][0]; //Ссылка на звездочёта: const STARGAZERPOINT:Point = new Point(STARGAZER.x,STARGAZER.x); //Точка звездочёта: const RADIUS:Number = Point.distance(STARGAZERPOINT,CENTER); //Радиус: const ANGLE:Number = Math.atan2(STARGAZER.y-CENTER.y,STARGAZER.x-CENTER.x); //Угол: //STARGAZER.x = CENTER.x + Math.cos(ANGLE) * RADIUS; //STARGAZER.y = CENTER.y + Math.sin(ANGLE) * RADIUS; STARGAZER.x = CENTER.x + Math.cos(ANGLE) * 200; STARGAZER.y = CENTER.y + Math.sin(ANGLE) * 200; } } } } Всё верно, извините. Добавлено через 1 минуту Если работает прокомментированный код, то звездочёты куда-то улетают. Добавлено через 9 минут Получается, что объект был в точке A, потом определив его координаты мы добавляем его туда же, но только через косинусы\синусы. |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
это Вы делите на два... а это Вы делите на .2. я это к тому, что я раньше не знал этого |
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Я поправил код. Такого не должно быть. Делю на два затем, чтобы узнать центр сцены.
|
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Туда, где он был изначально, но только с помощью косинуса\синуса\угла\радиуса.
|
Часовой пояс GMT +4, время: 11:16. |
|
« Предыдущая тема | Следующая тема » |
|
|