LINUX.ORG.RU

История изменений

Исправление dikiy, (текущая версия) :

Ну вообще мне это и нужно было сначала, ток как это сделать я не понимаю(

Ок, пусть r — это орт, где находится твой объект, r' — орт, где он будет находится после поворота, O — центр поворота (Земля), для упрощения положим O центром координат. Нормируем векторы r и r'. Тогда x'=r — это новая ось X, z'=r×r' — новая ось Z, y'=z'×r — новая ось Y.

Матрица новых координат будет M₁=(x'|y'|z'). Ввиду ее ортогональности обратная матрица будет равна m₁=(x'|y'|z')^T.

Угол поворота θ (в новых координатах) получить просто исходя из векторов r и r':
c=cosθ=<r,r'>, s=sinθ=√(1-c²). Матрицу поворота M₂ в новых координатах ты построить надеюсь сможешь.

Вычисляем координаты объекта в новой системе координат: w=m₁r. Поворачиваем его: M₂w, переходим в старые координаты: M₁M₂w.

Hint: вектор w будет иметь вид (число,0,0). Вопрос: почему?

Hint2: Это в итоге упрощает вычисления.

Исходная версия dikiy, :

Ну вообще мне это и нужно было сначала, ток как это сделать я не понимаю(

Ок, пусть r — это орт, где находится твой объект, r' — орт, где он будет находится после поворота, O — центр поворота (Земля), для упрощения положим O центром координат. Нормируем векторы r и r'. Тогда x'=r — это новая ось X, z'=r×r' — новая ось Z, y'=z'×r — новая ось Y.

Матрица новых координат будет M₁=(x'|y'|z'). Ввиду ее ортогональности обратная матрица будет равна m₁=p(x'|y'|z')^T.

Угол поворота θ (в новых координатах) получить просто исходя из векторов r и r':
c=cosθ=<r,r'>, s=sinθ=√(1-c²). Матрицу поворота M₂ в новых координатах ты построить надеюсь сможешь.

Вычисляем координаты объекта в новой системе координат: w=m₁r. Поворачиваем его: M₂w, переходим в старые координаты: M₁M₂w.

Hint: вектор w будет иметь вид (число,0,0). Вопрос: почему?

Hint2: Это в итоге упрощает вычисления.