ФлеймФорумПрограммирование

Формула для вращения объекта по направлению к точке

Страницы: 1 2 3 4 5 Следующая »
#0
14:25, 23 мая 2012

Прошу помочь вот с такой задачей. Вот я набросал набросок.
Изображение
Объект А крутится по кругу, вокруг точки В. Надо вращать объект А так чтобы точка Б всегда смотрела в сторону точки В (что показано линией). Точка Б  это условность, на самом деле это вверх объекта А

И пожалуйста, не надо предлагать что-нибудь с матрицами, векторами, нормализацией и остальными вещами 3D :) Игра - 2D
Все что у меня есть для изменения - двухмерные координаты (x,y) центра объекта А. координаты Б, а также функция вращения объекта А на определенный угол (не радиан а от 0 до 360 градусов)

И да - я плохо знаю математику:)

#1
14:29, 23 мая 2012

Угол поворота А должен быть равен угловому положению относительно В

#2
14:30, 23 мая 2012

kipar
> Угол поворота А должен быть равен угловому положению относительно В
kipar
а формулой можно? А то мозг загружен, ничерта не понимает

#3
14:32, 23 мая 2012

war_zes
> а формулой можно? А то мозг загружен, ничерта не понимает
Если мы поворачиваем А вокруг В на X градусов, то надо повернуть его еще и на X градусов вокруг своей оси.
Для формулы напиши какие исходные данные есть.

#4
14:37, 23 мая 2012

Выучи уже арктангенс, а то жованный стыд.

#5
14:45, 23 мая 2012

ой, в жизни надо столько выучить/изучить (английский, несколько новых языков программирования, рисование) что на линейную алгебру просто нет времени:)

Позже отпишусь что получилось, прямо сейчас я делаю другое, а это больше финтифлюшка

#6
14:51, 23 мая 2012

war_zes
Выучи же наконец тригонометрию и векторную алгебру и перестань создавать одинаковые темы!

#7
15:16, 23 мая 2012

нет, ничего не получается:(

#8
15:22, 23 мая 2012

war_zes, пора бы уже прокачаться хотя бы до школьного курса математики. Это ж вообще безобразие (((

#9
15:24, 23 мая 2012

RX=TX-MY.x;
RY=TY-MY.y;
MY.rotation=atan2(RY,RX);

#10
15:29, 23 мая 2012

war_zes

Божич мой...
Ватсон, это же элементарно.
На каждом очередном шаге ровно настолько градусов насколько ты повернул объекта А вокруг точки В ровно на столько же градусов поворачиваешь объект А вокруг своей оси но только в противоположную сторону.

#11
15:31, 23 мая 2012

ИПавлов
Зря ты ему атан советуешь, потому что он же опять от этого атана возьмёт синус и косинус. А сразу взять l:=sqr(dx)+sqr(dy); inv_l := 1/sqrt(l); my_cos := dx*inv_l; my_sin := dy*inv_l; он догадаться не может, потому что тригонометрию не осилил.

#12
15:40, 23 мая 2012

перевод из радиан в углы Угол = Радианы*180/Math.PI;
MY.rotation=atan2(RY,RX)*180/Math.PI;

#13
15:45, 23 мая 2012

Нормальный (знающий т.е.) человек, наверное, не стал бы париться ни с арктангенсом, ни с син/кос... Это ж тупо матрица, причём, уже готовая к применению фактически )))

#14
15:45, 23 мая 2012

если поворачивать надо мгновенно то:

D3DXVECTOR2 A(x1, y1), B(x2, y2), D = ObjectA.Direct;
D3DXVECTOR2 C = B - A;
float W = D3DXVec2CCW(A, B), An = AngleDС; //забыл как угол вычислять
if(W < 0) ObjectA.Rotate(An); else ObjectA.Rotate(-An); //или наоборот

если надо поворачивать с определённой скоростью:

D3DXVECTOR2 A(x1, y1), B(x2, y2);
D3DXVECTOR2 C = B - A;
float W = D3DXVec2CCW(A, B), Speed = 1.0f;
if(W < 0) ObjectA.Rotate(Speed); else ObjectA.Rotate(-Speed); //или наоборот

P.S. писал в браузере поэтому могут быть ошибки в коде.

Страницы: 1 2 3 4 5 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.