Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование игр, графики и искусственного интеллекта > Математика, физика, геометрия...


Автор: sidiakin 6.2.2012, 18:58
Интересуют формулы, котор. используются в создании игр.

1-ый вопрос по тригонометрии:
Косм. корабль вращается вокруг своей оси при нажатии клавиш "лево\право", при нажатии вперед приращения по X и Y вычисляются так:

Код

opposing side += hypotenuse * sin( angle );
adjacent side -= hypotenuse * cos( angle ); 


Т.е. код на Java получается таким:

Код

if(input.isKeyDown(Input.KEY_W))
        {
            float hip = 0.4f * delta;
 
            float rotation = plane.getRotation();
 
            x+= hip * Math.sin(Math.toRadians(rotation));
            y-= hip * Math.cos(Math.toRadians(rotation));
        }

Автор пишет, что "hip=0.4" - это выбор шага перемещения, а затем он этот шаг переводит в XY коорд.

Объясните пож. на пальцах, как это работает ?  smile Почему X+ и Y- ? Причем тут гипотенуза? Спасибо!

Автор: Mirkes 7.2.2012, 21:25
Цитата(sidiakin @ 6.2.2012,  18:58)
Интересуют формулы, котор. используются в создании игр.

1-ый вопрос по тригонометрии:
Косм. корабль вращается вокруг своей оси при нажатии клавиш "лево\право", при нажатии вперед приращения по X и Y вычисляются так:

Код

opposing side += hypotenuse * sin( angle );
adjacent side -= hypotenuse * cos( angle ); 


Т.е. код на Java получается таким:

Код

if(input.isKeyDown(Input.KEY_W))
        {
            float hip = 0.4f * delta;
 
            float rotation = plane.getRotation();
 
            x+= hip * Math.sin(Math.toRadians(rotation));
            y-= hip * Math.cos(Math.toRadians(rotation));
        }

Автор пишет, что "hip=0.4" - это выбор шага перемещения, а затем он этот шаг переводит в XY коорд.

Объясните пож. на пальцах, как это работает ?  smile Почему X+ и Y- ? Причем тут гипотенуза? Спасибо!

Формулы как минимум странные. Без рисунка вряд ли можно что-нибудь понять.
При вращении тела по орбите если угол равен rotation,
то координаты тела относительно центра вращения, помещенного в начало координат будут
Код

x=R*Math.cos(Math.toRadians(rotation));
y=R*Math.sin(Math.toRadians(rotation));

запись x+=xx означает x=x+xx.
почему в данном случае формулы вычисления проекций поменялись местами и почему приращения по x и y имеют разный знак без рисунка не понять.

Автор: Andryulik 10.3.2015, 17:14
Да, хлопотно все это!  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)