🔗Asymptote Gallery for Category “Three.asy” #17
đź”—three-fig001

Show three/fig0010.asy on Github.
Generated with Asymptote 3.00-0.
Categories : Examples 3D | Three.asy
Tags : #Direction (3D) | #Patch | #Path3 | #Surface | #Triple
import three; size(12cm); currentprojection=orthographic(1,1,1.5); currentlight=(1,0,1); triple P00=-X-Y+0.5*Z, P03=-X+Y, P33=X+Y, P30=X-Y; triple[][] P={ {P00,P00+(-0.5,0.5,-1),P03+(0,-0.5,1),P03}, {P00+(0.5,-0.5,-1),(-0.5,-0.5,0.5),(-0.5,0.5,-1.5),P03+(0.5,0,1)}, {P30+(-0.5,0,1),(0.5,-0.5,-1.5),(0.5,0.5,1),P33+(-0.5,0,1)}, {P30,P30+(0,0.5,1),P33+(0,-0.5,1),P33} }; surface s=surface(patch(P)); draw(s,15,15,yellow,meshpen=grey); draw(sequence(new path3(int i){ return s.s[i].external();},s.s.length), bp+red); dot("P[0][0]",P[0][0], align=N, black); dot("P[0][3]",P[0][3], black); dot("P[3][3]",P[3][3], align=S, black); dot("P[3][0]",P[3][0], align=W, black); draw(Label("P[0][1]",align=SW,EndPoint),P[0][0]--P[0][1], Arrow3); draw(Label("P[1][0]",align=SE,EndPoint),P[0][0]--P[1][0], Arrow3); draw(Label("P[0][2]",align=E,EndPoint),P[0][3]--P[0][2], Arrow3); draw(Label("P[1][3]",EndPoint),P[0][3]--P[1][3], Arrow3); draw(Label("P[2][3]",EndPoint),P[3][3]--P[2][3], Arrow3); draw(Label("P[3][2]",EndPoint),P[3][3]--P[3][2], Arrow3); draw(Label("P[3][1]",EndPoint),P[3][0]--P[3][1], Arrow3); draw(Label("P[2][0]", align=W,EndPoint),P[3][0]--P[2][0], Arrow3); dot("P[1][1]",P[1][1], align=S); dot("P[1][2]",P[1][2], align=E); dot("P[2][2]",P[2][2], align=N); dot("P[2][1]",P[2][1], align=W); for (int i=0; i < s.s.length; ++i) dot(s.s[i].internal(), bp+red); if(!is3D()) shipout(bbox(Fill(lightgrey)));
đź”—three-fig002

Show three/fig0020.asy on Github.
Generated with Asymptote 3.00-0.
Categories : Examples 3D | Three.asy
Tags : #Shading (3D) | #Palette | #Patch | #Path3 | #Surface | #Triple
import three; import palette; size(12cm); currentprojection=orthographic(1,1,1.5); currentlight=(1,0,1); triple P00=-X-Y+0.5*Z, P03=-X+Y, P33=X+Y, P30=X-Y; triple[][] P={ {P00,P00+(-0.5,0.5,-1),P03+(0,-0.5,1),P03}, {P00+(0.5,-0.5,-1),(-0.5,-0.5,0.5),(-0.5,0.5,-1.5),P03+(0.5,0,1)}, {P30+(-0.5,0,1),(0.5,-0.5,-1.5),(0.5,0.5,1),P33+(-0.5,0,1)}, {P30,P30+(0,0.5,1),P33+(0,-0.5,1),P33} }; surface s=surface(patch(P)); s.colors(palette(s.map(zpart),Gradient(yellow,red))); // s.colors(palette(s.map(zpart),Rainbow())); draw(s); draw(sequence(new path3(int i){ return s.s[i].external();},s.s.length), bp+orange); if(!is3D()) shipout(bbox(Fill(lightgrey)));
đź”—three-fig003

Show three/fig0030.asy on Github.
Generated with Asymptote 3.00-0.
Categories : Examples 3D | Three.asy
Tags : #Shading (3D) | #Palette | #Patch | #Path3 | #Surface | #Triple
import three; size(10cm); currentlight=(0,0,1); surface sf=surface(patch(P=new triple[][] { {(0,0,0),(1,0,0),(1,0,0),(2,0,0)}, {(0,1,0),(1,0,1),(1,0,1),(2,1,0)}, {(0,1,0),(1,0,-1),(1,0,-1),(2,1,0)}, {(0,2,0),(1,2,0),(1,2,0),(2,2,0)} })); draw(sf,surfacepen=yellow); draw(sf.s[0].vequals(0.5),squarecap+2bp+blue,currentlight); draw(sf.s[0].uequals(0.5),squarecap+2bp+red,currentlight);
đź”—three-fig004

Show three/fig0040.asy on Github.
Generated with Asymptote 3.00-0.
Categories : Examples 3D | Three.asy
Tags : #Arrow (3D) | #Triple | #Arc (3D) | #Direction (3D) | #Plan
import three; size(8cm, 0); real radius=1, theta=37, phi=60; currentprojection=perspective(4, 1, 2); // Planes pen bg=gray(0.9)+opacity(0.5); draw(surface((1.2, 0, 0)--(1.2, 0, 1.2)--(0, 0, 1.2)--(0, 0, 0)--cycle), bg, bg); draw(surface((0, 1.2, 0)--(0, 1.2, 1.2)--(0, 0, 1.2)--(0, 0, 0)--cycle), bg, bg); draw(surface((1.2, 0, 0)--(1.2, 1.2, 0)--(0, 1.2, 0)--(0, 0, 0)--cycle), bg, bg); real r=1.5; draw(Label("$x$", 1), O--r*X, Arrow3(HookHead3)); draw(Label("$y$", 1), O--r*Y, Arrow3(HookHead3)); draw(Label("$z$", 1), O--r*Z, Arrow3(HookHead3)); label("$\rm O$", (0, 0, 0), W); triple pQ=radius*dir(theta, phi); // Point Q // triple pQ=radius*expi(radians(theta), radians(phi)); // Point Q draw(O--radius*dir(90, phi)^^O--pQ, dashed); dot("$R*\mathrm{dir}\left(\theta, \phi\right)$", pQ); // Arcs draw("$\theta$", reverse(arc(O, 0.5*pQ, 0.5*Z)), N+0.3E, Arrow3(HookHead2)); draw("$\phi$", arc(O, 0.5*X, 0.5*(pQ.x, pQ.y, 0)), N+0.3E, Arrow3(HookHead2)); path3 p3=O--arc(O, radius, 0, phi, 90, phi)--cycle; draw(surface(p3), blue+opacity(0.5));
đź”—three-fig005

Show three/fig0050.asy on Github.
Generated with Asymptote 3.00-0.
Categories : Examples 3D | Three.asy
Tags : #Geometry (3D) | #Wire frame | #Line type | #Intersection | #Interp
import three; import math; size(8cm,0); currentprojection=obliqueX; real h=2; triple A =(0,0,h), B=(h,0,0), C=(0,h,0), D=(0,0,0); triple Ip=midpoint(A--C), J=midpoint(A--B); triple K=shift((0,0,-0.25*h))*A; triple M=interp(K,J,intersect(K,J,normal(new triple[]{B,C,D}),D)); triple Np=interp(K,Ip,intersect(K,Ip,normal(new triple[]{B,C,D}),D)); dot("$A$", A, align=Z); dot("$B$", B, align=S); dot("$C$", C, align=S); dot("$D$", D, align=W); dot("$I$", Ip, align=N); dot("$J$", J, align=W); dot("$K$", K, align=NE); dot("$M$", M, align=SE); dot("$N$", Np, align=S); draw(A--B--C--cycle^^B--M^^C--Np^^J--M^^Ip--Np); draw(A--D--C^^D--B^^J--K^^K--Ip, dashed);
đź”—three-fig006

Show three/fig0060.asy on Github.
Generated with Asymptote 3.00-0.
Categories : Examples 3D | Three.asy
Tags : #Label (3D) | #Projection (3D) | #Plan
settings.render=0; import three; size(4cm,0); currentprojection=perspective((45,45,30)); path3 YZ=plane((0,4,0),(0,0,4)); draw("$x$",project(O--X),Arrow); draw("$y$",project(O--Y),Arrow); draw("$z$",project(O--Z),Arrow); draw(YZ); label(scale(5)*project("A",Y,Z,(0,1,1)));
đź”—three-fig007

From the Asymptote forum.
Show three/fig0070.asy on Github.
Generated with Asymptote 3.00-0.
Categories : Examples 3D | Three.asy
Tags : #Bsp | #Wire frame | #Plan
import bsp; typedef path3[] shape; shape operator *(transform3 T, shape p){ shape os; for(path3 g:p) os.push(T*g); return os; } path3 path(triple[] T){ path3 P; for(triple i:T) P=P--i; return P; } void addshapes(face[] F, shape[] shp, pen drawpen=currentpen, pen fillpen=white) { for(int i=0; i < shp.length; ++i) for(int j=0; j < shp[i].length; ++j) { path3 g=shp[i][j]; picture pic=F.push(g); filldraw(pic, project(g), fillpen, drawpen); // filldraw(pic, g, currentlight.intensity(F[F.length-1].point)*fillpen, drawpen); } } shape cylinder(real R=1, real H=1, int n=18){ shape Cyl; triple[] CTop; triple[] CBot; for(int i=0; i <= n; ++i) CBot.push((R*cos(2pi*i/n), R*sin(2pi*i/n), 0)); CTop = CBot+(0, 0, H); for(int i=0; i < n; ++i) Cyl.push(CBot[i]--CBot[i+1]--CTop[i+1]--CTop[i]--cycle); path3 P=path(CBot)--cycle; Cyl.push(P); Cyl.push(shift(H*Z)*P); return Cyl; } shape rightslab(real x=1, real y=1, real z=1){ shape slab; slab[0] = (0, 0, 0)--(1, 0, 0)--(1, 1, 0)--(0, 1, 0)--cycle; slab[1] = (0, 0, 0)--(1, 0, 0)--(1, 0, 1)--(0, 0, 1)--cycle; slab[2] = (1, 0, 0)--(1, 1, 0)--(1, 1, 1)--(1, 0, 1)--cycle; slab[3] = (1, 1, 0)--(0, 1, 0)--(0, 1, 1)--(1, 1, 1)--cycle; slab[4] = (0, 1, 0)--(0, 0, 0)--(0, 0, 1)--(0, 1, 1)--cycle; slab[5] = (0, 0, 1)--(1, 0, 1)--(1, 1, 1)--(0, 1, 1)--cycle; return scale(x, y, z)*slab; } size(10cm, 0); triple cam=(1600, 200, 150); //currentprojection=orthographic(1600, 800, 400); currentprojection=perspective(cam); //Far away! currentlight=rotate(-45, Z)*(cam+(0, 0, 1000)); real Blen = 180; real Bwdt = 30; real Bhgt = 3; real Clen = 130; real Cwdt = 50; real Chgt = 50; real cylr = 7.5; real cylh = 37.0 ; shape slab1 = shift(-Bwdt/2*Y-Bhgt/2*Z+Clen/2*X)*rightslab(Blen, Bwdt, Bhgt); shape slab2 = shift(-Cwdt/2*Y-Chgt/2*Z-Clen/2*X)*rightslab(Clen, Cwdt, Chgt); shape cyl1 = shift((Blen+Clen/2-2*cylr)*X-(cylh/2)*Z)*cylinder(R=cylr, H=cylh); shape[] group1={slab1}; shape[] group2={slab2}; shape[] group3={cyl1}; face[] faces; addshapes(faces, group1, drawpen=linewidth(0.25bp), fillpen=opacity(0.35)+red); addshapes(faces, group2, drawpen=linewidth(0.25bp), fillpen=opacity(0.5)+lightblue); addshapes(faces, group3, drawpen=linewidth(0.25bp), fillpen=opacity(0.5)+lightyellow); add(faces); shipout(format="pdf", bbox(3mm, white));
đź”—three-fig008

Show three/fig0080.asy on Github.
Generated with Asymptote 3.00-0.
Categories : Examples 3D | Three.asy
Tags : #Bsp | #Wire frame | #Line type | #Plan
import bsp; typedef path3[] shape; shape operator *(transform3 T, shape p){ shape os; for(path3 g:p) os.push(T*g); return os; } path3 path(triple[] T){ path3 P; for(triple i:T) P=P--i; return P; } void addshapes(face[] F, shape[] shp, pen drawpen=currentpen, pen fillpen=white) { for(int i=0; i < shp.length; ++i) for(int j=0; j < shp[i].length; ++j) { path3 g=shp[i][j]; picture pic=F.push(g); if(fillpen != nullpen) filldraw(pic,project(g),fillpen, drawpen); else draw(pic,project(g),drawpen); // filldraw(pic,g,currentlight.intensity(F[F.length-1].point)*fillpen, drawpen); } } shape cylinder(real R=1, real H=1, int n=18){ shape Cyl; triple[] CTop; triple[] CBot; for(int i=0; i <= n; ++i) CBot.push((R*cos(2pi*i/n), R*sin(2pi*i/n),0)); CTop = CBot+(0,0,H); for(int i=0; i < n; ++i) Cyl.push(CBot[i]--CBot[i+1]--CTop[i+1]--CTop[i]--cycle); path3 P=path(CBot)--cycle; Cyl.push(P); Cyl.push(shift(H*Z)*P); return Cyl; } size(10cm,0); currentprojection=orthographic(1,1,1); shape cyl1 = cylinder(R=1, H=2); shape[] group={cyl1}; face[] hidden, visible; addshapes(hidden, group, drawpen=linewidth(bp)); addshapes(visible, group, drawpen=dotted, fillpen=nullpen); add(hidden); add(visible); shipout(format="pdf");
đź”—three-fig009

Show three/fig0090.asy on Github.
Generated with Asymptote 3.00-0.
Categories : Examples 3D | Three.asy
Tags : #Plan | #Transform (3D) | #Projection (3D) | #Fill/Unfill | #Path3 | #Triple
size(10cm,0); import three; currentprojection=obliqueX; triple v1=(4,0,0), v2=(0,6,0), p0=(-2,-3,0); path3 pl1=plane(v1,v2,p0); path ph=transform(v1,v2,p0,currentprojection)*((0,-2){W}..(0,2){W}..cycle); filldraw(project(pl1)^^ph,evenodd+lightgrey);
đź”—three-fig010

Show three/fig0100.asy on Github.
Generated with Asymptote 3.00-0.
Categories : Examples 3D | Three.asy
Tags : #Plane | #Label (3D) | #Texpath | #Transform (3D) | #Projection (3D) | #Bsp
size(12cm,0); import bsp; currentprojection=orthographic(1,1.5,1); path3 xy=plane((1,0,0),(0,1,0),(0,0,0)); path3 xz=rotate(90,X)*xy; path3 yz=rotate(-90,Y)*xy; face[] f; filldraw(f.push(xy),project(xy),grey); filldraw(f.push(xz),project(xz),grey); filldraw(f.push(yz),project(yz),grey); add(f); draw(Label("$x$",EndPoint), O--(1,0,0), Arrow3); draw(Label("$y$",EndPoint), O--(0,1,0), Arrow3); draw(Label("$z$",EndPoint), O--(0,0,1), Arrow3); dot(O); path[] ph=texpath("$\displaystyle\int_{-\infty}^{+\infty}e^{-\alpha x^2}\,dx= \sqrt{\frac{\pi}{\alpha}}$"); ph =shift((0.5,0.5))*rotate(-45)*scale(1/abs(min(ph)-max(ph)))*ph; filldraw(project(path3(ph,XYplane)),0.8*yellow); filldraw(project(path3(ph,ZXplane)),0.8*yellow); filldraw(project(path3(ph,YZplane)),0.8*yellow);
đź”—three-fig011

Show three/fig0110.asy on Github.
Generated with Asymptote 3.00-0.
Categories : Examples 3D | Three.asy
Tags : #Plane | #Label (3D) | #Texpath | #Transform (3D) | #Projection (3D)
import three; size(10cm,0); currentprojection=orthographic(1,1.5,1); path3 xy=XY*unitsquare3, xz=ZX*unitsquare3, yz=YZ*unitsquare3; draw(xy^^xz^^yz, grey); path3 p3xy=path3(texpath("$\pi$")[0],XYplane); p3xy=shift((0.5,0.5,0))*scale3(1/abs(min(p3xy)-max(p3xy)))*p3xy; surface s=surface(p3xy,planar=true); draw(s, surfacepen=blue, meshpen=orange+3pt); transform3 Txz=planeproject(xz,(0,-1,1)); draw(Txz*s, red); transform3 Tyz=planeproject(yz,(-1,0,1)); draw(Tyz*s, green); path3 p3xz=Txz*p3xy; path3 p3yz=Tyz*p3xy; int lg=length(p3xy); triple p; for(int i=0;i<=lg;++i) { p=point(p3xy,i); draw(p--point(p3xz,i), yellow); draw(p--point(p3yz,i), orange); }