вращайте спираль, используя уравнения вращения (Rz и Rx)

Итак, я хочу повернуть спираль

{ Икс "=" потому что ( т ) , у "=" т , г "=" грех ( т ) ,
так что он обертывает землю вектором ( Икс , Д , Z ) Т . Сначала я получаю тета
θ "=" арктический ( Z Д )
Затем я использую уравнение вращения вокруг Икс -ось.
р Икс "=" [ 1 0 0 0 потому что ( θ ) грех ( θ ) 0 грех ( θ ) потому что ( θ ) ]
и умножить
р 1 "=" р Икс ( потому что ( т ) , т , грех ( т ) ) Т
Так что ротация здесь выглядит нормально. Затем я делаю еще одно вращение вокруг г -ось.
ф "=" 2 π арктический ( Z Д )
р г "=" [ 1 0 0 0 потому что ( ф ) грех ( ф ) 0 грех ( ф ) потому что ( ф ) ]
р г р 1
Окончательное вращение происходит по правильной оси, однако оно не закручивается вокруг вектора; это немного не так при построении графика в трехмерной системе координат. Я хотел знать, правильно ли я использую уравнения или неправильно понимаю угол поворота. Спасибо!

Также я использую вектор ( Икс , Д , Z ) Т "=" ( 12 , 13 , 15 ) Т .

Пример: первое вращение

θ "=" арктический ( 15 13 ) "=" 0,85671

р Икс "=" [ 1 0 0 0 0,65493 0,75569 0 0,75569 0,65493 ]

р Икс * час е л я Икс "=" [ с о с ( т ) 0,6549 т 0,7557 с я н ( т ) 0,7557 т + 0,6549 с я н ( т ) ]

второе вращение

ф "=" арктический ( 12 13 ) "=" 0,74542

р г "=" [ 0,73480 0,67828 0 0,67828 0,73480 0 0 0 1 ]

р г * ( р Икс * час е л я Икс ) "=" [ 0,4442 т 0,5126 с я н ( т ) + 0,7348 с о с ( т ) 0,4812 т 0,5553 с я н ( т ) 0,6783 с о с ( т ) 0,7557 т + 0,6549 с я н ( т ) ]

График: как вы можете видеть на изображении, спираль не закручивается вокруг вектора после выполнения обоих вращений. введите описание изображения здесь

Как описано, у вас есть степень свободы, оставшаяся при вращении, которая не указана: после выравнивания осей спиралей вы все еще можете применить произвольное вращение вокруг вектора. Икс , Д , Z . Кроме того, две матрицы, которые у вас есть в вашем вопросе, представляют собой повороты вокруг Икс -ось.
Пожалуйста, используйте MathJax для форматирования ваших математических выражений. Вы можете найти краткую справку здесь . В частности, используйте \langleи \rangleвместо < и > для разграничения векторов.
@amd Ха-ха, я неправильно написал.
После первого вращения р Икс ось спирали направлена ​​в сторону ( 0 , 13 , 15 ) . Итак, после поворота вокруг г -ось будет указывать в направлении ( 13 грех ф , 13 потому что ф , 15 ) для некоторых ф . Не хорошо. Я не проверял, но я думаю, что первое вращение должно указывать в направлении ( 0 , 12 2 + 13 2 , 15 ) вместо. Затем вращение вокруг г -ось на соответствующий угол ф должно сработать. В любом случае, как указал amd, в ответе есть некоторая двусмысленность (или степень свободы).
В качестве альтернативы вы можете использовать вращение вокруг оси ( 0 , 15 , 13 ) как второе вращение, но формула для этого немного сложнее.
@JyrkiLahtonen, если я узнаю правильный угол поворота по оси Z. Является ли степень свободы следствием использования этого метода оси вращения?
Степень свободы зависит от нашей способности вращать спираль вокруг своей оси.

Ответы (1)

Идея обертывания данной спирали вокруг данного вектора состоит в том, чтобы сопоставить ось данной спирали с данным вектором. После этого остается некоторая степень свободы для установления вращения спирали вокруг своей оси.

Чтобы отобразить ось спирали (пусть это будет в 0 "=" ( 0 , 1 , 0 ) Т ) заданному вектору (пусть это в 1 "=" ( Икс , Д , Z ) Т ) есть возможность использовать следующие два поворота: первый, р Икс , вокруг Икс -ось, которая отображает в 0 к правому полярному углу и второму, р г , вокруг г -ось, которая регулирует азимутальный угол (см., например , Сферическую систему координат Википедии для введения в полярные и азимутальные углы).

Вращение р Икс описывает вращение против часовой стрелки вокруг Икс -ось (если смотреть из точки ( 1 , 0 , 0 ) Т ):

р Икс "=" [ 1 0 0 0 потому что ( ф ) грех ( ф ) 0 грех ( ф ) потому что ( ф ) ] ,
где угол ф полярный угол , заданный выражением
ф "=" арксин ( Z Икс 2 + Д 2 + Z 2 ) .
Вращение р г описывает вращение против часовой стрелки вокруг г -ось (если смотреть из точки ( 0 , 0 , 1 ) Т ):
р г "=" [ потому что ( θ ) грех ( θ ) 0 грех ( θ ) потому что ( θ ) 0 0 0 1 ] ,
где угол θ - азимутальный угол, определяемый выражением
θ "=" арксин ( Икс Икс 2 + Д 2 ) .

На данный момент мы должны иметь, что р г ( р Икс ( в 0 ) ) "=" в 1 , т. е . ось исходной спирали должна была отображаться на в 1 , и, как следствие, новая спираль должна закручиваться вокруг заданной оси.

Спасибо! однако при использовании этого спираль не оборачивается вокруг вектора, между ними все еще есть некоторое расстояние. Это просто эффект при использовании этого уравнения? или есть другой способ сделать это.
Предполагая, что два вращения были выполнены правильно, спираль должна обернуться вокруг вектора ( Икс , Д , Z ) Т . На самом деле два поворота жестко трансформируют пространство р 3 путем сопоставления старой оси спирали ( 0 , 1 , 0 ) Т к новой оси спирали ( Икс , Д , Z ) Т . Как подсказал @amd в комментариях к вашему вопросу, все же есть степень свободы, определяющая вращение спирали вокруг оси ( Икс , Д , Z ) Т . Если бы вы могли опубликовать изображение полученного результата, мы могли бы попытаться более подробно объяснить «эффект», который вы видите...
Привет, я разместил изображение и результат, который я получил при подключении тета и фи.
Я не уверен в вашем выборе θ или ф . Смотрите мой комментарий под main. Суть в том, что второе вращение не меняет угол между осью спирали и г -ось. Первое вращение должно привести его к правильному значению.
@JyrkiLahtonen Думаю, ты прав. Я переписал свой ответ.
Я пробовал тета и фи, однако спираль не оборачивается вокруг вектора. Является ли степень свободы просто эффектом, возникающим при применении метода вращения?
@Cass.12 Я забыл термин Z 2 в азимутальном угле. Теперь это должно работать. Наличие степени свободы означает, что после того, как вы сопоставили в 0 на в 1 , спираль может свободно вращаться вокруг своей оси в 1 , продолжая оставаться решением вашей проблемы.
Спасибо! это сработало! это было просто вопрос получения правильных углов