forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Математика (http://forum.boolean.name/forumdisplay.php?f=85)
-   -   Координаты (http://forum.boolean.name/showthread.php?t=12416)

demon112 25.04.2010 17:00

Координаты
 
Вложений: 2
:SOS: Помогите разобрать.
1) дан прямоугольник с координатами (х1,у1)...(х4,у4), его повернули на определённый угол альфа относительно центра. Как найти новые координаты прямоугольника? :dontknow:
2) Дана ситема счисления, в ней находится точка с координатами х и у. Систему счисления повернули на угол А. Как найти координаты точки относительно "нормальной" системы коордитан? :dontknow:
:SOS:

johnk 25.04.2010 17:27

Ответ: Координаты
 
Сгоняй на чердак, найди там учебник по геометрии. Срочно прочти про косинусы и синусы.

demon112 26.04.2010 09:13

Ответ: Координаты
 
Хех, ну я знаю что это такое) Синус это отношение противолежащего катета к гипотенузе, а косинус прилежащего к гипотенузе) ну или что то в это роде) Дык и что дальше?

Randomize 26.04.2010 11:36

Ответ: Координаты
 
http://forum.boolean.name/showthread.php?t=8938
Особое внимание обрати на: http://forum.boolean.name/showpost.p...95&postcount=7

demon112 27.04.2010 07:51

Ответ: Координаты
 
чёт так я и не допетрил...

Alex.D. 27.04.2010 08:50

Ответ: Координаты
 
Вложений: 1
Цитата:

Сообщение от demon112 (Сообщение 145587)
чёт так я и не допетрил...

^___^
Смотри формулу поворота точки в аттаче

По сути тебе нужно взять центр прямоугольника (середина диагонали)
center_x = (x1 + x3) / 2
center_y = (y1 + y3) / 2
и по формуле повернуть все вершины
x'N = center_x + (xN - center_x) * cos(angle) - (yN - center_y) * sin(angle)
y'N = center_y + (xN - center_x) * sin(angle) + (yN - center_y) * cos(angle)
тут надо немного оптимизировать - синус и косинус общий на все точки, ну и диагонали (xN - center_x) и (yN - center_y) кешировать

Amatsu 27.04.2010 09:16

Ответ: Координаты
 
Чтобы не создавать новых тем. Я вот сейчас пытаюсь решить задачу нахождения координаты любого вертекса в модели с учетом ее вращения (EntityScale не использую). То есть надо учесть EntityPitch, EntityYaw и EntityRoll. Может кто знает решение задачи? Потому что я там уже формул нагородил... %)

Alex.D. 27.04.2010 09:59

Ответ: Координаты
 
Цитата:

Сообщение от Amatsu (Сообщение 145600)
Чтобы не создавать новых тем. Я вот сейчас пытаюсь решить задачу нахождения координаты любого вертекса в модели с учетом ее вращения (EntityScale не использую). То есть надо учесть EntityPitch, EntityYaw и EntityRoll. Может кто знает решение задачи? Потому что я там уже формул нагородил... %)

В Блице это просто - TFormPoint(), трансформированые координаты соответственно TFromed[X\Y\Z]()
алгоритмически это делается умножением координат вертекса (фактически вектор от начала координат) на матрицу трансформации ентити. Это можно сделать также получив элементы матрицы с помощью GetMatElement()

Amatsu 27.04.2010 10:08

Ответ: Координаты
 
Точно... а я про него и забыл... спасибо большое! а то я тут уже математики нагородил...:crazy:


Часовой пояс GMT +4, время: 22:36.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot