3D точка от существующей точки, направления и расстояния - PullRequest
2 голосов
/ 01 февраля 2020

Если у меня есть произвольная точка в трехмерном пространстве «начало координат» (Ox, Oy, Oz) и поворот в градусах (или радианах) (Rx, Ry) и расстоянии (D), как я могу вычислить новый 3D координата для "цели" (Tx, Ty, Tz)?

Ищу C# код или математическую запись с тупыми значениями.

enter image description here

1 Ответ

0 голосов
/ 02 февраля 2020

Чтобы ответить на вопрос, необходимо сделать некоторые предположения. Если эти предположения не соответствуют вашему случаю, вам может потребоваться переименовать X, Y, Z ниже и, возможно, изменить порядок операций.

Предположим, следующая ситуация:

  • X указывает на восток
  • Y указывает на север
  • Z указывает вверх
  • Когда нет вращения, цель будет находиться на положительной оси X
  • A небольшое положительное вращение Rx будет вращать цель в направлении оси Y
  • Небольшое положительное вращение Ry будет вращать цель вверх
  • Предположим, что Rx и Ry выражены в радианах (потому что sin и cos нуждаются в радианах в качестве входных данных); при необходимости разделите градусы на 180 и умножьте на pi

. В этом случае:

  • Создайте начальную точку (Px, Py, Pz) = (D, 0, 0)
  • Поверните P вокруг оси Y на угол Ry, чтобы получить точку Q = (Qx, Qy, Qz):
    • Qx = cos (Ry) * Px - sin (Ry ) * Pz
    • Qy = Py
    • Qz = sin (Ry) * Px + cos (Ry) * Pz
  • Повернуть Q вокруг Z -оси на угол Rx, чтобы получить точку S = (Sx, Sy, Sz):
    • Sx = cos (Rx) * Qx - sin (Rx) * Qy
    • Sy = sin ( Rx) * Qx + cos (Rx) * Qy
    • Sz = Qz
  • Добавьте источник в S, чтобы получить T:
    • Tx = Sx + Ох
    • Ты = Си + Оу
    • Тз = Сз + Оз
...