You are looking at historical revision 4026 of this page. It may differ significantly from its current revision.

Documentation for the SO(3,1) egg


The SO31 egg provides functions to manipulate elements of the Lorentz group in four dimensions, commonly denoted SO(3,1). The group elements can be represented by either the standard 4x4 matrices or by six parameters.

Note that the egg provides a syntax-case module named SO31, which must be imported into the current namespace before any of the listed functions become available.

The parameterization used by the egg is:

vx, vy, vz, x, y, z :-> M = Bx(vx)*By(vy)*Bz(vz)*Rx(x)*Ry(y)*Rz(z),

where the Ri are the usual rotation matrices in terms of the angles x,y,z, and the Bi are the usual boost matrices, expressed in terms of the rapidity vi.


Rapidity is additive

The following example composes two boosts in the x-direction with rapidity 1.0

(use syntax-case)
(use SO31)
(import SO31)

(let ((p (f64vector 1 0 0 0 0 0))) ; Boost in x direction w/rapidity 1
  (params-compose p p))   
; => close to '#f64(2 0 0 0 0 0) because the rapidity adds