Vx = cos(angl*M_PI/180) * speed;
Vy = sin(angl*M_PI/180) * speed;
Перемещение объекта из точки А в точку Б
Есть точка А (x, y) и есть точка Б(x, y).
Как переместить объект из точки А в точку Б?
Для этого вроде как используются формулы с косинусами?
Цитата: mudBit
Для этого используются операции "плюс" и "минус". Спасибо, Кэп.
Это когда точки лежат на одной прямой вертикальной, горизонтальной или диагональной и это можно сделать так...
А когда точки лежат на разных прямых, то это делается как-то с помощью формул с косинусами.
Цитата: trivium
...то это делается как-то с помощью формул с косинусами.
да, это делается как то с помощью формул )) - если необходимо выполнять преобразования - типа поворотов и пр. Вопрос о чем?
Цитата: kot_
[quote=trivium;56970]
...то это делается как-то с помощью формул с косинусами.
да, это делается как то с помощью формул )) - если необходимо выполнять преобразования - типа поворотов и пр. Вопрос о чем?
...то это делается как-то с помощью формул с косинусами.
да, это делается как то с помощью формул )) - если необходимо выполнять преобразования - типа поворотов и пр. Вопрос о чем?
Вопрос в том как эти формулы выглядят?
Они выглядят как формулы преобразования координат. Ваш КО.
Смотри аффинные преобразования. Осторожно! Много формул с синусами и косинусами.
Цитата: CorsaiR
trivium, если не можешь сформулировать вопрос, то лучше и не спрашивать.
Смотри аффинные преобразования. Осторожно! Много формул с синусами и косинусами.
Смотри аффинные преобразования. Осторожно! Много формул с синусами и косинусами.
Если не можешь понять вопрос, то не стоит и отвечать...
Код:
[x', y', 1] = [x, y, 1]T,
|1 0 0|
где Т = |0 1 0|
|xa ya 1|
|1 0 0|
где Т = |0 1 0|
|xa ya 1|
Как матрицу на вектор умножить рассказать?
Вообще задача в общем, что-то типа движения шарика в арканоиде.
Нормальных примеров в инете не нашёл, но те что были выглядели примерно так:
Код:
А по сабжу - формулы такие же, как ты указал, только еще надо умножать на время, то бишь так:
Код:
X = cos(angl*PI/180)*speed*t;
Цитата: mudBit
А, чувак, я понял, тебе надо двигаться не из точки А в Б, а по заданному направлению и с заданной скоростью. Вот только я чето не вижу в твоем вопросе этой немаловажной детали.
А по сабжу - формулы такие же, как ты указал, только еще надо умножать на время, то бишь так:
А по сабжу - формулы такие же, как ты указал, только еще надо умножать на время, то бишь так:
Код:
X = cos(angl*PI/180)*speed*t;
Ну эт я понял, что формулы примерно такие, но вот как вычислить angl не совсем понятно?
И кстати зачем на время умножать?
Код:
float xa=x0-x1;
float ya=y0-y1;
float количество_шагов=sqrt(xa*xa+ya*ya)/пикселей_за_шаг; // с^2=a^2+b^2
float шаг_по_x=xa/количество_шагов;
float шаг_по_y=ya/количество_шагов;
for(int i=0;i<количество_шагов;i+=1)
{
фигура.X+=шаг_по_x;//или фигура.X=x0+шаг_по_x*i;
фигура.Y+=шаг_по_y;//или фигура.Y=y0+шаг_по_y*i;
фигура.repaint();
}
float ya=y0-y1;
float количество_шагов=sqrt(xa*xa+ya*ya)/пикселей_за_шаг; // с^2=a^2+b^2
float шаг_по_x=xa/количество_шагов;
float шаг_по_y=ya/количество_шагов;
for(int i=0;i<количество_шагов;i+=1)
{
фигура.X+=шаг_по_x;//или фигура.X=x0+шаг_по_x*i;
фигура.Y+=шаг_по_y;//или фигура.Y=y0+шаг_по_y*i;
фигура.repaint();
}
Почитай статьи
Код:
X = Xa + (Xb - Xa)*t,
Y = Ya + (Yb - Ya)*t,
0 <= t <= 1
Y = Ya + (Yb - Ya)*t,
0 <= t <= 1
Код:
S = ((Xb - Xa)^2 + (Yb - Ya)^2)^0.5
А ведь скоро среднее образование в России станет платным. Что же с нами будет?..
Цитата: Der Meister
Код:
X = Xa + (Xb - Xa)*t,
Y = Ya + (Yb - Ya)*t,
0 <= t <= 1
Y = Ya + (Yb - Ya)*t,
0 <= t <= 1
Код:
S = ((Xb - Xa)^2 + (Yb - Ya)^2)^0.5
А ведь скоро среднее образование в России станет платным. Что же с нами будет?..
А кто виноват, что в школах ничему не учат?
И тем более когда много лет прошло, то откуда можно это всё даже, если знал помнить?
Среднее образование кстати давно уже платное от поборов в школах...