Расчет расстояния с использованием тригонометрии в 3D - PullRequest
3 голосов
/ 18 ноября 2010

Я совсем не в себе - я не могу понять, что должно быть довольно тривиальной проблемой триггера.

Учитывая декартовы координаты (x, y, z), я хотел бы определить новую координату, учитывая направление (углы x, y и z) и расстояние для перемещения.

class Cartesian() {
  int x = 0;
  int y = 0;
  int z = 0;
  int move (int distance, int x_angle, int y_angle, int z_angle) {
    x += distance * //some trig here
    y += distance * //some trig here
    z += distance * //some trig here
  }
}

Т.е. я хочу переместиться на заданное расстояние от начала координат в заданном направлении, и мне нужны координаты новой позиции.

Это на самом деле для приложения JavaScript, но мне просто нужно немного psuedocode, чтобы выручить меня.

Спасибо

1 Ответ

2 голосов
/ 18 ноября 2010

То, как вы сформулировали проблему, кажется, что "направляющие косинусы" имеют наибольшее значение.

Предполагается, что x_angle - это угол в радианах между направлением цели и осью X и т. Д.:

dc_x = cos(x_angle);
dc_y = cos(y_angle);
dc_z = cos(z_angle);

delta_x = dc_x * distance;
delta_y = dc_y * distance;
delta_z = dc_z * distance;

x += delta_x;
y += delta_y;
z += delta_z;
...