CascadedCoords


cascaded-coords [class]


  :super   coordinates 

:slots (parent descendants worldcoords manager changed)


defines a linked coordinates. Cascaded-coords is often abbreviated as cascoords.


:inheritance [method]

returns the inheritance tree list describing all the descendants of the cascoords. If a and b are the direct descendants of this coords, and c is a descendant of a, ((a (c)) (b)) is returned.


:assoc childcoords &optional relative-coords [method]

childcoords is associated to this cascoords as a descendant. If childcoords has been already assoc'ed to some other cascoords, first childcoords is dissoc'ed since each cascoords can have only one parent. The orientation or location of childcoords in the world does not change.


:dissoc childcoords [method]

dissociates (removes) childcoords from the descendants list of this coords. The orientation or location of childcoords in the world does not change.


:changed [method]

informs this coords that the coordinates of parent has changed, and the re-computation of worldcoords is needed when it is requested later.


:update [method]

is called by the :worldcoords method to recompute the current worldcoord.


:worldcoords [method]

returns a coordinates object which represents this coord in the world by concatenating all the cascoords from the root to this coords. The result is held in this object and reused later. Thus, you should not modify the resulted coords.


:worldpos [method]

returns rot of this coordinates represented in the world.


:worldrot [method]

returns pos of this coordinates represented in the world.


:transform-vector vec [method]

Regarding vec represented in this local coords, transforms it to the representation in the world.


:inverse-transform-vector vec [method]

vec represented in the world is inversely transformed into the representation in this local coords.


:inverse-transformation [method]

makes an instance of coordinates which represents inverse transformation of this coord.


:transform trans &optional (wrt :local) [method]



:translate fltvec &optional (wrt :local) [method]


:locate fltvec &optional (wrt :local) [method]


:rotate theta axis &optional (wrt :local) [method]


:orient theta axis &optional (wrt :local) [method]
Refer to the descriptions in class coordinates.


make-coords &key :pos :rot :rpy :Euler :angle :axis :4X4 :coords :name [function]



make-cascoords &key :pos :rot :rpy :Euler :angle :axis :4X4 :coords :name [function]



coords &key :pos :rot :rpy :Euler :angle :axis :4X4 :coords :name [function]


cascoords &key :pos :rot :rpy :Euler :angle :axis :4X4 :coords :name [function]
All these functions make new coordinates or cascaded-coordinates. For the keyword parameter, see :init method of class coordinates.


transform-coords coords1 coords2 &optional (coords3 (coords)) [function]
Coords1 is applied (multiplied) to the coords2 from the left. The product is stored in coords3.


transform-coords* &rest coords [function]
concatenates transformations listed in coords. An instance of coordinates that represents the concatenated transformation is returned.


wrt coords vec [function]
transforms vec into the representation in coords. The result is equivalent to (send coords :transform-vector vec).


k-okada 2013-05-21