Тригонометрия ^_^
|
|
Hexing | Дата: Среда, 16 Ноября 2011, 09:50:00 | Сообщение # 1 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Помогите вычислить значения вектора по осям X и Y если направление вектора можно получить засчёт неограниченных единицой значениями x и y как скоростей(это не важно) ну или как это обьяснить я даже не знаю... короче я нарисовал: Как видно на рисунке, машина идет по инерции, а траектория движения после столкновения зависит не только от поворота машины, но и от траектории движения машины перед столкновением(тоесть вектора движения), хотя я вообще не уверен что конечная траектория зависит от поворота машины... вообщем я игрался с синусами и косинусами и максимум что у меня работало хоть немного это: Code speedX = speedX*Cos(r); speedY = speedY*Sin(r); где r - угол поворота машины в радианах Однако такой подход работает плохо изза неучитывании траектории столкновения(можно в послдний момент повернуться и всё не по правилам) У меня есть текущее положение машины - x , y Еще есть значения предыдущих координат - prevX , prevY А для определения столкновения используется квадратный корень из( (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2) ) где x1 - x, y1 - y, x2 - mustX, y2 - mustY в свою очередь mustX = x+speedX, mustY = y+speedY таким образом надо вычислить угол между (x,y) и (prevX,prevY) как это сделать??? а потом уже для этого угла применять Cos() для вычесления множителя по оси x и Sin() по оси y соответственно... + тому кто поможет
|
|
|
|
Ty3uK | Дата: Среда, 16 Ноября 2011, 09:54:59 | Сообщение # 2 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Мб чекать угол через атан2 и уже из него менять положение? Больше пока в голову ничего не лезет
|
|
|
|
Hexing | Дата: Среда, 16 Ноября 2011, 10:00:23 | Сообщение # 3 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| ага) пока писал пост сам же и додумался... замутил через атан2 угол между предыдущими коордами и текущими и всё робит
|
|
|
|
Ty3uK | Дата: Среда, 16 Ноября 2011, 10:14:58 | Сообщение # 4 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Вот вот молодец, Холмс Добавлено (16 Ноябрь 2011, 10:14:58) --------------------------------------------- А где же обещанное материальное "спасибо"? Шутка юмора
|
|
|
|
Hexing | Дата: Среда, 16 Ноября 2011, 12:38:07 | Сообщение # 5 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| аааа оно не работает... atan2 - всегда положительный млеа!!! ему нет разницы от первой точки ко второй или наоборот... а мне надо чтобы было отриц. значение когда точки наоборот!!! помогите плиз
|
|
|
|
Ty3uK | Дата: Среда, 16 Ноября 2011, 12:48:02 | Сообщение # 6 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Hexing, отнюдь, разница есть. в радианах Code local real angle = Atan2(GetSpellTargetX() - GetWidgetX(u), GetSpellTargetY() - GetWidgetY(u)) в градусах Code local real angle = 57.295 * Atan2(GetSpellTargetX() - GetWidgetX(u), GetSpellTargetY() - GetWidgetY(u)) есть ли разница между 50 - (-25) = 75 и -25 - 50 = -75? Офк есть
Сообщение отредактировал Ty3uK - Среда, 16 Ноября 2011, 12:48:51 |
|
|
|
Hexing | Дата: Среда, 16 Ноября 2011, 12:54:54 | Сообщение # 7 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| нет atan2 возводит в квадрат и все сходин на положительное число в результатеДобавлено (16 Ноябрь 2011, 12:54:54) --------------------------------------------- или не возводит... но результат всегда положительный, как этого ибежать, есть ли альтернатива атану2?
|
|
|
|
Ty3uK | Дата: Среда, 16 Ноября 2011, 12:55:49 | Сообщение # 8 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| ну так, чисто для интереса а вот и разверточка, если читать не хочется)
Сообщение отредактировал Ty3uK - Среда, 16 Ноября 2011, 12:57:59 |
|
|
|
Hexing | Дата: Среда, 16 Ноября 2011, 12:56:51 | Сообщение # 9 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| правда вру, протестил Atan(-10, 10) и (10, 10) все верно робит.. значит дело в коде, спс
|
|
|
|
Ty3uK | Дата: Среда, 16 Ноября 2011, 12:58:19 | Сообщение # 10 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Hexing, нз, кинь код, мб чего обмозгуем
|
|
|
|
SirNikolas | Дата: Среда, 16 Ноября 2011, 13:15:39 | Сообщение # 11 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Вот обычный рикошет, без поворотов во время движения.
|
|
|
|
Hexing | Дата: Среда, 16 Ноября 2011, 13:55:21 | Сообщение # 12 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| спс, щас вскрою :P Добавлено (16 Ноябрь 2011, 13:55:21) --------------------------------------------- ничего не работает ;( я уже день парюсь ;( а ничего не работает ;(((( как всё грустно:((((((((((((((((((((((((((((( SirNikolas, дай скайп я тебе мапу скину а ты все за меня сделаешь ок да? D:
|
|
|
|
FkoFF | Дата: Четверг, 17 Ноября 2011, 03:26:08 | Сообщение # 13 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| Тригоноправила ^_^
|
|
|
|