![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Nov 2003
Сообщений: 290
|
Друзья, безмерно буду благодарен, если кто подскажет принцип моделирования траетории полета объекта, допустим, мяча, после броска в трехмерном пространстве. Принцип разделения скорости на составляющие по x и у при полете по параболе в 2D понятен, но что-то не могу никак придумать как прикрутить третью координату.
Гравитация элементарная. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Делай всё в трехмерных координатах, а уж преобразовать в 2D — несколько строк.
|
|
|||||
|
Регистрация: Nov 2003
Сообщений: 290
|
формулы!
дайте pls формулы! у меня постновогодний ступор... ![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Мои вечные шесть строк здесь:
http://etcs.ru/portfolio/bricks.fla (преобразование 3D в 2D координаты) С остальным сам придумаешь. |
|
|||||
|
Регистрация: Nov 2003
Сообщений: 290
|
эм..
а как разложить уравнение движения в 3-х мерное пространство? |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
У тебя тело движется в какой-либо плоскости. А это 2D. Тебе надо спроецировать на три оси.
Если у тебя тело твижется в осях z и y, то по x оно всегда координату 0 имеет. Ну, к примеру. |
|
|||||
|
Регистрация: Nov 2003
Сообщений: 290
|
да, все верно. точно так. но как спроецировать не соображу...
![]() |
|
|||||
|
Регистрация: Sep 2006
Адрес: Zaporozhye, Ukraine
Сообщений: 141
|
public function rotate3DVectorAroundX(point:Object, center:Object, dAngle:Number):Object{
//dAngle in rad
var dz = point.z-center.z;
var dy = point.y-center.y;
var orgAngle = Math.atan2(dz, dy);
var hypo = Math.sqrt(dz*dz+dy*dy);
var newAngle = orgAngle+dAngle;
var yy = hypo*Math.cos(newAngle)+center.y;
var zz = hypo*Math.sin(newAngle)+center.z;
return {x:point.x, y:yy, z:zz};
}
|
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
третья координата (и четвертая и 16-я) считаются совершенно также как и первые две.
к примеру имеем: далее, чтобы подвинуть объект применяем к z ровно ту же логику что и к x: [iNils: Для оформления своего кода, надо использовать теги [code][/code]] после пересчета значений x,y,z проецируем трехмерное пространство на экран. Последний раз редактировалось iNils; 10.01.2007 в 23:50. |
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
это не код.
не дай бог приснится это назвать кодом. не пугай меня так плиз ![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|