Outdated egg!



Documentation for the SO(3,1) egg

  1. Outdated egg!
  2. Documentation for the SO(3,1) egg
    1. Introduction
    2. Examples
      1. Rapidity is additive
      2. More Examples...
    3. Authors
    4. License
    5. Requirements
    6. Documentation
    7. Version History


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

More Examples...

are coming.


Will M. Farr


SO31 is released under the GPL:

<blockquote> Copyright (C) 2007 Will M. Farr <farr@mit.edu>






The following procedures are brought into the local environment when (import SO31) is issued:

[procedure] (matrix? obj)

Evaluates to #f unless obj is a 4x4 matrix (actually, any 16-element f64vector will do).

[procedure] (params? obj)

Evaluates to #f unless obj is a 6-element f64vector.

[f64vector] Tvx
[f64vector] Tvy
[f64vector] Tvz
[f64vector] Tx
[f64vector] Ty
[f64vector] Tz

Values representing the corresponding generator matrices for SO(3,1).

[procedure] (Bx vx)
[procedure] (By vy)
[procedure] (Bz vz)
[procedure] (Rx x)
[procedure] (Ry y)
[procedure] (Rz z)

Produce Boost and Rotation matrices with the given parameters. Boosts are parameterized in terms of the rapidity along a given axis, while rotations are parameterized by an angle of rotation about a given axis.

[f64vector] eta

The Minkowski metric. eta = diag(-1,1,1,1).

[procedure] (params->matrix p)

Takes a 6-element f64vector, p, and returns the matrix representing the corresponding Lorentz transformation: if p is '#f64(vx vy vz x y z), then the result M is M = Bx(vx)*By(vy)*Bz(vz)*Rx(x)*Ry(y)*Rz(z).

[procedure] (matrix->params m)

The inverse of params->matrix.

[procedure] (matrix-compose m1 m2)

Returns the matrix product of m1 and m2---i.e. implements the group multiplication operation.

[procedure] (params-compose p1 p2)

Implements the group multiplication operation on the parameters p1 and p2.

[procedure] (matrix-inverse m)
[procedure] (params-inverse p)

Implement the group inverse operation.

Version History

Initial release.