2010-01-27 Rudy Neeser <email address hidden>

* matrix.lisp (matrix=): Added a function to compare matrix

objects.

(dimension): Added an implementation for MATRIX objects.

* generics.lisp (copy): Added an implementation that copies lists.

(equivalent): Added a generic function to test for equivalence

between two objects.

* vector.lisp (dimension): Renamed LENGTH to DIMENSION.

(length): Created a new LENGTH function that is an alias to

DIMENSION.

(negate!): Added this for lists.

2010-01-26 Rudy Neeser <email address hidden>

* COPYING: Added a copy of the GPLv3.

* LICENSE: Added the beginnings of a file discussing licensing.

* README: Added the beginnings of a README file.

* vector-operations.lisp (dot-product): Dot product can now

operate on lists.

(euclidean-distance): Updated to work with lists.

2010-01-22 Rudy Neeser <email address hidden>

* vector.lisp (normalise): Provided a version that operates on

lists.

(normalise!): Provided a version that operates on lists.

2009-12-18 Rudy Neeser <email address hidden>

* package.lisp (#:l-math): Exported *equivalence-tolerance*.

* tests.lisp (test-nonzero): Updated to

use *equivalence-tolerance*.

* vector.lisp (vector=): Updated to use *equivalence-tolerance*.

* generics.lisp (*equivalence-tolerance*): Added a variable that

defines how similar objects should be before they are considered

equal.

2009-12-16 Rudy Neeser <email address hidden>

* vector.lisp (vector=): Modifed to allow lists.

* matrix.lisp (matrix): Changed precision to double-float.

* vector.lisp (vector): Changed precision to double-float.

* vector-operations.lisp (angle-between): Increased precision in

this function to use double-floats. Now the angle between 90

degree vectors is reported as exactly 90 degrees.

2009-12-15 Rudy Neeser <email address hidden>

* vector.lisp (norm): Added a version of NORM to operate on lists.

* tests.lisp (test-nonzero): A test for methods to easily signal a

condition when its argument has a zero norm.

* conditions.lisp (zero-norm-error): Added a condition for

singaling when a vector argument is zero.

* vector-operations.lisp (angle-between): Added a function to

return the angle between two vectors.

2009-11-04 Rudy Neeser <email address hidden>

* vector.lisp (to-vector): Speed up TO-VECTOR by falling through

if the asked for dimension is the same as that of the given

object.

* matrix.lisp (matrix): Updated the matrix to not store row and

column information separately. Added separate MATRIX-ROWS and

MATRIX-COLS methods to return these values.

* vector.lisp (vector): Added an :initarg and :type for the vector

DATA slot.

* matrix.lisp (make-load-form): Created a method for serialising

matrix object.

* vector.lisp (vector): Added a documentation string.

(make-load-form): Created a method for serialising vector objects.

2009-09-11 Rudy Neeser <email address hidden>

* vector.lisp (elt): Returns the element of a list, as though it

were an array.

2009-09-10 Rudy Neeser <email address hidden>

* interpolate.lisp (between): Added a method to calculate the

point between two vectors.

(linear-interpolation): Modified so that it accepts lists as

arguments as well.

* vector.lisp (to-vector): Added a key to specify the dimension of

the vector to transform the data to.

2009-09-07 Rudy Neeser <email address hidden>

* operations.lisp: Added type information when signalling

conditions of type OPERATION-NOT-SUPPORTED to give more

information to callers of c+, c-, c* and c/

* conditions.lisp (operation-not-supported): Updated the condition

to be able to supply extra information as to why the operation

failed.

2009-09-02 Rudy Neeser <email address hidden>

* vector.lisp (negate): Added a method to return the additive

inverse of a list.

* operations.lisp: Added addition, subtraction, multiplication and

division operations on lists, treating them as vectors. Also

includes a mechanic to cast lists up to vectors when required.

* operations.lisp (create-list-operation-method): Added a macro to

define vector operations, such as addition and subtraction, on

lists.

* tests.lisp (test-dimensions): Added a test to test the

dimensions of lists in various operations.

* conditions.lisp (operation-not-supported): Fixed a bug that

stopped this condition from being reported.

2009-05-20 Rudy Neeser <email address hidden>

* package.lisp (#:create-rotation-from-view-to-view): Exported the

symbol.

* rotations.lisp (create-rotation-from-view-to-view): Creates a

rotation matrix that will rotate one vector on to another.

* package.lisp (#:create-rotation-from-view): Exported

CREATE-ROTATION-FROM-VIEW.

* rotations.lisp (fill-row): A non-exported macro that allows for

filling in rows of a matrix while constructing one.

(create-rotation-from-view): A new function that creates rotation

matrices given a view direction and a global up vector.

* package.lisp (#:matrix-elt): Added MATRIX-ELT to the list of

exported package symbols.

* vector.lisp (print-object): Updated to print vectors using only

3 places after the decimal point.

* matrix.lisp (print-object): updated to print matrices using only

3 places after the decimal point.

2009-04-20 Rudy Neeser <email address hidden>

* vector.lisp (to-vector): Created a generic function to convert

objects of various types to vectors.

(to-vector): Created a method that converts vectors into vectors.

(to-vector): Created a method to convert lists into vectors.

2009-04-06 Rudy Neeser <email address hidden>

* vector.lisp (normalise!): Put in a test to ensure that we don't

attempt to normalise vectors of length 0.

(normalise): As above: put in a test to ensure that we don't

attempt to normalise vectors of length 0.

2009-03-05 Rudy Neeser <email address hidden>

* vector.lisp (length): Added a way to tell the length of a vector

represented as a list.

2009-03-04 Rudy Neeser <email address hidden>

* vector.lisp (x): Added a method that will act on lists, as FIRST

does.

(setf x): An appropriate setf to work with lists.

(y): Added a method to act on lists, as x above.

(setf y): To set the y of a list.

(z): Added a method to act on lists, as x above.

(setf z): To set the z of a list.

2009-02-26 Rudy Neeser <email address hidden>

* vector-operations.lisp: New file where various vector operations

will be moved to and implemented.

(dot-product): Moved here from vector.lisp. A test to ensure that

the vectors are the correct dimensions has been added.

(cross-product): Moved here from vector.lisp. Tests for

dimensionality have been added.

(euclidean-distance): Calculates the euclidean distance between

two vectors.

(euclidean-distance): Provide a function to calculate the

euclidean distance between two numbers.

2009-02-16 Rudy Neeser <email address hidden>

* vector.lisp (cross-product): Added a function to calculate the

vector cross-product for 3-vectors.

2009-02-10 Rudy Neeser <email address hidden>

* matrix.lisp (transpose): Created a new generic function which

returns the transpose of a matric.

2008-11-25 Rudy Neeser <email address hidden>

* operations.lisp (-): Fixed a bug allowing unary lm:- to operate

as expected on VECTOR and MATRIX objects. In other words, it now

correctly negates these objects, rather than raising a condition.

* vector.lisp (copy): Provide an implementation for VECTORs.

* matrix.lisp (negate): Provide an implementation for MATRIX

objects.

(copy): Provide a method to copy MATRIX objects.

* generics.lisp (copy): Created a generic function that returns a

copy of the objects that it is given.

* matrix.lisp (negate!): Added an implementation of NEGATE! for

MATRIXs.

* vector.lisp (negate!): Added an implementation of the NEGATE!

generic function for VECTORs.

* generics.lisp (negate!): Added a destructive generic method

which returns the additive inverse of an item.

* vector.lisp (negate): Added an implementation of NEGATE for the

VECTOR class.

* generics.lisp (negate): Created a generic method which is meant

to return the additive inverse of an item. Provided an

implementation for all CL NUMBERs.

* rotations.lisp (create-rotation-matrix): Added a function which

can be given a rotation frame and will supply the necessary

rotation matrix to rotate into that frame.

2008-08-10 Rudy Neeser <email address hidden>

* interpolate.lisp: Add the file. Should contain all the various

interpolation methods that I will require.

(linear-interpolation): Interpolates between two points, using a

parameteric line equation.

2008-08-08 Rudy Neeser <email address hidden>

* vector.lisp (dot-product): Added a function to calculate the dot

product between two vectors.

(dot-product): Added tests to ensure that the vectors are of the

same length.