Rodrigues’ rotation formula: Difference between revisions
Content added Content deleted
m (tasks should start as drafts) |
(Add Factor) |
||
Line 53: | Line 53: | ||
<pre> |
<pre> |
||
( 2.232221, 1.395138, -8.370829 ) |
( 2.232221, 1.395138, -8.370829 ) |
||
</pre> |
|||
=={{header|Factor}}== |
|||
Note the following words already exist in Factor, which I have elected not to redefine: |
|||
{| class="wikitable" |
|||
|- |
|||
! Word |
|||
! Vocabulary |
|||
! Equivalent function in JavaScript entry |
|||
|- |
|||
| <tt>normalize</tt> |
|||
| <tt>math.vectors</tt> |
|||
| <tt>normalize()</tt> |
|||
|- |
|||
| <tt>cross</tt> |
|||
| <tt>math.vectors</tt> |
|||
| <tt>crossProduct()</tt> |
|||
|- |
|||
| <tt>angle-between</tt> |
|||
| <tt>math.vectors</tt> |
|||
| <tt>getAngle()</tt> |
|||
|- |
|||
| <tt>mdotv</tt> |
|||
| <tt>math.matrices</tt> |
|||
| <tt>matrixMultiply()</tt> |
|||
|} |
|||
{{trans|JavaScript}} |
|||
{{works with|Factor|0.99 2021-06-02}} |
|||
<lang factor>USING: grouping kernel math math.functions math.matrices |
|||
math.vectors prettyprint sequences sequences.generalizations ; |
|||
:: a-rotate ( p v a -- seq ) |
|||
a cos a sin :> ( ca sa ) |
|||
ca 1 - v first3 :> ( t x y z ) |
|||
x x t * * ca + x y t * * z sa * - x z t * * y sa * + |
|||
x y t * * z sa * + ca y y t * * + y z t * * x sa * - |
|||
z x t * * y sa * - z y t * * x sa * + ca z z t * * + |
|||
9 narray 3 group :> r |
|||
r p mdotv ; |
|||
{ 5 -6 4 } { 8 5 -30 } |
|||
dupd [ angle-between ] [ cross ] 2bi normalize swap a-rotate .</lang> |
|||
{{out}} |
|||
<pre> |
|||
{ 2.232221073308229 1.395138170817642 -8.370829024905852 } |
|||
</pre> |
</pre> |
||