Difference between revisions of "Asymptote: 3D graphics"
Line 3: | Line 3: | ||
==Three== | ==Three== | ||
− | Three is a module in Asymptote that allows the user to create three dimensional graphics. Usually all you must do is import three, then change from using doubles to using triples as coordinates. Though some functions do not work when three is active. In order to fill a surface, for example, one must define a surface and draw that. instead of using [[asymptote: Filling|filldraw]]. This is also described <url>http://www.artofproblemsolving.com/Forum/viewtopic.php?f=519&t=399845 here</url>. | + | Three is a module in Asymptote that allows the user to create three dimensional graphics. Usually all you must do is import three, |
+ | <code> | ||
+ | import three; | ||
+ | </code> | ||
+ | then change from using doubles to using triples as coordinates. Though some functions do not work when three is active. In order to fill a surface, for example, one must define a surface and draw that. instead of using [[asymptote: Filling|filldraw]]. This is also described <url>http://www.artofproblemsolving.com/Forum/viewtopic.php?f=519&t=399845 here</url>. | ||
==Projection== | ==Projection== | ||
You can use | You can use |
Revision as of 23:38, 31 May 2011
Contents
Three
Three is a module in Asymptote that allows the user to create three dimensional graphics. Usually all you must do is import three,
import three;
then change from using doubles to using triples as coordinates. Though some functions do not work when three is active. In order to fill a surface, for example, one must define a surface and draw that. instead of using filldraw. This is also described <url>http://www.artofproblemsolving.com/Forum/viewtopic.php?f=519&t=399845 here</url>.
Projection
You can use
currentprojection=orthographic(x,y,z);
To change current the view.
currentprojection=perspective(x,y,z);
Does the same thing, but is distorts the picture to copy actual viewing.
Example:
base code:
import three; /* perspective line /* draw(unitcube,palegrey);
Using
currentprojection=orthographic(1,1/2,1/2);
We get a unit cube as:
Using
currentprojection=perspective(1,1/2,1/2);
We get a unit cube as:
Example
import three; unitsize(1cm); size(200); currentprojection=perspective(1/3,-1,1/2); draw((0,0,0)--(1,0,0)--(1,1,0)--(0,1,0)--cycle,red); draw((0,0,0)--(0,0,1),red); draw((0,1,0)--(0,1,1),red); draw((1,1,0)--(1,1,1),red); draw((1,0,0)--(1,0,1),red); draw((0,0,1)--(1,0,1)--(1,1,1)--(0,1,1)--cycle,red); draw((0,0,0)--(1,0,0)--(1,1,0)--cycle,red); draw((0,0,0)--(1,1,0)--(1,1,1)--cycle,blue); label("$o$",(0,0,0),NW); label("$x=1$",(0.5,0,0),S); label("$y=1$",(1,1,0.5),E); label("$z=1$",(1,0.5,0),SE); label("$c$",(0.5,0.5,0.5),N);[/asy]
Which renders to
Other 3D Modules
Other modules in Asymptote that are for 3D are: graph3, grid3, contour3