QUATERNION(2) QUATERNION(2)[top]NAMEqtom, mtoq, qadd, qsub, qneg, qmul, qdiv, qunit, qinv, qlen, slerp, qmid, qsqrt - Quaternion arithmeticSYNOPSIS#include <draw.h> #include <geometry.h> Quaternion qadd(Quaternion q, Quaternion r) Quaternion qsub(Quaternion q, Quaternion r) Quaternion qneg(Quaternion q) Quaternion qmul(Quaternion q, Quaternion r) Quaternion qdiv(Quaternion q, Quaternion r) Quaternion qinv(Quaternion q) double qlen(Quaternion p) Quaternion qunit(Quaternion q) void qtom(Matrix m, Quaternion q) Quaternion mtoq(Matrix mat) Quaternion slerp(Quaternion q, Quaternion r, double a) Quaternion qmid(Quaternion q, Quaternion r) Quaternion qsqrt(Quaternion q)DESCRIPTIONThe Quaternions are a non-commutative extension field of the Real num‐ bers, designed to do for rotations in 3-space what the complex numbers do for rotations in 2-space. Quaternions have a real component r and an imaginary vector component v=(i,j,k). Quaternions add componentwise and multiply according to the rule (r,v)(s,w)=(rs-v.w, rw+vs+v×w), where . and × are the ordinary vector dot and cross products. The mul‐ tiplicative inverse of a non-zeroquaternion(r,v) is (r,-v)/(r2-v.v). The following routines do arithmetic on quaternions, represented as typedef struct Quaternion Quaternion; struct Quaternion{ double r, i, j, k; }; Name Description qadd Add two quaternions. qsub Subtract two quaternions. qneg Negate a quaternion. qmul Multiply two quaternions. qdiv Divide two quaternions. qinv Return the multiplicative inverse of a quaternion. qlen Return sqrt(q.r*q.r+q.i*q.i+q.j*q.j+q.k*q.k), the length of a quaternion. qunit Return a unitquaternion(length=1) with components proportional to q's. A rotation by angle θ about axis A (where A is a unit vector) can be represented by the unitquaternionq=(cos θ/2, Asin θ/2). The same rotation is represented by −q; a rotation by −θ about −A is the same as a rotation by θ about A. Thequaternionq transforms points by (0,x',y',z') = q-1(0,x,y,z)q. Quaternion multiplication composes rota‐ tions. The orientation of an object in 3-space can be represented by aquaterniongiving its rotation relative to some `standard' orientation. The following routines operate on rotations or orientations represented as unit quaternions: mtoq Convert a rotation matrix (see matrix(2)) to a unit quaternion. qtom Convert a unitquaternionto a rotation matrix. slerp Spherical lerp. Interpolate between two orientations. The rotation that carries q to r is q-1r, so slerp(q, r, t) is q(q-1r)t. qmid slerp(q, r, .5) qsqrt The square root of q. This is just a rotation about the same axis by half the angle.SOURCE/sys/src/libgeometry/quaternion.cSEE ALSOmatrix(2), qball(2) QUATERNION(2)

More information is available in_ _ _ | | | | | | | | | | | | __ | | __ __ | | __ __ | | __ \ \| |/ / \ \| |/ / \ \| |/ / \ \ / / \ \ / / \ \ / / \ / \ / \ / \_/ \_/ \_/

List of man pages available for

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]

Polar

Member of Polar

Based on Fawad Halim's script.

....................................................................

Vote for polarhome |