|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
>>Но как узнать то же самое у эллипса
длину элипса аналитически нельзя выразить, можно подобрать или воспользоваться каким-либо численным приближением (легко нагуглишь) >>и без правильных расчетов он будет 80% движений висеть в воздухе это можно, весь расчет заключается в определении текущего радиуса var g2r:Number=Math.PI/180; var speed:Number=2; var rW:Number=ball.width/2; var rH:Number=ball.height/2; var y0:Number=ball.y-rW; addEventListener(Event.ENTER_FRAME, moving); function moving(e:Event):void { ball.rotation+=speed; var a:Number=g2r*ball.rotation; var rX=rW*Math.cos(a); var rY=rH*Math.sin(a); var r=Math.sqrt(rX*rX+rY*rY); ball.y=y0+r; ball.x+=g2r*speed*r;//грубо длина дуги для текущего радиуса } Последний раз редактировалось silin; 30.09.2009 в 12:41. |
|
|||||
Регистрация: Feb 2008
Сообщений: 100
|
Цитата:
__________________
http://komimap.ru |
|
|||||
Modus ponens
|
А... в смысле нужно было рассчитать смещение точки вокруг которой элипс вращается, если дано, что он должен двигаться строго горизонтально вправо?
Ну тогда да, мой пример не в кассу Но пользуясь тем же примером вы можете рассчитать и это т.как для примера silin'a вам нужно чтобы точка регистрации еллипса была в его центре. А для моего примера вам нужно будет смещать точку трансформации на sin угла помноженый на разность большого и маленького радиусов по абсциссе, а по ординате орибавлять cos того же угла помноженый на ту же разность.
__________________
Hell is the possibility of sanity |
|
|||||
Цитата:
если ты под формулой эллиптический интеграл имеешь ввиду, так он не берется, только численными методами его посчитать можно |
|
|||||
ветеран форума
|
Можно строить касательную проходящую через точку, находить ее угол и поворачивать эллипс на этот угол относительно этой точки, после поворота опустить эллипс по Y на разность между Y_ткущей и Y_предыдущей точек, и так для каждой точки эллипса (или с интервалом в несколько точек).
__________________
trace("Остановите Землю, я сойду!!!"); |
|
|||||
А дальше читать лень? В следующий раз не флуди и умничай только если прочитал сообщение до конца.
silin огромное тебе спасибо за ответ. Как раз таки найденный радиус можно использовать для того, чтобы рассчитать текущее расстояние за 1 повернутый градус. Т.е.: var g2r:Number = Math.PI / 180; var speed:Number = 1; var rW:Number = ball.width / 2; var rH:Number = ball.height / 2; var y0:Number = ball.y - rW; addEventListener(Event.ENTER_FRAME, moving); function moving(e:Event):void { var a:Number = g2r * ball.rotation; var rX = rW * Math.cos(a); var rY = rH * Math.sin(a); var r = Math.sqrt(rX*rX + rY*rY); ball.y = y0 + r; ball.x += 2 * Math.PI * r / 360 * speed; ball.rotation += speed; }
__________________
Рожденный ползать, везде пролезет... |
|
|||||
Ну так я все правильно значит имел ввиду (судя по ссылкам с википедии).
А wvxvw просто попутал разные фигуры и своим статусом супер модератор заставил изменить мое мнение моментально И в коде у меня тоже получается эллипс (сужу по картинке из вики по эллипсу)
__________________
Рожденный ползать, везде пролезет... |
Часовой пояс GMT +4, время: 15:40. |
|
« Предыдущая тема | Следующая тема » |
Теги |
вращение , как , реалистичное |
|
|