Re: Mes premiers pas en 3D
Publié: 26 Juil 2022 23:01
En fait, la base n'est pas le bord stocké dans la variable B, mais l'intersection du plan avec la surface conique (ça doit être la variable C2).
Logiciel de dessins mathématiques pour LaTeX
http://texgraph.tuxfamily.org/forum/
[//command
view(-10.25,6.5,-7.25,5),
Marges(0,0,0,0), size(8), viewDir(30,60),
V:= [4-2*i,-5],
NewMac("f", "[4*cos(t)-cos(4*t)+i*(4*sin(t)-sin(4*t)),2]", t),
C:=curve2Cone(f(t),0,2*pi,V,1,B),
P2:=[M(0,0,3)+V/2,vecJ+6*vecK],
Delta := [M(2,-5,-4), V],
cone2 := ClipFacet(C,P2,cone1),
// B récupère la liste des points 3d des bords haut et bas du cylindre
C2:= Intersection(P2,C,L),
I := interDP([Delta,V],P2),
H1 := L[63,2], H2 := V+H1- proj3d(V,P2),
FillStyle:=full, FillOpacity:=0.5, Width:=2,
DrawFacet(cone1, [color:=white]),
draw("line", Proj3D([H1,H2]), [Width:=6, Arrows:=2, legend:="$h$", labeldir:="E", labelsep:=0.1]),
draw("line", Proj3D([H2,V]), [Width:=6, LineStyle:=userdash]),
angleD(Proj3D(H2), Proj3D(H1), Proj3D(2*H1- proj3d(V,P2))),
DrawPlan(P2,vecI,12,12),
draw("line", Proj3D(L), [close:=1, FillStyle:=fdiag, FillColor:=black, Width:=8]),
DrawFacet(cone2, [color:=white, FillStyle:=full, FillOpacity:=0.5, Width:=2]),
FillStyle := none,
A:=(B[101,2]+B[103,2])/2, // 2ième point 3d du bord (le kième point est B[2k-1,2])
LabelSize:=footnotesize,
LabelDot(Proj3D(A),"$\mathscr{C}$","N",0,0.15),
LabelDot(Proj3D(V),"$S$","O",0,0.15),
]
[//command
Marges(0,0,0,0),size(7.5), viewDir(30,60),
S := pqGoneReg3D([Origin,vecK],M(4,0,0),[7,3]),
DrawFlatFacet(S,[color:=gray,backculling:=1]),
]
[
view(-4,4,-4,4), Marges(0,0,0,0), size(8),
FillStyle:=full,FillColor:=white,
//theta:=10,phi:=20, // attention ce sont des radians !
viewDir(-148,84), // là ce sont des degrés
P:=Octaedre(Origin,2.5), // P est une liste de facettes
DrawPoly(P,4,0.5),
S := Sommets(P), // récuperation des sommets
LabelSize:=footnotesize,
LabelDot(Proj3D(S[1,2]),"$B$","E",1,0.15),
LabelDot(Proj3D(S[3,2]),"$C$","E",1,0.15),
LabelDot(Proj3D(S[11,2]),"$D$","O",1,0.15),
LabelDot(Proj3D(S[7,2]),"$E$","O",1,0.15),
LabelDot(Proj3D(S[9,2]),"$A$","N",1,0.15),
LabelDot(Proj3D(S[5,2]),"$F$","S",1,0.15),
]
[//command
view(-2.25,3.5,-1.6,2.35),
Marges(0,0,0,0), size(6), NbPoints:=40,
LabelSize:=footnotesize,
S:=[1+4*i,4], S1:=[1+4*i,0],
C :=curve2Cone(2*[cos(t)+i*sin(t),0],-pi,pi,S,0),
draw("line", Proj3D([S1,Origin]),[LineStyle:=userdash,Width:=4]), //sous le cône
Width:=8, HideStyle:=userdash, DrawAretes(Bord(C)), //bord du cône
FillOpacity:=0.8, Width:=6,
DrawSmoothFacet(C,[color :=white,backculling :=1]), //le cône
Width:=4,
draw("line", Proj3D([S1,S]),
[LineStyle:=userdash,Arrows:=2,
legend:="$h$",labeldir:="E",labelsep:=0.1]),
angleD(Proj3D(S),Proj3D(S1),Proj3D(Origin)),
LabelDot(Proj3D(S),"$S$","NO",0,0.1),
LabelDot(Proj3D(S1),"$H$","E",0,0.1),
]
[//command
view(-2.25,3.5,-1.6,2.35),
Marges(0,0,0,0), size(6), NbPoints:=40,
LabelSize:=footnotesize,
S:=[1+4*i,4], S1:=[1+4*i,0],
D :=curve2Cone(2*[cos(t)+i*sin(t),0],-pi,pi,S,0),
P := [M(0,0,2), -vecK], // plan de coupe z=2
C := ClipFacet(D,P), // partie basse
C':= ClipFacet(D,[M(0,0,2),vecK]), // partie haute
draw("line", Proj3D([S1,Origin]),[LineStyle:=userdash,Width:=4]), //sous le cône
Width:=8, B := CpCopy(Proj3D(Merge3d(Bord(C))),1,1),
draw("line", B, [Width:=12]), // bord inférieur
FillOpacity:=0.8, Width:=6,
DrawSmoothFacet(C,[color :=white,backculling :=0]), //le tronc de cône
B := CpCopy(Merge3d(Bord(C)),2,1),
draw("line", Proj3D(B), [Width:=8]), //bord supérieur
Width:=2, LineStyle:=dotted,
Ligne3D(for z in B by 4 do z[1,2], S od,0), // un point sur 2 du bord supérieur est relié à S
draw("line", Proj3D([S1,S]),
[LineStyle:=userdash,Arrows:=2,
legend:="$h$",labeldir:="E",labelsep:=0.1]),
angleD(Proj3D(S),Proj3D(S1),Proj3D(Origin)),
LabelDot(Proj3D(S),"$S$","NO",0,0.1),
LabelDot(Proj3D(S1),"$H$","E",0,0.1),
]
[//command
view(-0.8,1.8,-1.4,1.7), Marges(0,0,0,0), size(5.5),
cube:=Parallelep(Origin,2*vecI,2*vecJ,2*vecK),
plan:=[M(0,1,2),-vecI+vecJ-vecK],
S:=Section(plan,cube), FillStyle:=full,
FillColor:=white,HideWidth:=6,HideStyle:=dashed,
DrawPoly(S,2),
T:=Sommets(S),
LabelDot(Proj3D(T[7,2]),"$D$","S",0,0.15),
LabelDot(Proj3D(T[9,2]),"$E$","O",0,0.15),
LabelDot(Proj3D(T[11,2]),"$B$","SE",0,0.1),
LabelDot(Proj3D(T[15,2]),"$A$","N",0,0.1),
LabelDot(Proj3D(T[17,2]),"$F$","O",0,0.15),
LabelDot(Proj3D(T[19,2]),"$C$","E",0,0.15),
]
[//command
view(-1.1,1.8,-1.4,1.8), Marges(0,0,0,0), size(5.5),
cube:=Parallelep(Origin,2*vecI,2*vecJ,2*vecK),
V := M(-1,1,-1),
plan:=[M(0,1,2),V],
S:=Section(plan,cube), S':=Section([M(0,1,2),-V],cube),
FillStyle:=full,
FillColor:=white,HideWidth:=6,HideStyle:=dashed,
DrawPoly(S,2),
T:=Sommets(S),
LabelDot(Proj3D(T[7,2]),"$D$","S",0,0.15),
LabelDot(Proj3D(T[9,2]),"$E$","O",0,0.15),
LabelDot(Proj3D(T[11,2]),"$B$","SE",0,0.1),
LabelDot(Proj3D(T[15,2]),"$A$","N",0,0.1),
LabelDot(Proj3D(T[17,2]),"$F$","O",0,0.15),
LabelDot(Proj3D(T[19,2]),"$C$","E",0,0.15),
LineStyle:=dotted, FillStyle:=none,
Ligne3D(Merge3d(Aretes(S')),0)
]
[//command
view(-2.35,3.6,-1.55,2.55),
Marges(0,0,0,0), size(5.6), NbPoints:=40,
LabelSize:=footnotesize,
S:=[1+4*i,4.5], S1:=[1+4*i,0],
S2:=interDP([Origin,S],[[0,1.5],vecK]),S3:=[1+4*i,1.5],
C:=curve2Cone(2.25*[cos(t)+i*sin(t),0],-pi,pi,S,0),
C':= ClipFacet(C,[M(0,0,1.5),vecK]), // partie haute
draw("line", Proj3D([S1,Origin]),[LineStyle:=userdash,Width:=6]), //sous le cône
draw("line", Proj3D([S2,S3]),[LineStyle:=userdash,Width:=6]), //sous le cône
draw("line", Proj3D([S,Origin]),[LineStyle:=dashed,Width:=6]), //sous le cône
Width:=8, HideStyle:=userdash, DrawAretes(Bord(C)), //bord de section
DrawAretes(Bord(C')),
FillOpacity:=0.8, Width:=6,
DrawSmoothFacet(C,[color :=white,backculling :=1]), //le cône
Width:=6,
draw("line", Proj3D([S1,S]),[LineStyle:=userdash]),
angleD(Proj3D(S),Proj3D(S1),Proj3D(Origin),0.2),
angleD(Proj3D(S),Proj3D(S3),Proj3D(S2),0.2),
LabelDot(Proj3D(S),"$S$","E",0,0.15),
LabelDot(Proj3D(S1),"$H$","E",0,0.1),
LabelDot(Proj3D(S3),"$H'$","E",0,0.1),
LabelDot(Proj3D(Origin),"$O$","O",0,0.15),
LabelDot(Proj3D(S2),"$O'$","O",0,0.15),
]
[//command
view(-2.35,3.6,-1.55,2.55),
Marges(0,0,0,0), size(5.6), NbPoints:=40,
LabelSize:=footnotesize,
S:=[1+4*i,4.5], S1:=[1+4*i,0],
S2:=interDP([Origin,S],[[0,1.5],vecK]),S3:=[1+4*i,1.5],
C:=curve2Cone(2.25*[cos(t)+i*sin(t),0],-pi,pi,S,0),
C':= ClipFacet(C,[M(0,0,1.5),vecK]), // partie haute
draw("line", Proj3D([S1,Origin]),[LineStyle:=userdash,Width:=6]), //sous le cône
draw("line", Proj3D([S2,S3]),[LineStyle:=userdash,Width:=6]), //sous le cône
draw("line", Proj3D([S,Origin]),[LineStyle:=dashed,Width:=6]), //sous le cône
FillOpacity:=0.6, Width:=6,
DrawSmoothFacet(C,[color :=white,backculling :=1]), //le cône
FillOpacity := 1,
Width:=8, HideStyle:=userdash, DrawAretes(Bord(C)), //bord de section
DrawAretes(Bord(C')),
Width:=6,
draw("line", Proj3D([S1,S]),[LineStyle:=userdash]),
angleD(Proj3D(S),Proj3D(S1),Proj3D(Origin),0.2),
angleD(Proj3D(S),Proj3D(S3),Proj3D(S2),0.2),
LabelDot(Proj3D(S),"$S$","E",0,0.15),
LabelDot(Proj3D(S1),"$H$","E",0,0.1),
LabelDot(Proj3D(S3),"$H'$","E",0,0.1),
LabelDot(Proj3D(Origin),"$O$","O",0,0.15),
LabelDot(Proj3D(S2),"$O'$","O",0,0.15),
]
[//command
view(-8.9,5.6,-4.7,4.6),
Marges(0,0,0,0), size(7.5), viewDir(30,60),
V:= [4-1.5*i,-4.5],
C:=Sphere(1-i,3,30,30),
P2:=[M(0,0,3)+V/2,vecJ+6*vecK],
Delta := [M(2,-5,-4), V],
sphere2 := ClipFacet(C,P2,sphere1),
C2:= Intersection(P2,C,L),
I := interDP([Delta,V],P2),
FillStyle:=full, FillOpacity:=0.5, Width:=2,
DrawSmoothFacet(sphere1, [color:=white,backculling :=0]),
DrawPlan(P2,vecI,12,9.5),
draw("line", Proj3D(L),
[close:=1, FillColor:=white,Width:=10]),
DrawSmoothFacet(sphere2,
[color:=white, FillStyle:=none, Width:=2,backculling :=0]),
]