axiom-developer
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Axiom-developer] 20080304.01.tpd.patch (add additional hyperdoc page tr


From: daly
Subject: [Axiom-developer] 20080304.01.tpd.patch (add additional hyperdoc page translations)
Date: Wed, 5 Mar 2008 03:37:56 -0600

This patch adds additional hyperdoc page translations

=======================================================================
diff --git a/changelog b/changelog
index 4d6ce3b..6b2c6be 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,4 @@
+20080304 tpd src/hyper/bookvol11 add additional hyperdoc page translations
 20080303 tpd src/hyper/bookvol11 add additional hyperdoc page translations
 20080302 tpd src/hyper/bookvol11 add additional hyperdoc page translations
 20080301 tpd src/hyper/bookvol11 add additional hyperdoc page translations
diff --git a/src/hyper/bookvol11.pamphlet b/src/hyper/bookvol11.pamphlet
index 76c0e51..ec9dbe3 100644
--- a/src/hyper/bookvol11.pamphlet
+++ b/src/hyper/bookvol11.pamphlet
@@ -496,6 +496,7 @@ PAGES=rootpage.xhtml \
             dbopcontent.xhtml \
             dbopcontinuedfraction.xhtml \
             dbopconvergents.xhtml \
+            dbopconvert.xhtml \
             dbopcopy.xhtml \
             dbopcos.xhtml \
             dbopcosh.xhtml \
@@ -503,8 +504,10 @@ PAGES=rootpage.xhtml \
             dbopcoth.xhtml \
             dbopcount.xhtml \
             dbopcountableq.xhtml \
+            dbopcreate3space.xhtml \
             dbopcsc.xhtml \
             dbopcsch.xhtml \
+            dbopcurve.xhtml \
             dbopcycleragits.xhtml \
             dbopcyclotomic.xhtml \
             dbopd.xhtml \
@@ -564,6 +567,9 @@ PAGES=rootpage.xhtml \
             dboplog.xhtml \
             dboploggamma.xhtml \
             dbopmainvariable.xhtml \
+            dbopmakegraphimage.xhtml \
+            dbopmakeobject.xhtml \
+            dbopmakeviewport3d.xhtml \
             dbopmap.xhtml \
             dbopmapbang.xhtml \
             dbopmatrix.xhtml \
@@ -658,6 +664,7 @@ PAGES=rootpage.xhtml \
             dbopsubmatrix.xhtml \
             dbopsubmatrix.xhtml \
             dbopsubmod.xhtml \
+            dbopsurface.xhtml \
             dbopsumofkthpowerdivisors.xhtml \
             dboptan.xhtml \
             dboptanh.xhtml \
@@ -779,8 +786,25 @@ PAGES=rootpage.xhtml \
             linconversion.xhtml \
           graphicspage.xhtml \
             graphexamples.xhtml \
+              graphexamplesassorted.xhtml \
+              graphexamplesthreed.xhtml \
+              graphexamplesonevariable.xhtml \
+              graphexamplesparametric.xhtml \
+              graphexamplespolar.xhtml \
+              graphexamplesimplicit.xhtml \
+              graphexampleslistofpoints.xhtml \
             graph2d.xhtml \
+              graph2dimplicit.xhtml \
+              graph2dlistsofpoints.xhtml \
+              graph2donevariable.xhtml \
+              graph2dparametric.xhtml \
+              graph2dpolar.xhtml \
             graph3d.xhtml \
+              graph3dobjects.xhtml \
+              graph3dparametric.xhtml \
+              graph3dsurfaces.xhtml \
+              graph3dtubeplots.xhtml \
+              graph3dtwovariables.xhtml \
             graphviewports.xhtml \
           algebrapage.xhtml \
             algnumbertheory.xhtml \
@@ -8453,6 +8477,16 @@ dbopchebyshevu not implemented
 <<page foot>>
 @
 
+\subsection{dbopconvert.xhtml}
+<<dbopconvert.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+dbopconvert not implemented
+<<page foot>>
+@
+
 \subsection{dbopcopy.xhtml}
 <<dbopcopy.xhtml>>=
 <<standard head>>
@@ -8523,6 +8557,15 @@ dbopchebyshevu not implemented
 <<page foot>>
 @
 
+\subsection{dbopcreate3space.xhtml}
+<<dbopcreate3space.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+dbopcreate3space not implemented
+<<page foot>>
+@
 \subsection{dbopcsc.xhtml}
 <<dbopcsc.xhtml>>=
 <<standard head>>
@@ -8543,6 +8586,15 @@ dbopchebyshevu not implemented
 <<page foot>>
 @
 
+\subsection{dbopcurve.xhtml}
+<<dbopcurve.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+dbopcurve not implemented
+<<page foot>>
+@
 \subsection{dbopcycleragits.xhtml}
 <<dbopcycleragits.xhtml>>=
 <<standard head>>
@@ -9135,6 +9187,35 @@ dboplaguerrel not implemented
 <<page foot>>
 @
 
+\subsection{dbopmakegraphimage.xhtml}
+<<dbopmakegraphimage.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+dbopmakegraphimage not implemented
+<<page foot>>
+@
+
+\subsection{dbopmakeobject.xhtml}
+<<dbopmakeobject.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+dbopmakeobject not implemented
+<<page foot>>
+@
+
+\subsection{dbopmakeviewport3d.xhtml}
+<<dbopmakeviewport3d.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+dbopmakeviewport3d not implemented
+<<page foot>>
+@
 \subsection{dbopmap.xhtml}
 <<dbopmap.xhtml>>=
 <<standard head>>
@@ -10065,6 +10146,15 @@ dbopround not implemented
 <<page foot>>
 @
 
+\subsection{dbopsurface.xhtml}
+<<dbopsurface.xhtml>>=
+<<standard head>>
+ </head>
+ <body>
+<<page head>>
+dbopsurface not implemented
+<<page foot>>
+@
 \subsection{dbopsumofkthpowerdivisors.xhtml}
 <<dbopsumofkthpowerdivisors.xhtml>>=
 <<standard head>>
@@ -34751,7 +34841,486 @@ rule not built into the system you can use Axiom's
  </head>
  <body>
 <<page head>>
-      graphexamples not implemented
+  <div align="center">Graphics Examples</div>
+  <hr/>
+Here are some examples of Axiom graphics.
+<ul>
+ <li> <a href="graphexamplesassorted.xhtml">Assorted Examples</a><br/>
+   Examples of each type of Axiom Graphics
+ </li>
+ <li> <a href="graphexamplesthreed.xhtml">Three Dimensional Graphics</a><br/>
+   Plot parametrically defined surfaces of three functions.
+ </li>
+ <li> <a href="graphexamplesonevariable.xhtml">
+   Functions of One Variable</a><br/>
+   Plot curves defined by an equation y=f(x)
+ </li>
+ <li> <a href="graphexamplesparametric.xhtml">Parametric Curves</a><br/>
+   Plot curves defined by parametric equations x=f(t), y=f(t)
+ </li>
+ <li> <a href="graphexamplespolar.xhtml">Polar Coordinates</a><br/>
+   Plot curves given in polar form by an equation r=f(&#x003B8;)
+ </li>
+ <li> <a href="graphexamplesimplicit.xhtml">Implicit Curves</a><br/>
+   Plot non-singular curves defined by a polynomial equation
+ </li>
+ <li> <a href="graphexampleslistofpoints.xhtml">Lists of Points</a><br/>
+   Plot lists of points in the (x,y)-plane
+ </li> 
+</ul>
+<<page foot>>
+@
+
+\subsection{graphexamplesassorted.xhtml}
+<<graphexamplesassorted.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Assorted Graphics Examples</div>
+  <hr/>
+Function of two variables: z=f(x,y)
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="draw(sin(x*y),x=-2.5..2.5,y=-2.5..2.5)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Function of one variable: y=f(x)
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="draw(sin tan x - tan sin x,x=0..6)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Plane parametric curve: x=f(t),y=g(t)
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="draw(curve(sin(t)*sin(2*t),sin(3*t)*sin(4*t)),t=0..2*%pi)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Space parametric curve: x=f(t),y=g(t),z=h(t)
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    
value="draw(curve(sin(t)*sin(2*t),sin(3*t)*sin(4*t),sin(5*t)*sin(6*t)),t=0..2*%pi)"
 />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Polar coordinates: r=f(&#x003B8;)
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="makeRequest('p5');"
+    value="draw(sin(17*t),t=0..2*%pi,coordinates==polar)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Implicit curves: p(x,y)=0
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="draw(y^2+y=x^3-x,x,y,range==[-2..2,-2..1])" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+
+\subsection{graphexamplesimplicit.xhtml}
+<<graphexamplesimplicit.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Implicit Curves</div>
+  <hr/>
+A Conic Section (Hyperbola)
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="draw(x*y=1,x,y,range==[-3..3,-3..3])" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+An Elliptic Curve
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="draw(y^2+y=x^3-x,x,y,range==[-2..2,-2..1])" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Cartesian Ovals
+<ul>
+ <li>
+  <input type="submit" id="p3" class="noresult" 
+    onclick="makeRequest('p3');"
+    value="p:=((x^2+y^2+1)-8*x)^2-(8*(x^2+y^2+1)-4*x-1)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p3','p4']);"
+    value='draw(p=0,x,y,range==[-1..11,-7..7],title=="Cartesian Ovals")' />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Cassinian Ovals: two loops
+<ul>
+ <li>
+  <input type="submit" id="p5" class="noresult" 
+    onclick="makeRequest('p5');"
+    value="q:=(x^2+y^2+7^2)^2-(6^4+4*7^2*x^2)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p5','p6']);"
+    value='draw(q=0,x,y,range==[-10..10,-4..4],title=="Cassinian Oval")' />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+
+\subsection{graphexampleslistofpoints.xhtml}
+<<graphexampleslistofpoints.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Plotting Lists of Points</div>
+  <hr/>
+<ul>
+ <li>
+  <input type="submit" id="p1" class="noresult" 
+    onclick="makeRequest('p1');"
+    
value="p:=map(point,[[1.,1.],[0.,1.],[0.,0.],[1.,0.],[1.,.5],[.5,0.],[0.,.5],[.5,1.],[.25,.25],[.25,.75],[.75,.75],[.75,.25]])"
 />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="noresult" 
+    onclick="makeRequest('p2');"
+    
value="llp:=[[p.1,p.2],[p.2,p.3],[p.3,p.4],[p.4,p.1],[p.5,p.6],[p.6,p.7],[p.7,p.8],[p.8,p.5],[p.9,p.10],[p.10,p.11],[p.11,p.12],[p.12,p.9]]"
 />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="noresult" 
+    onclick="makeRequest('p3');"
+    value="lsize:=[6,6,6,6,8,8,8,8,10,10,10,10]" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="noresult" 
+    onclick="makeRequest('p4');"
+    value="pc1:=pastel red()" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="noresult" 
+    onclick="makeRequest('p5');"
+    value="pc2:=dim green()" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="noresult" 
+    onclick="makeRequest('p6');"
+    value="pc3:=pastel yellow()" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="noresult" 
+    onclick="makeRequest('p7');"
+    value="lpc:=[pc1,pc1,pc1,pc1,pc2,pc2,pc2,pc2,pc3,pc3,pc3,pc3]" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="noresult" 
+    onclick="makeRequest('p8');"
+    value="lc:=[pastel blue(), light yellow(), dim green(), bright red(), 
light green(), dim yellow(), bright blue(), dark red(), pastel red(), light 
blue(), dim green(), light yellow()]" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="noresult" 
+    onclick="makeRequest('p9');"
+    value="g:=makeGraphImage(llp,lpc,lc,lsize)$GRIMAGE" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5','p6','p7','p8','p9','p10']);"
+    value='makeViewport2D(g,[title("Lines")])$VIEW2D' />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+The <a href="dbopmakeviewport2d.xhtml">makeViewport2D</a> command takes a
+list of options as a parameter in this example. The string "Lines" is
+designated as the viewport's title.
+<<page foot>>
+@
+
+
+\subsection{graphexamplesonevariable.xhtml}
+<<graphexamplesonevariable.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Functions of One Variable</div>
+  <hr/>
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="draw(sin tan x - tan sin x, x=0..6)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="draw(sin x + cos x, x=0..2*%pi)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="draw(sin(1/x),x=-1..1)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="draw(x*sin(1/x),x=-1..1)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+
+\subsection{graphexamplesparametric.xhtml}
+<<graphexamplesparametric.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Parametric Curves</div>
+  <hr/>
+The Lemnicate of Bernoulli
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    
value="draw(curve(cos(t/(1+sin(t)^2)),sin(t)*cos(t)/(1+sin(t)^2)),t=-%pi..%pi)" 
/>
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Lissajous curve
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="draw(curve(9*sin(3*t/4),8*sin(t)),t=-4*%pi..4*%pi)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+A gnarly closed curve
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    
value="draw(curve(sin(t)*sin(2*t)*sin(3*t),sin(4*t)*sin(5*t)*sin(6*t)),t=0..2*%pi)"
 />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Another closed curve
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="draw(curve(cos(4*t)*cos(7*t),cos(4*t)*sin(7*t)),t=0..2*%pi)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+
+\subsection{graphexamplespolar.xhtml}
+<<graphexamplespolar.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Polar Coordinates</div>
+  <hr/>
+A circle
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="draw(1,t=0..2*%pi,coordinates==polar)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+A spiral
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="draw(t,t=0..100,coordinates==polar)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+A Petal Curve
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="draw(sin(4*t),t=0..2*%pi,coordinates==polar)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+A Limacon
+<ul>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="draw(2+3*sin(t),t=0..2*%pi,coordinates==polar)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{graphexamplesthreed.xhtml}
+<<graphexamplesthreed.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Three Dimensional Graphics</div>
+  <hr/>
+Plots of parametric surfaces defined by functions f(u,v), g(u,v) and h(u,v).
+
+Pear Surface
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    
value='draw(surface((1+exp(-100*u*u))*sin(%pi*u)*sin(%pi*v),(1+exp(-100*u*u))*sin(%pi*u)*cos(%pi*v),(1+exp(-100*u*u))*cos(%pi*u)),u=0..1,v=0..2,title=="Pear")'
 />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+
+Trigonometric Screw
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    
value='draw(surface(x*cos(y),x*sin(y),y*cos(x)),x=-4..4,y=0..2*%pi,var1Steps==40,var2Steps==40,title=="Trigonometric
 Screw")' />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+
+Etruscan Venus
+<ul>
+ <li>
+  <input type="submit" id="p3" class="noresult" 
+    onclick="makeRequest('p3');"
+    value="a:=1.3*cos(2*x)*cos(y)+sin(y)*cos(x)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="noresult" 
+    onclick="makeRequest('p4');"
+    value="b:=1.3*sin(2*x)*cos(y)-sin(y)*sin(x)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="noresult" 
+    onclick="makeRequest('p5');"
+    value="c:=2.5*cos(y)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p3','p4','p5','p6']);"
+    
value='draw(surface(a,b,c),x=0..%pi,y=-%pi..%pi,var1Steps==40,var2Steps==40,title=="Etruscan
 Venus")' />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+
+Banchoff Klein Bottle
+<ul>
+ <li>
+  <input type="submit" id="p7" class="noresult" 
+    onclick="makeRequest('p7');"
+    value="f:=cos(x)*(cos(x/2)*(sqrt(2)+cos(y))+(sin(x/2)*sin(y)*cos(y)))" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="noresult" 
+    onclick="makeRequest('p8');"
+    value="g:=sin(x)*(cos(x/2)*(sqrt(2)+cos(y))+(sin(x/2)*sin(y)*cos(y)))" />
+  <div id="ansp8"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p9" class="noresult" 
+    onclick="makeRequest('p9');"
+    value="h:=-sin(x/2)*(sqrt(2)+cos(y))+cos(x/2)*sin(y)*cos(y)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p7','p8','p9','p10']);"
+    
value='draw(surface(f,g,h),x=0..4*%pi,y=0..2*%pi,var1Steps==50,var2Steps==50,title=="Banchoff
 Klein Bottle")' />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+
 <<page foot>>
 @
 
@@ -34813,20 +35382,887 @@ lists of points in the plane.
 \subsection{graph2d.xhtml}
 <<graph2d.xhtml>>=
 <<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Two Dimensional Graphics</div>
+  <hr/>
+<ul>
+ <li> <a href="graph2donevariable.xhtml">Functions of One Variable</a><br/>
+      Plot curves defined by an equation y=f(x)
+ </li>
+ <li> <a href="graph2dparametric.xhtml">Parametric Curves</a><br/>
+      Plot curves defined by parametric equations x=f(t), y=g(t)
+ </li>
+ <li> <a href="graph2dpolar.xhtml">Polar Coordinates</a><br/>
+      Plot curves given in polar form by an equation r=f(&#x003B8;)
+ </li>
+ <li> <a href="graph2dimplicit.xhtml">Implicit Curves</a><br/>
+      Plot non-singulare curves defined by a polynomial equation
+ </li>
+ <li> <a href="graph2dlistsofpoints.xhtml">List of Points</a><br/>
+      Plot lists of points in the (x,y)-plane
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{graph2dimplicit.xhtml}
+<<graph2dimplicit.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Implicit Curves</div>
+  <hr/>
+Axiom has facilities for graphing a non-singular algebraic curve in a
+rectangular region of the plane. An algebraic curve is a curve defined by
+a polynomial equation p(x,y)=0. Non-singular means that the curve is
+"smooth" in that it does not cross itself or come to a point (cusp). 
+Algebraically, this means that for any point (a,b) on the curve (i.e.
+a point such that p(a,b)=0), the partial derivatives dp/dx(a,b) and
+dp/dy(a,b) are not both zero. We require that the polynomial have rational
+or integral coefficients. Here is a Cartesian ovals algebraic curve 
+example: 
+<ul>
+ <li>
+  <input type="submit" id="p1" class="noresult" 
+    onclick="makeRequest('p1');"
+    value="p:=((x^2+y^2+1)-8*x)^2-(8*(x^2+y^2+1)-4*x-1)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value='draw(p=0,x,y,range==[-1..11,-7..7],title=="Cartesian Ovals")' />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+A range must be declared for each variable specified in the algebraic
+curve equation.
+<<page foot>>
+@
+
+\subsection{graph2dlistsofpoints.xhtml}
+<<graph2dlistsofpoints.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">List of Points</div>
+  <hr/>
+Axiom has the ability to create lists of points in a two dimensional 
+graphics viewport. This is done by utilizing the 
+<a href="db.xhtml?GraphImage">GraphImage</a> and
+<a href="db.xhtml?TwoDimensionalViewport">TwoDimensionalViewport</a>
+domain facilities.
+
+In this example, the <a href="dbopmakegraphimage.xhtml">makeGraphImage</a>
+takes a list of lists of points parameter, a list of colors for each point
+in the graph, a list of colors for each line in the graph, and a list of
+numbers which indicate the size of each point in the graph. The following
+lines create list of lists of points which can be read be made into two
+dimensional graph images.
+
+First we make a list of points
+<ul>
+ <li>
+  <input type="submit" id="p1" class="noresult" 
+    onclick="makeRequest('p1');"
+    
value="p:=map(point,[[1.,1.],[0.,1.],[0.,0.],[1.,0.],[1.,.5],[.5,0.],[0.,.5],[.5,1.],[.25,.25],[.25,.75],[.75,.75],[.75,.25]])"
 />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Then we select pairs of these points which represent the endpoints of lines.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="noresult" 
+    onclick="makeRequest('p2');"
+    
value="llp:=[[p.1,p.2],[p.2,p.3],[p.3,p.4],[p.4,p.1],[p.5,p.6],[p.6,p.7],[p.7,p.8],[p.8,p.5],[p.9,p.10],[p.10,p.11],[p.11,p.12],[p.12,p.9]]"
 />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Next we set the point color and size, and the line color for all components
+of the graph.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="noresult" 
+    onclick="makeRequest('p3');"
+    value="lsize:=[6,6,6,6,8,8,8,8,10,10,10,10]" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="noresult" 
+    onclick="makeRequest('p4');"
+    value="pc1:=pastel red()" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="noresult" 
+    onclick="makeRequest('p5');"
+    value="pc2:=dim green()" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="noresult" 
+    onclick="makeRequest('p6');"
+    value="pc3:=pastel yellow()" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="noresult" 
+    onclick="makeRequest('p7');"
+    value="lpc:=[pc1,pc1,pc1,pc1,pc2,pc2,pc2,pc2,pc3,pc3,pc3,pc3]" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="noresult" 
+    onclick="makeRequest('p8');"
+    value="lc:=[pastel blue(), light yellow(), dim green(), bright red(), 
light green(), dim yellow(), bright blue(), dark red(), pastel red(), light 
blue(), dim green(), light yellow()]" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Now the graph image is created and named according to the component
+specifications indicated above. The 
+<a href="dbopmakeviewport2d.xhtml">makeViewport2D</a> command then
+creates a two dimensional viewport for this graph according to the list
+of options specified within the brackets.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="noresult" 
+    onclick="makeRequest('p9');"
+    value="g:=makeGraphImage(llp,lpc,lc,lsize)$GRIMAGE" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+The <a href="dbopmakeviewport2d.xhtml">makeViewport2D</a> command takes a
+list of options as a parameter. In this example the string "Lines" is 
+designated as the viewport's title.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5','p6','p7','p8','p9','p10']);"
+    value='makeViewport2D(g,[title("Lines")])$VIEW2D' />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{graph2donevariable.xhtml}
+<<graph2donevariable.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Functions of One Variable</div>
+  <hr/>
+Here we wish to plot a function y=f(x) on the interval [a,b]. As an 
+example, let's take the function y=sin(tan(x))-tan(sin(x)) on the interval
+[0,6]. Here is the simplest command that will do this:
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="draw(sin(tan(x))-tan(sin(x)),x=0..6)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Notice that Axiom compiled a function before the graph was put on the 
+screen. The expression sin(tan(x))-tan(sin(x)) was converted to a compiled
+function so that its value for various values of x could be computed 
+quickly and efficiently. Let's graph the same function on a different
+interval and this time we'll give the graph a title. The title is a string,
+which is an optional argument of the command 'draw'.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+ value='draw(sin(tan(x))-tan(sin(x)),x=10..16,title=="y=sin tan x-tan sin x")'
+  />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Once again the expression sin(tan(x))-tan(sin(x)) was converted to a 
+compiled function before any points were computed. If you want to graph the
+same function on a number of intervals, it's a good idea to write down a
+function definition so that the function only has to be compiled once. 
+Here's an example:
+<ul>
+ <li>
+  <input type="submit" id="p3" class="noresult" 
+    onclick="makeRequest('p3');"
+    value="f(x)==(x-1)*(x-2)*(x-3)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p3','p4']);"
+    value='draw(f,0..2,title=="y=f(x) on [0,2]")' />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p3','p5']);"
+    value='draw(f,0..4,title=="y=f(x) on [0,4]")' />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Notice that our titles can be whatever we want, as long as they are
+encloded by double quotes. However, a title which is too long to fit
+within the viewport title window will be clipped.
+<<page foot>>
+@
+
+\subsection{graph2dparametric.xhtml}
+<<graph2dparametric.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
  </head>
  <body>
 <<page head>>
-      graph2d not implemented
+  <div align="center">Parametric Curves</div>
+  <hr/>
+One way of producing interesting curves is by using parametric equations.
+Let x=f(t) and y=g(t) for two functions f and g as the parameter t ranges
+over an interval [a,b]. Here's an example:
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    
value="draw(curve(sin(t)*sin(2*t)*sin(3*t),sin(4*t)*sin(5*t)*sin(6*t)),t=0..2*%pi)"
 />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Here 0..2*%pi represents the interval over which the variable t ranges.
+In the case of parametric curves, Axiom will compile two functions, one for
+each of the functions f and g. You may also put a title on a graph. The
+title may be an arbitrary string and is an optional argument to the
+command 'draw'. For example:
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value='draw(curve(cos(t),sin(t)),t=0..2*%pi,title=="The Unit Circle")' />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+If you plan on plotting x=f(t), y=g(t) as t ranges over several intervals,
+you may want to define functions f and g, so that they need not be
+recompiled every time you create a new graph. Here's an example:
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="makeRequest('p3');"
+    value="f(t:SF):SF == sin(3*t/4)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="makeRequest('p4');"
+    value="g(t:SF):SF == sin(t)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p3','p4','p5']);"
+    value="draw(curve(f,g),0..%pi)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p3','p4','p6']);"
+    value="draw(curve(f,g),-%pi..2*%pi)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p3','p4','p7']);"
+    value="draw(curve(f,g),-4*%pi..4*%pi)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+These examples show how the curve changes as the range of the parameter
+t varies.
+<<page foot>>
+@
+
+\subsection{graph2dpolar.xhtml}
+<<graph2dpolar.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Polar Coordinates</div>
+  <hr/>
+Graphs in polar coordinates are given by an equation r=f(&#x003B8;) as
+theta ranges over an interval. This is equivalent to the parametric curve
+x=f(&#x003B8;)*cos(&#x003B8;),y=f(&#x003B8;)*sin(&#x003B8;) as &#x003B8;
+ranges over the same interval. You may create such curves using the
+command 'draw', with the optional argument 'coordinates==polar'. 
+Here are some examples:
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value='draw(1,t=0..2*%pi,coordinates==polar,title=="The Unit Circle")' />
+  <div id="ansp1"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+  value='draw(sin(17*t),t=0..2*%pi,coordinates==polar,title=="A Petal Curve")'
+   />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+You may also define your own functions, when you plan on plotting the same
+curve as &#x003B8; varies over several intervals.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="noresult" 
+    onclick="makeRequest('p3');"
+    value="f(t)==cos(4*t/7)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p3','p4']);"
+    value="draw(f,0..2*%pi,coordinates==polar)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p3','p5']);"
+    value="draw(f,0..14*%pi,coordinates==polar)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+For information on plotting graphs in other coordinate systems see the
+pages for the <a href="db.xhtml?CoordinateSystems">CoordinateSystems</a>
+domain.
 <<page foot>>
 @
 
+
 \subsection{graph3d.xhtml}
 <<graph3d.xhtml>>=
 <<standard head>>
  </head>
  <body>
 <<page head>>
-      graph3d not implemented
+  <div align="center">Three Dimensional Graphing</div>
+  <hr/>
+<ul>
+ <li> <a href="graph3dtwovariables.xhtml">Functions of Two Variables</a><br/>
+      Plot surfaces defined by an equation z=f(x,y)
+ </li>
+ <li> <a href="graph3dparametric.xhtml">Parametric Curves</a><br/>
+      Plot curves defined by equations x=f(t), y=g(t), z=h(t)
+ </li>
+ <li> <a href="graph3dtubeplots.xhtml">Parametric Tube Plots</a><br/>
+      Plot a tube around a parametric space curve
+ </li>
+ <li> <a href="graph3dsurfaces.xhtml">Parametric Surfaces</a><br/>
+      Plot surfaces defined by x=f(u,v), y=g(u,v), z=h(u,v)
+ </li>
+ <li> <a href="graph3dobjects.xhtml">Building Objects</a><br/>
+      Create objects constructed from geometric primitives
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{graph3dobjects.xhtml}
+<<graph3dobjects.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Building Three Dimensional Objects from Primatives</div>
+  <hr/>
+Rather than using the <a href="dbopdraw.xhtml">draw</a> and
+<a href="dbopmakeobject.xhtml">makeObject</a> commands, you can create
+three-dimensional graphs from primitives. Operation 
+<a href="dbopcreate3space.xhtml">create3Space</a> creates a three-space
+object to which points, curves, and polygons can be added using the
+operations from the <a href="db.xhtml?ThreeSpace">ThreeSpace</a> domain.
+The resulting object can then be displayed in a viewport using
+<a href="dbopmakeviewport3d.xhtml">makeViewport3D</a>.
+
+Create the empty three-space object space.
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="space:=create3Space()$(ThreeSpace DFLOAT)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+Objects can be sent to this space using the operations exported by the
+<a href="db.xhtml?ThreeSpace">ThreeSpace</a> domain. The following examples
+place curves into space.
+
+Add these three curves to the space.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="handleFree(['p1','p2']);"
+    value="closedCurve(space,[ 
[0,30,20],[0,30,30],[0,40,30],[0,40,100],[0,30,100],[0,30,110],[0,60,110],[0,60,100],[0,50,100],[0,50,30],[0,60,30],[0,60,20]])"
 />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p1','p3']);"
+    value="closedCurve(space,[ 
[80,0,30],[80,0,100],[70,0,110],[40,0,110],[30,0,100],[30,0,90],[40,0,90],[40,0,95],[45,0,100],[65,0,100],[70,0,95],[70,0,35]])"
 />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p1','p4']);"
+    value="closedCurve(space,[ 
[70,0,35],[65,0,30],[45,0,30],[40,0,35],[40,0,60],[50,0,60],[50,0,70],[30,0,70],[30,0,30],[40,0,20],[70,0,20],[80,0,30]])"
 />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Create and display the viewport using 
+<a href="dbopmakeviewport3d.xhtml">makeViewport3D</a>. Options may also be
+given but here are displayed as a list with values enclosed in parentheses.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p1','p2','p3','p4','p5']);"
+    value='makeViewport3D(space,title=="Letters")' />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+<br/>
+<br/>
+Cube Example
+<br/>
+As a second example of the use of primitives, we generate a cube using
+a polygon mesh. It is important to use a consistent orientation of the
+polygons for correct generation of three-dimensional objects.
+
+Again start with an empty three-space object.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="makeRequest('p6');"
+    value="spaceC:=create3Space()$(ThreeSpace DFLOAT)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+For convenience, give the <a href="db.xhtml?DoubleFloat">DoubleFloat</a>
+values +1 and -1 names.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="makeRequest('p7');"
+    value="x:DFLOAT:=1" />
+  <div id="ansp7"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="makeRequest('p8');"
+    value="y:DFLOAT:=-1" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+Define the vertices of the cube.
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p7','p8','p9']);"
+    value="a:=point [x,x,y,1::DFLOAT]$(Point DFLOAT)" />
+  <div id="ansp9"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p7','p8','p10']);"
+    value="b:=point [y,x,y,4::DFLOAT]$(Point DFLOAT)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p7','p8','p11']);"
+    value="c:=point [y,x,x,8::DFLOAT]$(Point DFLOAT)" />
+  <div id="ansp11"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p7','p8','p12']);"
+    value="d:=point [x,x,x,12::DFLOAT]$(Point DFLOAT)" />
+  <div id="ansp12"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p13" class="subbut" 
+    onclick="handleFree(['p7','p8','p13']);"
+    value="e:=point [x,y,y,16::DFLOAT]$(Point DFLOAT)" />
+  <div id="ansp13"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p14" class="subbut" 
+    onclick="handleFree(['p7','p8','p14']);"
+    value="f:=point [y,y,y,20::DFLOAT]$(Point DFLOAT)" />
+  <div id="ansp14"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p15" class="subbut" 
+    onclick="handleFree(['p7','p8','p15']);"
+    value="g:=point [y,y,x,24::DFLOAT]$(Point DFLOAT)" />
+  <div id="ansp15"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p16" class="subbut" 
+    onclick="handleFree(['p7','p8','p16']);"
+    value="h:=point [x,y,x,27::DFLOAT]$(Point DFLOAT)" />
+  <div id="ansp16"><div></div></div>
+ </li>
+</ul>
+Add the faces of the cube as polygons to the space using a consistent
+orientation.
+<ul>
+ <li>
+  <input type="submit" id="p17" class="subbut" 
+    
onclick="handleFree(['p6','p7','p8','p9','p10','p11','p12','p13','p14','p15','p16','p17']);"
+    value="polygon(spaceC,[d,c,g,h]); polygon(spaceC,[d,h,e,a]); 
polygon(spaceC,[c,d,a,b]); polygon(spaceC,[g,c,b,f]); 
polygon(spaceC,[h,g,f,e]); polygon(spaceC,[e,f,b,a])" />
+  <div id="ansp17"><div></div></div>
+ </li>
+</ul>
+Create and display the viewport.
+<ul>
+ <li>
+  <input type="submit" id="p18" class="subbut" 
+    
onclick="handleFree(['p6','p7','p8','p9','p10','p11','p12','p13','p14','p15','p16','p17','p18']);"
+    value='makeViewport3D(spaceC,title=="Cube")' />
+  <div id="ansp18"><div></div></div>
+ </li>
+</ul>
+<<page foot>>
+@
+
+\subsection{graph3dparametric.xhtml}
+<<graph3dparametric.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Parametric Space Curves</div>
+  <hr/>
+This page describes the plotting in three dimensional space of a curve
+defined by the parametric equations x=f(t), y=g(t), z=h(t), where f,g, and
+h are functions of the parameter t which ranges over a specified interval.
+The basic draw command for this function utilizes either the uncompiled
+functions or compiled functions format and uses the 
+<a href="dbopcurve.xhtml">curve</a> command to specify the three
+functions for the x, y, and z components of the curve. The general format
+for uncompiled functions is:
+<pre>
+   draw(curve(f(t),g(t),h(t)), t=a..b)
+</pre>
+where a..b is the segment defining the interval [a,b] over which the
+parameter t ranges. In this case the functions are not compiled until
+the draw command is executed. Here is an example:
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="draw(curve(cos(t),sin(t),t),t=-12..12)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+In the case of compiled functions, the functions are named and compiled
+independently. This is useful if you intend to use the functions often,
+or if the functions are long and complex. The following lines show 
+functions whose parameters are of the type SmallFloat. The functions
+are compiled and stored by Axiom when entered.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="noresult" 
+    onclick="makeRequest('p2');"
+    value="i1(t:SF):SF==sin(t)*cos(3*t/5)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="noresult" 
+    onclick="makeRequest('p3');"
+    value="i2(t:SF):SF==cos(t)*cos(3*t/5)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="noresult" 
+    onclick="makeRequest('p4');"
+    value="i3(t:SF):SF==cos(t)*sin(3*t/5)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Once the functions are compiled the draw command only needs the names of
+the functions to execute. Here is a compiled functions example:
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p2','p3','p4','p5']);"
+    value="draw(curve(i1,i2,i3),0..15*%pi)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Note that the parameter range does not take the variable name as in the
+case of uncompiled functions. It is understood that the indicated range
+applies to the parameter of the functions, which in this case is t.
+<<page foot>>
+@
+
+\subsection{graph3dsurfaces.xhtml}
+<<graph3dsurfaces.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Parametric Surfaces</div>
+  <hr/>
+Graphing a surface defined by x=f(u,v), y=g(u,v), z=h(u,v). This page
+describes plotting of surfaces defined by the parametric equations of two
+variables, x=f(u,v), y=g(u,v), and z=h(u,v), for which the ranges of u and
+v are explicitly defined. The basic draw command for this function utilizes
+either the uncompiled function or compiled function format and uses the
+<a href="dbopsurface.xhtml">surface</a> command to specify the three 
+functions for the x, y, and z components of the surface. The general 
+format for uncompiled functions is:
+<pre>
+    draw(surface(f(u,v),g(u,v),h(u,v)), u=a..b, v=c..d)
+</pre>
+where a..b and c..d are segments defining the intervals [a,b] and [c,d]
+over which the parameters u and v span. In this case the functions are 
+not compiled until the draw command is executed. Here is an example of a
+surface plotted using the parabolic cylindrical coordinate system option:
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    
value="draw(surface(u*cos(v),u*sin(v),v*cos(u)),u=-4..4,v=0..2*%pi,coordinates==parabolicCylindrical)"
 />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+In the case of compiled functions, the functions are named and compiled
+independentlyh. This is useful if you intend to use the functions often,
+or if the functions are long and complex. The following lines show functions
+whose parameters are of the type SmallFloat. The functions are compiled and
+stored by Axiom when entered.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="noresult" 
+    onclick="makeRequest('p2');"
+    value="n1(u:SF,v:SF):SF == u*cos(v)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="noresult" 
+    onclick="makeRequest('p3');"
+    value="n2(u:SF,v:SF):SF == u*sin(v)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="noresult" 
+    onclick="makeRequest('p4');"
+    value="n3(u:SF,v:SF):SF == u" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Once the function is compiled the draw command only needs the names of
+the functions to execute. Here is a compiled functions example plotted
+using the toroidal coordinate system option:
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p2','p3','p4','p5']);"
+    
value="draw(surface(n1,n2,n3),1.0..4.0,1.0..4*%pi,coordinates==toroidal(1$SF))" 
/>
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Note that the parameter ranges do not take the variable names as in the case
+of uncompiled functions. The variables are entered in the order in which 
+they are defined in the function specification. In this case the first
+range specifies the u-variable and the second range specifies the v-variable.
+<<page foot>>
+@
+
+\subsection{graph3dtubeplots.xhtml}
+<<graph3dtubeplots.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Parametric Tube Plots</div>
+  <hr/>
+This page describes the plotting in three dimensional space of a tube
+around a parametric space curve defined by the parametric equations
+x=f(t), y=g(t), z=h(t), where f, g, and h are functions of the parameter t
+which ranges over a specified interval. The basic draw command for this
+function utilizes either the uncompiled functions or compiled functions
+format and uses the <a href="dbopcurve.xhtml">curve</a> command to specify
+the three functions for the x, y, and z components of the curve. This uses
+the same format as that for space curves except that it requires a
+specification for the radius of the tube. If the radius of the tube is 0,
+then the result is the space curve itself. The general format for 
+uncompiled functions is:
+<pre>
+    draw(curve(f(t),g(t),h(t)),t=a..b,tubeRadius==r)
+</pre>
+where a..b is the segment defining the interval [a,b] over which the
+parameter t ranges, and the tubeRadius is indicated by the variable r. 
+In this case the functions are not compiled until the draw command is
+executed. Here is an example:
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    
value="draw(curve(sin(t)*cos(3*t/5),cos(t)*cos(3*t/5),cos(t)*sin(3*t/5)),t=0..15*%pi,tubeRadius==.15)"
 />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+In the case of compiled functions, the functions are named and compiled
+independently. This is useful if you intend to use the functions often,
+or if the functions are long and complex. The following lines show 
+functions whose parameters are of the type SmallFloat. The functions are
+compiled and stored by Axiom when entered.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="noresult" 
+    onclick="makeRequest('p2');"
+    value="t1(t:SF):SF==4/(2-sin(3*t))*cos(2*t)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p3" class="noresult" 
+    onclick="makeRequest('p3');"
+    value="t2(t:SF):SF==4/(2-sin(3*t))*sin(2*t)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="noresult" 
+    onclick="makeRequest('p4');"
+    value="t3(t:SF):SF==4/(2-sin(3*t))*cos(3*t)" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+Once the function is compiled the draw command only needs the names of
+the functions to execute. Here is a compiled functions example of a trefoil
+knot:
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p2','p3','p4','p5']);"
+    value="draw(curve(t1,t2,t3),0..2*%pi,tubeRadius==.2)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Note that the parameter range does not take the variable name as in the
+case of uncompiled functions. It is understood that the indicated range
+applies to the parameter of the functions, which in this case is t. 
+Typically, the radius of the tube should be set between 0 and 1. A radius
+of less than 0 results in it's positive counterpart and a radius of greater
+than one cause self-intersection.
+<<page foot>>
+@
+
+\subsection{graph3dtwovariables.xhtml}
+<<graph3dtwovariables.xhtml>>=
+<<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
+ </head>
+ <body>
+<<page head>>
+  <div align="center">Functions of Two Variables</div>
+  <hr/>
+This page describes the plotting of surfaces defined by an equation of
+two variables, z=f(x,y), for which the ranges of x and y are explicitly
+defined. The basic draw command for this function utilizes either the
+uncompiled function or compiled function format. The general format for an
+uncompiled function is:
+<pre>
+   draw(f(x,y), x=a..b, y=c..d)
+</pre>
+where a..b and c..d are segments defining the intervals [a,b] and [c,d]
+over which the variables x and y span. In this case, the function is not
+compiled until the draw command is executed. Here is an example:
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="draw(cos(x*y),x=-3..3,y=-3..3)" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+In the case of a compiled function, the function is named and compiled
+independently. This is useful if you intend to use a function often, or
+if the function is long and complex. The following line shows a function
+whose parameters are of the type SmallFloat. The function is compiled and
+stored by Axiom when it is entered.
+<ul>
+ <li>
+  <input type="submit" id="p2" class="noresult" 
+    onclick="makeRequest('p2');"
+    value="f(x:SF,y:SF):SF==sin(x)*cos(y)" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+Once the function is compiled the draw command only needs the name of the
+function to execute. Here is a compiled function example:
+<ul>
+ <li>
+  <input type="submit" id="p3" class="subbut" 
+    onclick="handleFree(['p2','p3']);"
+    value="draw(f,-%pi..%pi,-%pi..%pi)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+</ul>
+Note that the parameter ranges do not take the variable names as in the
+case of uncompiled functions. The variables are entered in the order in
+which they are defined in the function specificationl. In this case the
+first range specifies the x-variable and the second range specifies the
+y-variable.
 <<page foot>>
 @
 
@@ -35189,10 +36625,171 @@ infinity; the step size is any positive integer.
 \subsection{linconversion.xhtml}
 <<linconversion.xhtml>>=
 <<standard head>>
+  <script type="text/javascript">
+<<handlefreevars>>
+<<axiom talker>>
+  </script>
  </head>
  <body>
 <<page head>>
-      linconversion not implemented
+  <div align="center">Conversion</div>
+  <hr/>
+Conversion is the process of changing an object of one type into an
+object of another type. The syntax for conversion is object::newType.
+<hr/>
+By default, 3 has the type
+<a href="db.html?PositiveInteger">PositiveInteger</a>
+<ul>
+ <li>
+  <input type="submit" id="p1" class="subbut" 
+    onclick="makeRequest('p1');"
+    value="3" />
+  <div id="ansp1"><div></div></div>
+ </li>
+</ul>
+We can change thisinto an object of type 
+<a href="db.html?Fraction(Integer)">Fraction Integer</a> by using "::".
+<ul>
+ <li>
+  <input type="submit" id="p2" class="subbut" 
+    onclick="makeRequest('p2');"
+    value="3::Fraction Integer" />
+  <div id="ansp2"><div></div></div>
+ </li>
+</ul>
+A coercion is a special kind of conversion that Axiom is allowed to do
+automatically when you enter an expression. Coercions are usually 
+somewhat safer than more general conversions. The Axiom library contains
+operations called 
+<a href="dbopcoerce.xhtml">coerce</a> and
+<a href="dbopconvert.xhtml">convert</a>. Only the
+<a href="dbopcoerce.xhtml">coerce</a> operations can be used by the
+interpreter to change an object into an object of another type unless
+you explicitly use a "::".
+
+By now you will be quite familiar with what types and modes look like.
+It is useful to think of a type or mode as a pattern for what you want
+the result to be. Let's start with a square matrix of polynomials with
+complex rational number coefficients.
+<ul>
+ <li>
+  <input type="submit" id="p3" class="noresult" 
+    onclick="makeRequest('p3');"
+    value="m:SquareMatrix(2,POLY COMPLEX FRAC INT)" />
+  <div id="ansp3"><div></div></div>
+ </li>
+ <li>
+  <input type="submit" id="p4" class="subbut" 
+    onclick="handleFree(['p3','p4']);"
+    value="m:=matrix [ [x-3/4*%i,z*y^2+1/2],[3/7*%i*y^4-x,12-%i*9/5]]" />
+  <div id="ansp4"><div></div></div>
+ </li>
+</ul>
+We first want to interchange the <a href="db.xthml?Complex">Complex</a>
+and <a href="db.xhtml?Fraction">Fraction</a> layers. We do the conversion
+by doing the interchange in the type expression.
+<ul>
+ <li>
+  <input type="submit" id="p5" class="subbut" 
+    onclick="handleFree(['p3','p4','p5']);"
+    value="m1:=m::SquareMatrix(2,POLY FRAC COMPLEX INT)" />
+  <div id="ansp5"><div></div></div>
+ </li>
+</ul>
+Interchange the <a href="db.xhtml?Polynomial">Polynomial</a> and the
+<a href="db.xhtml?Fraction">Fraction</a> levels.
+<ul>
+ <li>
+  <input type="submit" id="p6" class="subbut" 
+    onclick="handleFree(['p3','p4','p5','p6']);"
+    value="m2:=m1::SquareMatrix(2,FRAC POLY COMPLEX INT)" />
+  <div id="ansp6"><div></div></div>
+ </li>
+</ul>
+Interchange the <a href="db.xhtml?Polynomial">Polynomial</a> and the
+<a href="db.xhtml?Complex">Complex</a> levels.
+<ul>
+ <li>
+  <input type="submit" id="p7" class="subbut" 
+    onclick="handleFree(['p3','p4','p5','p6','p7']);"
+    value="m3:=m2::SquareMatrix(2,FRAC COMPLEX POLY INT)" />
+  <div id="ansp7"><div></div></div>
+ </li>
+</ul>
+All the entries have changed types, although in comparing the last two
+results only the entry in the lower left corner looks different. We did
+all the intermediate steps to show you what Axiom can do.
+
+In fact, we could have combined all these into one conversion.
+<ul>
+ <li>
+  <input type="submit" id="p8" class="subbut" 
+    onclick="handleFree(['p3','p4','p8']);"
+    value="m::SquareMatrix(2,FRAC COMPLEX POLY INT)" />
+  <div id="ansp8"><div></div></div>
+ </li>
+</ul>
+
+There are times when Axiom is not able to do the conversion in one step.
+You may need to break up the transformation into several conversions in 
+order to get an object of the desired type.
+
+We cannot move either the <a href="db.xhtml?Fraction">Fraction</a> or
+<a href="db.xhtml?Complex">Complex</a> above (or to the left of,
+depending on how you look at it) 
+<a href="db.xhtml?SquareMatrix">SquareMatrix</a> because each of these
+levels requires that its argument type have commutative multiplication,
+whereas <a href="db.xhtml?SquareMatrix">SquareMatrix</a> does not.
+(<a href="db.xhtml?Fraction">Fraction</a> requires that its argument 
+belong to the category 
+<a href="db.xhtml?IntegralDomain">IntegralDomain</a> and 
+<a href="db.xhtml?Complex">Complex</a> requires that its argument belongs to
+<a href="db.xhtml?CommutativeRing">CommutativeRing</a>. See the
+<a href="axbook/section-2.1.xhtml">Jenks section 2.1</a> for a brief
+discussion of categories. The <a href="db.xhtml?Integer">Integer</a> level
+did not move anywhere because it does not allow any arguments. We also did
+not move the <a href="db.xhtml?SquareMatrix">SquareMatrix</a> part
+anywhere, but we could have. Recall that m looks like this:
+<ul>
+ <li>
+  <input type="submit" id="p9" class="subbut" 
+    onclick="handleFree(['p3','p4','p9']);"
+    value="m" />
+  <div id="ansp9"><div></div></div>
+ </li>
+</ul>
+If we want a polynomial with matrxi coefficients rather than a matrix with
+polynomial entries, we can just do the conversion.
+<ul>
+ <li>
+  <input type="submit" id="p10" class="subbut" 
+    onclick="handleFree(['p3','p4','p10']);"
+    value="m::POLY SquareMatrix(2,COMPLEX FRAC INT)" />
+  <div id="ansp10"><div></div></div>
+ </li>
+</ul>
+We have not yet used modes for any conversions. Modes are a great 
+shorthand for indicating the type of the object you want. Instead of
+using the long type expression in the last example we could have 
+simply said this:
+<ul>
+ <li>
+  <input type="submit" id="p11" class="subbut" 
+    onclick="handleFree(['p3','p4','p11']);"
+    value="m::POLY ?" />
+  <div id="ansp11"><div></div></div>
+ </li>
+</ul>
+We can also indicate more structure if we want the entries of the matrices
+to be fractions.
+<ul>
+ <li>
+  <input type="submit" id="p12" class="subbut" 
+    onclick="handleFree(['p3','p4','p12']);"
+    value="m::POLY SquareMatrix(2,FRAC ?)" />
+  <div id="ansp12"><div></div></div>
+ </li>
+</ul>
 <<page foot>>
 @
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]