| TarasBer |
8.11.2009 15:43
Сообщение
#1
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
Собсна задача такая. Есть трёхмерный вектор v. Найти векторы v1 и v2, которые перпендикулярны v и друг другу, и имеют ту же длину, что и v. На плоскости аналогичная задача элементарна - вектору (x, y) сопоставляется (-y, x), сопоставление корректно и для нулевой длины. В трёхмерном пространстве такой красивой формулы нету - в топологии есть известная "теорема о причёсывании ежа", говорящая о том, что на поверхности чётномерной сферы не существует ненулевого непрерывного векторного поля. По сути v/abs(v) - точка на двухмерной сфере, v1 и v2 - касательные векторы в точке v. Нам как раз нужно ненулевое векторное поле. Непрерывной зависимости тут не построить, ну и ладно. Вопрос в том, чтобы найти v1 и v2 наиболее оптимальным способом. Вот моё решение "в лоб", мне оно не нравится:
-------------------- |
![]() ![]() |
| Lapp |
15.11.2009 14:27
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Вот моё решение "в лоб", мне оно не нравится А чем конкретно оно тебе не нравится?Я, думаю, делал бы так.. Ищем такое преобразование координат (включающее перенос, поворот и масштаб - то есть, не меняющее углы и соотношения длин) которое, скажем, орт Х перводит в наш вектор V. Далее берем орты Y и Z и выпоняем над ними это самое преобразование. Вроде, все.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
| TarasBer |
16.11.2009 0:24
Сообщение
#3
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
А чем конкретно оно тебе не нравится? Слишком прямолинейно и уродливо. Учитывая, что мне важна скорость. К счастью, в большинстве случаев V = (*, 0, 0), этот случай прост, он разбирается в первую очередь. Цитата Я, думаю, делал бы так.. Ищем такое преобразование координат (включающее перенос, поворот и масштаб - то есть, не меняющее углы и соотношения длин) которое, скажем, орт Х перводит в наш вектор V. Далее берем орты Y и Z и выпоняем над ними это самое преобразование. Вроде, все.. Ищем такую ортогональную матрицу M, такую, что MX=V. То есть первой строчкой этой матрицы будет V. А второй и третьей - V1 и V2. Таким образом задача свелась к самой себе. Думал я об этом, думал... -------------------- |
TarasBer Дан вектор в R3. Найти 2 перпендикулярных ему, тоже длины. 8.11.2009 15:43
AruNimotsi Не думал как оно будет сложно в программном коде ... 20.11.2009 12:15
TarasBer
Не думал как оно будет сложно в программном коде ... 21.11.2009 22:59![]() ![]() |
|
Текстовая версия | 3.11.2025 17:29 |