diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet
index a72ba45..c507d41 100644
--- a/books/bookvol10.3.pamphlet
+++ b/books/bookvol10.3.pamphlet
@@ -22505,7 +22505,7 @@ DecimalExpansion(): Exports == Implementation where
\end{chunk}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\section{Denavit-Hartenberg Matrices}
+\section{domain DHMATRIX DenavitHartenbergMatrix}
\subsection{Homogeneous Transformations}
The study of robot manipulation is concerned with the relationship between
@@ -24130,6 +24130,687 @@ where n, o, and a are the direction cosines
See Also:
o )show DenavitHartenbergMatrix
+o )d op identity
+
+\end{chunk}
+\begin{chunk}{identity.help}
+====================================================================
+identity from DenavitHartenbergMatrix (DHMATRIX)
+====================================================================
+
+NAME
+====
+
+identity
+
+DOMAIN
+======
+
+DenavitHartenbergMatrix (DHMATRIX)
+
+SYNOPSYS
+========
+
+ identity()
+
+DESCRIPTION
+===========
+
+A Denavit-Hartenberg Matrix is a 4x4 Matrix of the form:
+ nx ox ax px
+ ny oy ay py
+ nz oz az pz
+ 0 0 0 1
+where n, o, and a are the direction cosines
+
+The identity matrix comes from the chosen Ring which is
+Expression(Integer) by default.
+
+ARGUMENTS
+=========
+
+None
+
+RETURN VALUE
+============
+
+A 4x4 matrix with elements from the Ring
+
+identity()
+
+ +1 0 0 0+
+ | |
+ |0 1 0 0|
+ | |
+ |0 0 1 0|
+ | |
+ +0 0 0 1+
+ Type: DenavitHartenbergMatrix(Expression(Integer))
+
+You can specify the domain with
+
+identity()$DHMATRIX(DFLOAT)
+
+ +1. 0. 0. 0.+
+ | |
+ |0. 1. 0. 0.|
+ | |
+ |0. 0. 1. 0.|
+ | |
+ +0. 0. 0. 1.+
+ Type: DenavitHartenbergMatrix(DoubleFloat)
+
+NOTES
+=====
+
+REFERENCES
+==========
+
+Paul, Richard "Robot Manipulators" MIT Press 1981 ISBN 0-262-16082-X
+
+SEE ALSO
+========
+
+o )show DenavitHartenbergMatrix
+o )d op identity
+o )d op rotatex
+o )d op rotatey
+o )d op rotatez
+o )d op scale
+o )d op translate
+
+\end{chunk}
+\begin{chunk}{rotatex.help}
+====================================================================
+rotatex from DenavitHartenbergMatrix (DHMATRIX)
+====================================================================
+
+NAME
+====
+
+rotatex
+
+DOMAIN
+======
+
+DenavitHartenbergMatrix (DHMATRIX)
+
+SYNOPSYS
+========
+
+ rotatex(degrees)
+
+DESCRIPTION
+===========
+
+A Denavit-Hartenberg Matrix is a 4x4 Matrix of the form:
+ nx ox ax px
+ ny oy ay py
+ nz oz az pz
+ 0 0 0 1
+where n, o, and a are the direction cosines
+
+The rotatex function returns a matrix from the chosen Ring which is
+Expression(Integer) by default. This matrix can be multiplied by
+a point to move the coordinates of the point in 3-space. This is
+mostly used in drawing.
+
+The rotatex matrix can be multiplied by other DH matrices to compose
+rotation, translation, and scale operations into a single linear
+transformation matrix.
+
+Multiplying a point by a rotatex matrix will rotate the point around
+the X axis by the given number of degrees.
+
+ARGUMENTS
+=========
+
+ degrees is the number of degrees (positive or negative)
+
+RETURN VALUE
+============
+
+A 4x4 matrix with elements from the Ring. Expression(Integer) is the default.
+
+ rotatex(30)
+
+ +1 0 0 0+
+ | |
+ | +-+ |
+ | \|3 1 |
+ |0 ---- - - 0|
+ | 2 2 |
+ | |
+ | +-+ |
+ | 1 \|3 |
+ |0 - ---- 0|
+ | 2 2 |
+ | |
+ +0 0 0 1+
+ Type: DenavitHartenbergMatrix(Expression(Integer))
+
+rotatex(3.3)
+
+ +1.0 0.0 0.0 0.0+
+ | |
+ |0.0 0.9983418166 1402834927 - 0.0575640269 5956728358 2 0.0|
+ | |
+ |0.0 0.0575640269 5956728358 2 0.9983418166 1402834927 0.0|
+ | |
+ +0.0 0.0 0.0 1.0+
+ Type: DenavitHartenbergMatrix(Float)
+
+rotatex(-3.3)
+
+ +1.0 0.0 0.0 0.0+
+ | |
+ |0.0 0.9983418166 1402834927 0.0575640269 5956728358 2 0.0|
+ | |
+ |0.0 - 0.0575640269 5956728358 2 0.9983418166 1402834927 0.0|
+ | |
+ +0.0 0.0 0.0 1.0+
+ Type: DenavitHartenbergMatrix(Float)
+
+Note that a zero argument is equivalent to calling the identity function.
+
+rotatex(0)
+
+ +1 0 0 0+
+ | |
+ |0 1 0 0|
+ | |
+ |0 0 1 0|
+ | |
+ +0 0 0 1+
+ Type: DenavitHartenbergMatrix(Expression(Integer))
+
+
+NOTES
+=====
+
+REFERENCES
+==========
+
+Paul, Richard "Robot Manipulators" MIT Press 1981 ISBN 0-262-16082-X
+
+SEE ALSO
+========
+
+o )show DenavitHartenbergMatrix
+o )d op identity
+o )d op rotatex
+o )d op rotatey
+o )d op rotatez
+o )d op scale
+o )d op translate
+
+\end{chunk}
+\begin{chunk}{rotatey.help}
+====================================================================
+rotatey from DenavitHartenbergMatrix (DHMATRIX)
+====================================================================
+
+NAME
+====
+
+rotatey
+
+DOMAIN
+======
+
+DenavitHartenbergMatrix (DHMATRIX)
+
+SYNOPSYS
+========
+
+ rotatey(degrees)
+
+DESCRIPTION
+===========
+
+A Denavit-Hartenberg Matrix is a 4x4 Matrix of the form:
+ nx ox ax px
+ ny oy ay py
+ nz oz az pz
+ 0 0 0 1
+where n, o, and a are the direction cosines
+
+The rotatey function returns a matrix from the chosen Ring which is
+Expression(Integer) by default. This matrix can be multiplied by
+a point to move the coordinates of the point in 3-space. This is
+mostly used in drawing.
+
+The rotatey matrix can be multiplied by other DH matrices to compose
+rotation, translation, and scale operations into a single linear
+transformation matrix.
+
+Multiplying a point by a rotatex matrix will rotate the point around
+the Y axis by the given number of degrees.
+
+ARGUMENTS
+=========
+
+ degrees is the number of degrees (positive or negative)
+
+RETURN VALUE
+============
+
+A 4x4 matrix with elements from the Ring. Expression(Integer) is the default.
+
+rotatey(30)
+
+ + +-+ +
+ |\|3 1 |
+ |---- 0 - 0|
+ | 2 2 |
+ | |
+ | 0 1 0 0|
+ | |
+ | +-+ |
+ | 1 \|3 |
+ |- - 0 ---- 0|
+ | 2 2 |
+ | |
+ + 0 0 0 1+
+ Type: DenavitHartenbergMatrix(Expression(Integer))
+ rotatey(3.3)
+
+ + 0.9983418166 1402834927 0.0 0.0575640269 5956728358 2 0.0+
+ | |
+ | 0.0 1.0 0.0 0.0|
+ | |
+ |- 0.0575640269 5956728358 2 0.0 0.9983418166 1402834927 0.0|
+ | |
+ + 0.0 0.0 0.0 1.0+
+ Type: DenavitHartenbergMatrix(Float)
+ rotatey(-3.3)
+
+ + 0.9983418166 1402834927 0.0 - 0.0575640269 5956728358 2 0.0+
+ | |
+ | 0.0 1.0 0.0 0.0|
+ | |
+ |0.0575640269 5956728358 2 0.0 0.9983418166 1402834927 0.0|
+ | |
+ + 0.0 0.0 0.0 1.0+
+ Type: DenavitHartenbergMatrix(Float)
+
+Note that a zero argument is equivalent to calling the identity function.
+
+ rotatey(0)
+
+ +1 0 0 0+
+ | |
+ |0 1 0 0|
+ | |
+ |0 0 1 0|
+ | |
+ +0 0 0 1+
+ Type: DenavitHartenbergMatrix(Expression(Integer))
+
+NOTES
+=====
+
+REFERENCES
+==========
+
+Paul, Richard "Robot Manipulators" MIT Press 1981 ISBN 0-262-16082-X
+
+SEE ALSO
+========
+
+o )show DenavitHartenbergMatrix
+o )d op identity
+o )d op rotatex
+o )d op rotatey
+o )d op rotatez
+o )d op scale
+o )d op translate
+
+\end{chunk}
+\begin{chunk}{rotatez.help}
+====================================================================
+rotatez from DenavitHartenbergMatrix (DHMATRIX)
+====================================================================
+
+NAME
+====
+
+rotatez
+
+DOMAIN
+======
+
+DenavitHartenbergMatrix (DHMATRIX)
+
+SYNOPSYS
+========
+
+ rotatez(degrees)
+
+DESCRIPTION
+===========
+
+A Denavit-Hartenberg Matrix is a 4x4 Matrix of the form:
+ nx ox ax px
+ ny oy ay py
+ nz oz az pz
+ 0 0 0 1
+where n, o, and a are the direction cosines
+
+The rotatez function returns a matrix from the chosen Ring which is
+Expression(Integer) by default. This matrix can be multiplied by
+a point to move the coordinates of the point in 3-space. This is
+mostly used in drawing.
+
+The rotatez matrix can be multiplied by other DH matrices to compose
+rotation, translation, and scale operations into a single linear
+transformation matrix.
+
+Multiplying a point by a rotatez matrix will rotate the point around
+the Z axis by the given number of degrees.
+
+ARGUMENTS
+=========
+
+ degrees is the number of degrees (positive or negative)
+
+RETURN VALUE
+============
+
+A 4x4 matrix with elements from the Ring. Expression(Integer) is the default.
+
+rotatez(30)
+
+ + +-+ +
+ |\|3 1 |
+ |---- - - 0 0|
+ | 2 2 |
+ | |
+ | +-+ |
+ | 1 \|3 |
+ | - ---- 0 0|
+ | 2 2 |
+ | |
+ | 0 0 1 0|
+ | |
+ + 0 0 0 1+
+ Type: DenavitHartenbergMatrix(Expression(Integer))
+
+ rotatez(3.3)
+
+ + 0.9983418166 1402834927 - 0.0575640269 5956728358 2 0.0 0.0+
+ | |
+ |0.0575640269 5956728358 2 0.9983418166 1402834927 0.0 0.0|
+ | |
+ | 0.0 0.0 1.0 0.0|
+ | |
+ + 0.0 0.0 0.0 1.0+
+ Type: DenavitHartenbergMatrix(Float)
+
+ rotatez(-3.3)
+
+ + 0.9983418166 1402834927 0.0575640269 5956728358 2 0.0 0.0+
+ | |
+ |- 0.0575640269 5956728358 2 0.9983418166 1402834927 0.0 0.0|
+ | |
+ | 0.0 0.0 1.0 0.0|
+ | |
+ + 0.0 0.0 0.0 1.0+
+ Type: DenavitHartenbergMatrix(Float)
+
+Note that a zero argument is equivalent to calling the identity function.
+
+ rotatez(0)
+
+ +1 0 0 0+
+ | |
+ |0 1 0 0|
+ | |
+ |0 0 1 0|
+ | |
+ +0 0 0 1+
+ Type: DenavitHartenbergMatrix(Expression(Integer))
+
+NOTES
+=====
+
+REFERENCES
+==========
+
+Paul, Richard "Robot Manipulators" MIT Press 1981 ISBN 0-262-16082-X
+
+SEE ALSO
+========
+
+o )show DenavitHartenbergMatrix
+o )d op identity
+o )d op rotatex
+o )d op rotatey
+o )d op rotatez
+o )d op scale
+o )d op translate
+
+\end{chunk}
+\begin{chunk}{scale.help}
+====================================================================
+scale from DenavitHartenbergMatrix (DHMATRIX)
+====================================================================
+
+NAME
+====
+
+scale
+
+DOMAIN
+======
+
+DenavitHartenbergMatrix (DHMATRIX)
+
+SYNOPSYS
+========
+
+ scale(inX,inY,inZ)
+
+DESCRIPTION
+===========
+
+A Denavit-Hartenberg Matrix is a 4x4 Matrix of the form:
+ nx ox ax px
+ ny oy ay py
+ nz oz az pz
+ 0 0 0 1
+where n, o, and a are the direction cosines
+
+The scale function returns a matrix from the chosen Ring which is
+Expression(Integer) by default. This matrix can be multiplied by
+a point to scale the coordinates of the point in 3-space. This is
+mostly used in drawing.
+
+The scale matrix can be multiplied by other DH matrices to compose
+rotation, translation, and scale operations into a single linear
+transformation matrix.
+
+Multiplying a point by a scale matrix will scale the X, Y, and Z
+coordinates of the point.
+
+ARGUMENTS
+=========
+
+ inX is the amount to scale in the X direction
+
+ inY is the amount to scale in the Y direction
+
+ inZ is the amount to scale in the Z direction
+
+RETURN VALUE
+============
+
+A 4x4 matrix with elements from the Ring. Expression(Integer) is the default.
+
+ scale(0.5,0.4,0.3)
+
+ +0.5 0.0 0.0 0.0+
+ | |
+ |0.0 0.4 0.0 0.0|
+ | |
+ |0.0 0.0 0.3 0.0|
+ | |
+ +0.0 0.0 0.0 1.0+
+ Type: DenavitHartenbergMatrix(Float)
+
+ scale(0.5,-0.4,0.3)
+
+ +0.5 0.0 0.0 0.0+
+ | |
+ |0.0 - 0.4 0.0 0.0|
+ | |
+ |0.0 0.0 0.3 0.0|
+ | |
+ +0.0 0.0 0.0 1.0+
+ Type: DenavitHartenbergMatrix(Float)
+
+Note that arguments of 1's is equivalent to calling the identity function.
+
+ scale(1,1,1)
+
+ +1 0 0 0+
+ | |
+ |0 1 0 0|
+ | |
+ |0 0 1 0|
+ | |
+ +0 0 0 1+
+ Type: DenavitHartenbergMatrix(Expression(Integer))
+
+NOTES
+=====
+
+REFERENCES
+==========
+
+Paul, Richard "Robot Manipulators" MIT Press 1981 ISBN 0-262-16082-X
+
+SEE ALSO
+========
+
+o )show DenavitHartenbergMatrix
+o )d op identity
+o )d op rotatex
+o )d op rotatey
+o )d op rotatez
+o )d op scale
+o )d op translate
+
+\end{chunk}
+\begin{chunk}{translate.help}
+====================================================================
+translate from DenavitHartenbergMatrix (DHMATRIX)
+====================================================================
+
+NAME
+====
+
+translate
+
+DOMAIN
+======
+
+DenavitHartenbergMatrix (DHMATRIX)
+
+SYNOPSYS
+========
+
+ translate(inX,inY,inZ)
+
+DESCRIPTION
+===========
+
+A Denavit-Hartenberg Matrix is a 4x4 Matrix of the form:
+ nx ox ax px
+ ny oy ay py
+ nz oz az pz
+ 0 0 0 1
+where n, o, and a are the direction cosines
+
+The translate function returns a matrix from the chosen Ring which is
+Expression(Integer) by default. This matrix can be multiplied by
+a point to translate the coordinates of the point in 3-space. This is
+mostly used in drawing.
+
+The translate matrix can be multiplied by other DH matrices to compose
+rotation, translation, and scale operations into a single linear
+transformation matrix.
+
+Multiplying a point by a translate matrix will translate the X, Y, and Z
+coordinates of the point.
+
+ARGUMENTS
+=========
+
+ inX is the amount to translate in the X direction
+
+ inY is the amount to translate in the Y direction
+
+ inZ is the amount to translate in the Z direction
+
+RETURN VALUE
+============
+
+A 4x4 matrix with elements from the Ring. Expression(Integer) is the default.
+
+ translate(0.5,0.4,0.3)
+
+ +1.0 0.0 0.0 0.5+
+ | |
+ |0.0 1.0 0.0 0.4|
+ | |
+ |0.0 0.0 1.0 0.3|
+ | |
+ +0.0 0.0 0.0 1.0+
+ Type: DenavitHartenbergMatrix(Float)
+
+ translate(0.5,-0.4,0.3)
+
+ +1.0 0.0 0.0 0.5 +
+ | |
+ |0.0 1.0 0.0 - 0.4|
+ | |
+ |0.0 0.0 1.0 0.3 |
+ | |
+ +0.0 0.0 0.0 1.0 +
+ Type: DenavitHartenbergMatrix(Float)
+
+Note that arguments of 0's is equivalent to calling the identity function.
+
+ translate(0,0,0)
+
+ +1 0 0 0+
+ | |
+ |0 1 0 0|
+ | |
+ |0 0 1 0|
+ | |
+ +0 0 0 1+
+ Type: DenavitHartenbergMatrix(Expression(Integer))
+
+NOTES
+=====
+
+REFERENCES
+==========
+
+Paul, Richard "Robot Manipulators" MIT Press 1981 ISBN 0-262-16082-X
+
+SEE ALSO
+========
+
+o )show DenavitHartenbergMatrix
+o )d op identity
+o )d op rotatex
+o )d op rotatey
+o )d op rotatez
+o )d op scale
+o )d op translate
\end{chunk}
\pagehead{DenavitHartenbergMatrix}{DHMATRIX}
@@ -24216,8 +24897,6 @@ o )show DenavitHartenbergMatrix
\end{tabular}
\begin{chunk}{domain DHMATRIX DenavitHartenbergMatrix}
-
-
)abbrev domain DHMATRIX DenavitHartenbergMatrix
++ Author: Timothy Daly
++ Date Created: June 26, 1991
@@ -24262,19 +24941,33 @@ DenavitHartenbergMatrix(R): Exports == Implementation where
Exports ==> MatrixCategory(R,row,col) with
"*": (%, Point R) -> Point R
++ t*p applies the dhmatrix t to point p
+ ++
+ ++X rotatex(30)*point([1,2,3])
identity: () -> %
++ identity() create the identity dhmatrix
+ ++
+ ++ identity()
rotatex: R -> %
++ rotatex(r) returns a dhmatrix for rotation about axis x for r degrees
+ ++
+ ++X rotatex(30)
rotatey: R -> %
++ rotatey(r) returns a dhmatrix for rotation about axis y for r degrees
+ ++
+ ++X rotatey(30)
rotatez: R -> %
++ rotatez(r) returns a dhmatrix for rotation about axis z for r degrees
+ ++
+ ++X rotatez(30)
scale: (R,R,R) -> %
++ scale(sx,sy,sz) returns a dhmatrix for scaling in the x, y and z
++ directions
+ ++
+ ++X scale(0.5,0.5,0.5)
translate: (R,R,R) -> %
++ translate(x,y,z) returns a dhmatrix for translation by x, y, and z
+ ++
+ ++X translate(1.0,2.0,3.0)
Implementation ==> Matrix(R) add
@@ -102268,13 +102961,17 @@ Point(R:Ring) : Exports == Implementation where
for x in l for i in minIndex(pt).. repeat
pt.i := x
pt
+
dimension p == (# p)::PI -- Vector returns NonNegativeInteger...?
+
convert(l:List R):% == point(l)
+
cross(p0, p1) ==
#p0 ^=3 or #p1^=3 => error "Arguments to cross must be three dimensional"
point [p0.2 * p1.3 - p1.2 * p0.3, _
p1.1 * p0.3 - p0.1 * p1.3, _
p0.1 * p1.2 - p1.1 * p0.2]
+
extend(p,l) == concat(p,point l)
\end{chunk}
diff --git a/books/bookvolbib.pamphlet b/books/bookvolbib.pamphlet
index 2282276..5ca5716 100644
--- a/books/bookvolbib.pamphlet
+++ b/books/bookvolbib.pamphlet
@@ -14609,10 +14609,14 @@ Science of Computer Programming V25 No.1 Oct 1995 pp41-61 Elesevier
\end{chunk}
\index{Paul, Richard}
-\begin{chunk}{ignore}
-\bibitem[Paul 81]{Paul81} Paul, Richard
+\begin{chunk}{axiom.bib}
+@book{Paul81,
+ author = "Paul, Richard",
title = "Robot Manipulators",
-MIT Press 1981
+ year = "1981",
+ publisher = "MIT Press",
+ isbn = "0-262-16082-X"
+}
\end{chunk}
diff --git a/changelog b/changelog
index a58dede..1a98472 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20141116 tpd src/axiom-website/patches.html 20141116.01.tpd.patch
+20141116 tpd books/bookvol10.3 prototype man-page style help for functions
20141113 tpd src/axiom-website/patches.html 20141113.01.tpd.patch
20141113 tpd books/bookvol5 inline object structures using macros
20141113 tpd src/interp/interp-proclaims.lisp remove object structures
diff --git a/patch b/patch
index aec97ef..ac660fb 100644
--- a/patch
+++ b/patch
@@ -1,3 +1,4 @@
-books/bookvol5 turn object rep into macro form for inline
+books/bookvol10.3 prototype man-page style help for functions
+
+Axiom needs function-level help files. Prototype these for DHMATRIX.
-Object wrapping/unwrapping is now macros for inline performance.
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index b521729..31a3613 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -4700,6 +4700,8 @@ books/bookvol5 fix remake handling of source files
books/bookvol5 make obj fns into macros for performance
20141113.01.tpd.patch
books/bookvol5 inline object structures using macros
+20141116.01.tpd.patch
+books/bookvol10.3 prototype man-page style help for functions