![]() ![]() |
// Deux options d'affichage des labels en 3D : Billboard ou Embedded. settings.autobillboard=false; // solution temporaire pour que // l'option d'affichage par défaut des labels ne soit plus Billboard // (qui ne fonctionne pas pour l'instant avec obliqueX). import three; size(8cm,0); currentprojection=obliqueX; currentlight=White; triple v1=(4,0,0), v2=(0,6,0), p0=(-2,-3,0); path3 pl=plane(v1,v2,p0); draw(surface(pl),orange); draw(Label("$\vec{v_1}$"),p0--p0+v1,1bp+blue,Arrow3); draw(Label("$\vec{v_2}$"),p0--p0+v2,N,1bp+blue,Arrow3); dot("$p_0$",p0,NW); shipout(bbox(2mm,Fill(white))); |
![]() ![]() |
// Deux options d'affichage des labels en 3D : Billboard ou Embedded. settings.autobillboard=false; // solution temporaire pour que // l'option d'affichage par défaut des labels ne soit plus Billboard // (qui ne fonctionne pas pour l'instant avec obliqueX). import graph3; size(8cm,0); currentprojection=obliqueX; currentlight=White; path3 pl=(-2,-3,0)--(2,-3,0)--(2,3,0)--(-2,3,0)--cycle; draw(surface(pl,planar=true),orange); dot(Label("$(-2,-3,0)$"),(-2,-3,0),N); label("$(2,3,0)$",(2,3,0),blue); label("$(2,-3,0)$",(2,-3,0),red,Billboard); // Label qui ne s'affichera // pas tant que Billboard ne sera pas toléré avec obliqueX. limits((-3,-4,-2),(3,4,2)); xaxis3("$x$",Arrow3); yaxis3("$y$",Arrow3); zaxis3("$z$",Arrow3); shipout(bbox(2mm,Fill(white))); |
![]() ![]() |
size(7.5cm,0); import graph3; currentprojection=perspective(camera=(5,3,3)); path3 p1=shift(-1,-1,0)*scale3(2)*unitsquare3, p2=scale3(.25)*unitcircle3; path3[] p3=shift(.5,.5,0)*p2 ^^shift(-.5,-.5,0)*p2 ^^shift(.5,-.5,0)*p2 ^^shift(-.5,.5,0)*p2; draw(p1,1bp+red); draw(p3,1bp+blue); draw(surface(reverse(p1)^^p3,planar=true),white+opacity(.5)); limits(-1.5X-1.5Y-.5Z,1.5X+1.5Y+Z); xaxis3("$x$",Arrow3); yaxis3("$y$",Arrow3); zaxis3("$z$",Arrow3); |
![]() ![]() |
// Deux options d'affichage des labels en 3D : Billboard ou Embedded. settings.autobillboard=false; // solution temporaire pour que // l'option d'affichage par défaut des labels ne soit plus Billboard // (qui ne fonctionne pas pour l'instant avec obliqueX). size(7.5cm,0); import three; settings.tex="pdflatex"; currentprojection=obliqueX; currentlight=nolight; triple v1=(4,0,0), v2=(0,6,0), p0=(-2,-3,0); triple V=(0,0,1.5); path3 pl1=plane(v1,v2,p0); path3 pl2=shift(V)*pl1; draw(surface(pl1),orange); draw(surface(pl2),lightgrey+opacity(.8)); shipout(bbox(2mm,Fill(white))); |
![]() ![]() |
// Deux options d'affichage des labels en 3D : Billboard ou Embedded. settings.autobillboard=false; // solution temporaire pour que // l'option d'affichage par défaut des labels ne soit plus Billboard // (qui ne fonctionne pas pour l'instant avec obliqueX). size(7.5cm,0); import three; settings.tex="pdflatex"; currentprojection=obliqueX; currentlight=nolight; triple v1=(4,0,0), v2=(0,6,0), p0=(-2,-3,0); triple V=(0,0,1.5); path3 pl1=plane(v1,v2,p0); path3 pl2=shift(V)*pl1; draw(surface(pl1),orange,.5blue); draw(surface(pl2),lightgrey+opacity(.8),1bp+.8blue); shipout(bbox(2mm,Fill(white))); |
![]() ![]() |
size(7.5cm,0); import three; for(int i; i<10; ++i) for(int j; j<10; ++j) draw(shift(2*i,2*j,0)*surface(shift(-1,-1,0)*scale3(2)*unitsquare3 ^^reverse(scale3(.5)*unitcircle3),planar=true), white+opacity(.5)); draw(surface(shift(0,0,-5)*scale3(20)*unitsquare3,planar=true),paleblue); shipout(bbox(2mm,Fill(white))); |
![]() ![]() |
// Deux options d'affichage des labels en 3D : Billboard ou Embedded. settings.autobillboard=false; // solution temporaire pour que // l'option d'affichage par défaut des labels ne soit plus Billboard // (qui ne fonctionne pas pour l'instant avec obliqueX). size(7.5cm,0); import three; settings.tex="pdflatex"; currentprojection=obliqueX; currentlight=nolight; triple v1=(4,0,0), v2=(0,6,0), p0=(-2,-3,0); path3 pl1=plane(v1,v2,p0); path3 pl2=rotate(45,Y)*pl1; draw(surface(pl1),paleblue); draw(surface(pl2),gray+opacity(.8),black); draw(-v2/2--v2/2,.8bp+red); shipout(bbox(2mm,Fill(white))); |
![]() ![]() |
// Deux options d'affichage des labels en 3D : Billboard ou Embedded. settings.autobillboard=false; // solution temporaire pour que // l'option d'affichage par défaut des labels ne soit plus Billboard // (qui ne fonctionne pas pour l'instant avec obliqueX). import three; import math; dotgranularity=0; // Render dots as spheres. size(7.5cm,0); currentprojection=obliqueX; currentlight=nolight; //~~~~~~~~~ DEFINITIONS ~~~~~~~~~ // On définit le plan. triple v1=(4,0,0), v2=(0,6,0), p0=(-2,-3,0); path3 pl=plane(v1,v2,p0); // On définit la droite. triple ptdr1=(0,2,2), ptdr2=(0,-1,-2); path3 ligne=ptdr1--ptdr2; // On définit le point d'intersection de la droite et du plan. triple[] ptint=intersectionpoints(ligne,surface(pl)); //~~~~~~~~~ CONSTRUCTIONS ~~~~~~~~~ // On trace la droite. draw(ligne,blue); // On trace le plan. draw(surface(pl),paleblue); // On met en évidence le point d'intersection. dot(ptint[0]); shipout(bbox(2mm,Fill(white))); |
![]() ![]() |
import three; ///////////////////////////////////////// void angledroit(picture pic=currentpicture, triple pO, triple pI, triple pJ, real size=.5, pen p=black, projection P=currentprojection){ triple imI=pO+size*unit(pI-pO), imJ=pO+size*unit(pJ-pO), imK=imI+imJ-pO; draw(imI--imK--imJ,p); } ///////////////////////////////////////// size(8cm,0); currentprojection=orthographic(4,2,4); triple v1=(9,0,1), v2=(0,10,2), pM=(0,0,3); path3 planP = plane(v1,v2,pM); // Représentation d'un plan dont (pM,v1,v2) est un repère. transform3 proj=planeproject(planP); triple pA=(2,7,11), pB=proj*pA, // pB projeté orthogonal de pA sur planP pC=pM+.8*v1+.7*v2, // pC point de coordonnées (.8,.7) dans le repère (pM,v1,v2) de planP. vnP=unit(cross(v1,v2)),// vecteur normal unitaire au planP pD=rotate(90,pC,pC+vnP)*pB; // point de planP tel que pBpCpD soit triangle rectangle isocèle en pC draw(surface(planP),paleblue+opacity(.3)); draw(pA--pB--pC--cycle); dot("$A$",pA); dot("$B$",pB); dot("$C$",pC,dir(pC-pB)); angledroit(pB,pA,pC,red); angledroit(pC,pD,pB,blue); angledroit(pC,pD,pA,green); label("$(P)$",pM,X+Y); real d=.2; draw(Label("$(d)$",EndPoint),interp(pC,pD,-d)--interp(pC,pD,1+d)); |
Dernière modification le Sun Dec 25 11:27:55 CET 2011 par G.Marris Valide XHTML