NAME:     matrix.py

REVISION: v1.11

DESCRIPTION:
The module defines a matrix class (Matrix) with some common methods and
a (3,1)-vector class (Vector) with special vector methods.
A matrix instance of dimension (m,n) consists of an integer value m (rows),
an integer value n (columns) and a list of data elements.

AUTHOR: Mario Chemnitz <[email protected]>

FUNCTIONALITY:
Terms used in this document:
 S-scalar value, X-arbitrary data object, L-list, M-matrix instance,
 V-vector instance

The functions defined in this module are:
  isMatrix(X) --> 1 ('true' if X is a matrix instance)
  isVector(X) --> 1 ('true' if X is a vector instance)
  Matrix([Sm,[Sn,[L]]]) --> (defines a matrix instance of dimension (Sm,Sn)
    and the content L)
  Vector(Sx,Sy,Sz) --> (defines a three-dimensional vector with the
    components Sx, Sy and Sz)
  Rx(S) --> M ((3,3)-matrix for rotation on the x-axis; angle S (rad))
  Ry(S) --> M ((3,3)-matrix for rotation on the y-axis; angle S (rad))
  Rz(S) --> M ((3,3)-matrix for rotation on the z-axis; angle S (rad))
  E --> M ((3,3)-identity matrix)
  ex --> V (base vector in x direction)
  ey --> V (base vector in y direction)
  ez --> V (base vector in z direction)

The matrix class methods are:
  M.set(L) -->(fills M with the data from L)
  M1+M2 --> M (addition)
  M1-M2 --> M (subtraction)
  -M1 --> M (negation)
  len(M) --> S (number of elements)
  M[i:j] --> X (element from row i and column j; index starts with 0)
  M1*M2 --> M (matrix product)
  M*V1 --> V (matrix product returning a vector (3,3)*(3,1)=(3,1))
  M1*S --> M (multiplication by a scalar value)
  M.det() --> S (determinant of a (3,3)-matrix)

The vector class methods are:
  V1+V2 --> V (addition)
  V1-V2 --> V (subtraction)
  -V1 --> V (negation)
  V[i] --> X (element number i; index starts with 0)
  V1*V2 --> S (scalar product)
  V1*S --> V (multiplication by a scalar)
  V1.cross(V2) --> V (cross product)
  V.length() --> S (vector length)
  V.betrag() --> S ( -"- )
  V1.normal() --> V (vector of length 1 in  direction of V1)
  V1.angle(V2) --> S (angle (rad) between V1 and V2)
  V1.winkel(V2) --> S ( -"- )