Rodrigues’ rotation formula: Difference between revisions

Content added Content deleted
m (→‎{{header|Raku}}: twiddles)
m (→‎{{header|Raku}}: minor stylistic tweaks)
Line 607: Line 607:


sub rodrigues-rotate( @point, @axis, $θ ) {
sub rodrigues-rotate( @point, @axis, $θ ) {
my (\cos𝜃, \sin𝜃) = cis($θ).reals;
my ( \cos𝜃, \sin𝜃 ) = cis($θ).reals;
my ( \𝑥, \𝑦, \𝑧 ) = @axis;
my \𝑡 = 1 - cos𝜃;
my \𝑡 = 1 - cos𝜃;

my (\𝑥, \𝑦, \𝑧) = |@axis;
map { @point • $_ }, [
map @point • *, [
[ cos𝜃 + 𝑥²⁢𝑡, 𝑥⁢𝑦⁢𝑡 - 𝑧⁢sin𝜃, 𝑥⁢𝑧⁢𝑡 + 𝑦⁢sin𝜃 ],
[ cos𝜃 + 𝑥²⁢𝑡, 𝑥⁢𝑦⁢𝑡 - 𝑧⁢sin𝜃, 𝑥⁢𝑧⁢𝑡 + 𝑦⁢sin𝜃 ],
[ 𝑥⁢𝑦⁢𝑡 + 𝑧⁢sin𝜃, cos𝜃 + 𝑦²⁢𝑡, 𝑦⁢𝑧⁢𝑡 - 𝑥⁢sin𝜃 ],
[ 𝑥⁢𝑦⁢𝑡 + 𝑧⁢sin𝜃, cos𝜃 + 𝑦²⁢𝑡, 𝑦⁢𝑧⁢𝑡 - 𝑥⁢sin𝜃 ],