Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11655
Последний выпуск: 19.06.2015

Перемещение объекта из точки А в точку Б

1.8K
17 июня 2012 года
trivium
128 / / 31.01.2010
Доброго времени суток.
Есть точка А (x, y) и есть точка Б(x, y).
Как переместить объект из точки А в точку Б?
Для этого вроде как используются формулы с косинусами?
26K
17 июня 2012 года
mudBit
224 / / 30.05.2011
Для этого используются операции "плюс" и "минус". Спасибо, Кэп.
1.8K
17 июня 2012 года
trivium
128 / / 31.01.2010
Цитата: mudBit
Для этого используются операции "плюс" и "минус". Спасибо, Кэп.


Это когда точки лежат на одной прямой вертикальной, горизонтальной или диагональной и это можно сделать так...
А когда точки лежат на разных прямых, то это делается как-то с помощью формул с косинусами.

1
17 июня 2012 года
kot_
7.3K / / 20.01.2000
Цитата: trivium

...то это делается как-то с помощью формул с косинусами.


да, это делается как то с помощью формул )) - если необходимо выполнять преобразования - типа поворотов и пр. Вопрос о чем?

1.8K
17 июня 2012 года
trivium
128 / / 31.01.2010
Цитата: kot_
[quote=trivium;56970]
...то это делается как-то с помощью формул с косинусами.
да, это делается как то с помощью формул )) - если необходимо выполнять преобразования - типа поворотов и пр. Вопрос о чем?


Вопрос в том как эти формулы выглядят?

1
17 июня 2012 года
kot_
7.3K / / 20.01.2000
Они выглядят как формулы преобразования координат. Ваш КО.
72K
17 июня 2012 года
CorsaiR
59 / / 07.03.2012
trivium, если не можешь сформулировать вопрос, то лучше и не спрашивать.
Смотри аффинные преобразования. Осторожно! Много формул с синусами и косинусами.
1.8K
17 июня 2012 года
trivium
128 / / 31.01.2010
Цитата: CorsaiR
trivium, если не можешь сформулировать вопрос, то лучше и не спрашивать.
Смотри аффинные преобразования. Осторожно! Много формул с синусами и косинусами.


Если не можешь понять вопрос, то не стоит и отвечать...

72K
17 июня 2012 года
CorsaiR
59 / / 07.03.2012
Что ж, будем разжевывать. Есть A(x1, y1) и B(x2, y2). Отображением начала координат будет вектор a с координатами xa= x2-x1 и ya = y2-y1. Перенос из точки A в точку B является афинным преобразованием сдвига и задается в матричном виде следующим образом:


 
Код:
[x', y', 1] = [x, y, 1]T,
        |1   0   0|
где Т = |0   1   0|
        |xa ya   1|
То есть, чтобы перенести объект из точки A в точку B, нужно координаты каждой его точки умножить на матрицу переноса Т.
Как матрицу на вектор умножить рассказать?
1.8K
17 июня 2012 года
trivium
128 / / 31.01.2010
А зачем матрицу на вектор умножать?
Вообще задача в общем, что-то типа движения шарика в арканоиде.
Нормальных примеров в инете не нашёл, но те что были выглядели примерно так:
 
Код:
Vx = cos(angl*M_PI/180) * speed;
Vy = sin(angl*M_PI/180) * speed;
Матриц вроде тут нет...
26K
18 июня 2012 года
mudBit
224 / / 30.05.2011
А, чувак, я понял, тебе надо двигаться не из точки А в Б, а по заданному направлению и с заданной скоростью. Вот только я чето не вижу в твоем вопросе этой немаловажной детали.
А по сабжу - формулы такие же, как ты указал, только еще надо умножать на время, то бишь так:

 
Код:
X = cos(angl*PI/180)*speed*t;
1.8K
18 июня 2012 года
trivium
128 / / 31.01.2010
Цитата: mudBit
А, чувак, я понял, тебе надо двигаться не из точки А в Б, а по заданному направлению и с заданной скоростью. Вот только я чето не вижу в твоем вопросе этой немаловажной детали.
А по сабжу - формулы такие же, как ты указал, только еще надо умножать на время, то бишь так:

 
Код:
X = cos(angl*PI/180)*speed*t;


Ну эт я понял, что формулы примерно такие, но вот как вычислить angl не совсем понятно?
И кстати зачем на время умножать?

238
18 июня 2012 года
arrjj
1.7K / / 26.01.2011
Проще всего и без синусов.
Код:
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();
}
Это один из тысяч способов.
Почитай статьи
301
18 июня 2012 года
Der Meister
874 / / 21.12.2007
 
Код:
X = Xa + (Xb - Xa)*t,
Y = Ya + (Yb - Ya)*t,
0 <= t <= 1
При этом пройденный путь
 
Код:
S = ((Xb - Xa)^2 + (Yb - Ya)^2)^0.5
сугубо по Пифу.
А ведь скоро среднее образование в России станет платным. Что же с нами будет?..
1.8K
18 июня 2012 года
trivium
128 / / 31.01.2010
Цитата: Der Meister
 
Код:
X = Xa + (Xb - Xa)*t,
Y = Ya + (Yb - Ya)*t,
0 <= t <= 1
При этом пройденный путь
 
Код:
S = ((Xb - Xa)^2 + (Yb - Ya)^2)^0.5
сугубо по Пифу.
А ведь скоро среднее образование в России станет платным. Что же с нами будет?..


А кто виноват, что в школах ничему не учат?
И тем более когда много лет прошло, то откуда можно это всё даже, если знал помнить?
Среднее образование кстати давно уже платное от поборов в школах...

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог