[//command
Marges(0,0,0,0), //size(7.5+i*3),
C:=curve2Cylinder([t+i*t^2/3,t/2.5],-5,5,[i,3.75], B),
// B récupère la liste des points 3d des bords haut et bas du cylindre
DrawFlatFacet(C,[color:=white]),
A:=B[3,2], // 2ième point 3d du bord (le kième point est B[2k-1,2])
LabelDot(Proj3D(A),"$A$","S",1),
a := 2.65+i*3.2, // déterminé à la souris
LabelDot(a,"Courbe $x(t)=t$, $y(t)=t^2$ et $z(t)=t/2.5$","E",0)
]
[//command
Marges(0,0,0,0), //size(7.5+i*3),
V := [i,3.75],
C:=curve2Cylinder([t+i*t^2/3,t/2.5],-5,5,V, B),
// B récupère la liste des points des bords haut et bas du cylindre
A:=B[3,2], // 2ième point 3d du bord (le kième point est B[2k-1,2])
Width := 6,
DrawFlatFacet(C,[color:=white]),
LabelDot(Proj3D(A),"$A$","S",1),
a := 2.65+i*3.2, // déterminer à la souris
LabelDot(a,"Courbe $x(t)=t$, $y(t)=t^2$ et $z(t)=t/2.5$","E",0),
Width:=8, Color:=navy,
Ligne3D( getdroite([M(0,-0.5,0),V],3),0),
]
[//command
Marges(0,0,0,0), //size(7.5+i*3),
V := [i,3.75],
C:=curve2Cylinder([t+i*t^2/3,t/2.5],-5,5,V, B),
// B récupère la liste des points des bords haut et bas du cylindre
A:=B[3,2], // 2ième point 3d du bord (le kième point est B[2k-1,2])
Build3D(
bdDroite([M(0,1.38,0),V], [width:=8, color:=navy,scale:=3]),
bdFacet(C, [width:=6, color:=white, border:=1, bordercolor:=black]),
),
Display3D(),
LabelDot(Proj3D(A),"$A$","S",1),
a := 2.65+i*3.2, // déterminer à la souris
LabelDot(a,"Courbe $x(t)=t$, $y(t)=t^2$ et $z(t)=t/2.5$","E",0),
]
[//command
Marges(0,0,0,0), //size(7.5+i*3),
V := -1.3*[1,-2.5], //[i,3.75], //x-2.5z=-0.5
C:=curve2Cylinder([t-0.5+i*t^2/3,t/2.5]-V/8,-5,5,V,B),
// B récupère la liste des points 3d des bords haut et bas du cylindre
//DrawFlatFacet(C,[color:=white]),
Build3D(
bdPlan([M(-0.5,0,0)+V/3, V], [color:=green,opacity:=0.9,scale:=2]),
bdFacet(C, [color:=white, border:=1]),
bdDroite([M(0.5,-0.75,0),V], [color:=navy,width:=6,scale:=3])
),
Display3D(),
A:=(B[-95,2]+B[-97,2])/2, // 2ième point 3d du bord (le kième point est B[2k-1,2])
E:=(B[-99,2]+B[1,2])/2, // 2ième point 3d du bord (le kième point est B[2k-1,2])
LabelDot(Proj3D(A),"$\mathscr{C}$","N",0,0.15),
LabelDot(Proj3D(E),"$D$","E",0,0.15),
//a := 2.65+i*3.2, // déterminé à la souris
//LabelDot(a,"Courbe $x(t)=t$, $y(t)=t^2$ et $z(t)=t/2.5$","E",0)
Width:=6,Color:=navy,
//Ligne3D(getdroite([M(0.5,-0.75,0),V],3),0),
LabelDot(Proj3D(M(0.5,-0.75,0)),"$\Delta$","O",0,0.15),
]
[//command
view(-8,8,-5.5,5), Marges(0,0,0,0), size(8),
V := [2*i,7],
C:=curve2Cylinder([4*cos(t)-cos(4*t)+i*(4*sin(t)-sin(4*t)),-4],
0,2*pi,V,B),
P1 := [M(0,0,-2),vecK], P2:=[M(0,0,-2)+V/2,vecK],
Delta := [M(2,-5,-4), V],
// B récupère la liste des points 3d des bords haut et bas du cylindre
C1 := Merge3d(Intersection(P1,C)), C2 := Merge3d(Intersection(P2,C)),
I := interDP([Delta, V],P2),
Build3D(
bdPlan(P1,[color:=pink, opacity:=0.9, scale:=1.25]),
bdPlan(P2,[color:=pink, opacity:=0.9, scale:=1.4]),
bdFacet(C,[color:=white, opacity:=0.8, border:=0]),
bdLine(Merge3d(C1), [width:=6, color:=blue]),
bdLine(Merge3d(C2), [width:=6, color:=blue]),
bdDroite([M(2,-5,-4), V], [width:=8, color:=red])
),
Display3D(),
A:=(B[-45,2]+B[-47,2])/2, // 2ième point 3d du bord (le kième point est B[2k-1,2])
//E:=(B[-155,2]+B[45,2])/2, // 2ième point 3d du bord (le kième point est B[2k-1,2])
LabelDot(Proj3D(A),"$\mathscr{C}$","N",0,0.15),
LabelDot(Proj3D(I),"$D$","NO",0,0.15),
]
[//command
view(-8,8,-5.5,5), Marges(0,0,0,0), size(8),
V := [2*i,7],
C:=curve2Cylinder([4*cos(t)-cos(4*t)+i*(4*sin(t)-sin(4*t)),-4],
0,2*pi,V,B),
P1 := [M(0,0,-2),vecK], P2:=[M(0,0,-2)+V/2,vecK],
Delta := [M(2,-5,-4), V],
// B récupère la liste des points 3d des bords haut et bas du cylindre
C1 := Merge3d(Intersection(P1,C)), C2 := Merge3d(Intersection(P2,C)),
I := interDP([Delta, V],P2),
Build3D(
bdPlan(P1,[color:=white, opacity:=0.9, scale:=1.25,contrast:=0.5]),
bdPlan(P2,[color:=white, opacity:=0.9, scale:=1.4,contrast:=0.5]),
bdFacet(C,[color:=white, opacity:=0.8, width:=2, border:=1]),
bdLine(Merge3d(C1), [width:=6, color:=black]),
bdLine(Merge3d(C2), [width:=6, color:=black]),
bdDroite([M(2,-5,-4), V], [width:=8, color:=black])
),
Display3D(),
A:=(B[-45,2]+B[-47,2])/2, // 2ième point 3d du bord (le kième point est B[2k-1,2])
//E:=(B[-155,2]+B[45,2])/2, // 2ième point 3d du bord (le kième point est B[2k-1,2])
LabelDot(Proj3D(A),"$\mathscr{C}$","N",0,0.15),
LabelDot(Proj3D(I),"$D$","NO",0,0.15),
]
[//command
view(-8,8,-5.5,5), Marges(0,0,0,0), size(8),
V := [2*i,7],
Cyl1:=curve2Cylinder([4*cos(t)-cos(4*t)+i*(4*sin(t)-sin(4*t)),-4],0,2*pi,V*5.5/7),
Cyl2:=curve2Cylinder([4*cos(t)-cos(4*t)+i*(4*sin(t)-sin(4*t)),-4]+V*5.5/7,
0,2*pi,V/5,B),
// B récupère la liste des points 3d des bords haut et bas du cylindre
P1 := [M(0,0,-2),vecK], P2:=[M(0,0,-2)+V/2,vecK], // plans
C1 := Merge3d(Intersection(P1,Cyl1)), // intersection avec P1
H1 := M(6,-4,-2), H2:=M(6,-4,1.5), // pour dessiner la hauteur
Build3D(
bdPlan(P1,[color:=white, opacity:=0.9, scale:=1.25,contrast:=0.5]),
bdPlan(P2,[color:=white, opacity:=0.9, scale:=1.4,contrast:=0.5]),
bdFacet(Cyl1,[color:=white, opacity:=0.8, width:=2, border:=1]),
bdLine(C1, [width:=6, color:=black]),
bdLine([H1,H2], [width:=6, arrows:=2])
),
Display3D(),
A:=(B[-45,2]+B[-47,2])/2, // 2ième point 3d du bord (le kième point est B[2k-1,2])
LabelDot(Proj3D(A),"$\mathscr{C}$","N",0,0.15),
LabelDot(Proj3D((H1+H2)/2),"$h$","E",0,0.15),
// contour hachuré
FillStyle:=bdiag, Width:=6, FillColor:=black,
Ligne3D([t:=0,
for k from 1 to NbPoints do
[4*cos(t)-cos(4*t)+i*(4*sin(t)-sin(4*t)),-4]+V*5.5/7,
Inc(t,2*pi/NbPoints)
od],1),
// partie supérieure du cylindre
Width := 2, FillStyle:=none, FillOpacity:=0.9,
DrawFacet(Cyl2, [color:=white])
]
[//command
view(-8,8,-5.5,5), Marges(0,0,0,0), size(8),
viewDir(39,75), //angles de vues theta et phi
V := [2*i,7], NbPoints := 100,
Cyl1:=curve2Cylinder([4*cos(t)-cos(4*t)+i*(4*sin(t)-sin(4*t)),-4],0,2*pi,5.5/7*V),
Cyl2:=curve2Cylinder([4*cos(t)-cos(4*t)+i*(4*sin(t)-sin(4*t)),-4]+5.5/7*V,
0,2*pi,V/5,B),
// B récupère la liste des points 3d des bords haut et bas du cylindre
P1 := [M(0,0,-2),vecK], P2:=[M(0,0,-2)+V/2,vecK], // plans
C1 := Merge3d(Intersection(P1,Cyl1)), // intersection avec P1
H1 := M(6,-4,-2), H2:=M(6,-4,1.5), // pour dessiner la hauteur
Build3D(
bdPlan(P1,[color:=white, opacity:=0.9, scale:=1.25,contrast:=0.5]),
bdPlan(P2,[color:=white, opacity:=0.9, scale:=1.4,contrast:=0.5]),
bdFacet(Cyl1,[color:=white, opacity:=0.8, width:=2, border:=1]),
bdLine(C1, [width:=6, color:=black]),
bdLine([H1,H2], [width:=6, arrows:=2]),
),
Display3D(),
A:=(B[-45,2]+B[-47,2])/2, // 2ième point 3d du bord (le kième point est B[2k-1,2])
LabelDot(Proj3D(A),"$\mathscr{C}$","N",0,0.15),
LabelDot(Proj3D((H1+H2)/2),"$h$","E",0,0.15),
FillStyle:=bdiag, Width:=6, FillColor:=black,
Ligne3D([t:=0,
for k from 1 to NbPoints do
[4*cos(t)-cos(4*t)+i*(4*sin(t)-sin(4*t)),-4]+5.5/7*V,
Inc(t,2*pi/NbPoints)
od],1),
FillOpacity := 0.8,
DrawFacet(Cyl2,[color:=white, Width:=2])
]
Eric a écrit:Effectivement, ça va beaucoup mieux comme ça. Je te remercie encore ! Ça m'aura fait passer à la dernière version de TexGraph.
Mon nouveau problème : je voulais faire la même chose que précédemment (sans les hachures), mais avec un polygone comme base, plutôt qu'une fonction définie par une formule. Je ne vois pas de commande dans la documentation pour dessiner une surface prismatique.
[//command
view(-8,8,-5.5,5), Marges(0,0,0,0), size(8),
viewDir(39,75), //angles de vues theta et phi
V := [2*i,7], NbPoints := 100,
ligne := polyreg(0,4,8), //1.5*[-1+i, -3-i, 2-3*i, 1, 3+3*i, -1+i],
L := [for z in ligne do [z,-3.75] od, ligne[1],-3.75], // polygone de base
Cyl1:=line2Cylinder(L,V,0,B),
// B récupère la liste des points 3d des bords haut et bas du cylindre
P1 := [M(0,0,-2),vecK], P2:=[M(0,0,-2)+V/2,vecK], // plans
C1 := Merge3d(Intersection(P1,Cyl1)), // intersection avec P1
C2 := Merge3d(Intersection(P2,Cyl1)), // intersection avec P2
H1 := M(6,-4,-2), H2:=M(6,-4,1.5), // pour dessiner la hauteur
Build3D(
bdPlan(P1,[color:=white, opacity:=0.9, scale:=1.25,contrast:=0.5]),
bdPlan(P2,[color:=white, opacity:=0.9, scale:=1.4,contrast:=0.5]),
bdFacet(Cyl1,[color:=white, opacity:=0.8, width:=2, border:=1]),
bdLine(C1, [width:=6, color:=black]),
bdLine(C2, [width:=6, color:=black]),
bdLine([H1,H2], [width:=6, arrows:=2]),
),
Display3D(),
A:=(B[-5,2]+B[-7,2])/2, // 2ième point 3d du bord (le kième point est B[2k-1,2])
LabelDot(Proj3D(A),"$P$","N",0,0.15),
LabelDot(Proj3D((H1+H2)/2),"$h$","E",0,0.15),
]
Eric a écrit:Autre question.
J'ai modifié dans le fichier le vecteur v en V := [1+i,7]. J'obtiens un cylindre droit. Je voudrais visualiser quelques angles droits entre un plan de coupe et des génératrices. J'ai vu sur un exemple dans la doc que tu utilises la commande angleD. Mais ça ne tient pas compte de l'effet de perspective. Y a-t-il une commande spécifique ?
[//command
view(-8,8,-5.5,5), Marges(0,0,0,0), size(8),
viewDir(39,75), //angles de vues theta et phi
V := [0,7], NbPoints := 100,
Cyl1:=curve2Cylinder([4*cos(t)-cos(4*t)+i*(4*sin(t)-sin(4*t)),-4],0,2*pi,5.5/7*V),
Cyl2:=curve2Cylinder([4*cos(t)-cos(4*t)+i*(4*sin(t)-sin(4*t)),-4]+5.5/7*V,
0,2*pi,V/5,B),
// B récupère la liste des points 3d des bords haut et bas du cylindre
P1 := [M(0,0,-2),vecK], P2:=[M(0,0,-2)+V/2,vecK], // plans
C1 := Merge3d(Intersection(P1,Cyl1)), // intersection avec P1
H1 := M(6,-4,-2), H2:=M(6,-4,1.5), // pour dessiner la hauteur
t:= pi/2-0.36, a := [4*cos(t)-cos(4*t)+i*(4*sin(t)-sin(4*t)),-4]+2/7*V,
b := a + pxy(a),
c := a + vecK,
t:= -1.05, a' := [4*cos(t)-cos(4*t)+i*(4*sin(t)-sin(4*t)),-4]+2/7*V,
b' := a' + pxy(a'),
c' := a' + vecK,
Build3D(
bdPlan(P1,[color:=white, opacity:=0.9, scale:=1.25,contrast:=0.5]),
bdPlan(P2,[color:=white, opacity:=0.9, scale:=1.4,contrast:=0.5]),
bdFacet(Cyl1,[color:=white, opacity:=0.8, width:=2, border:=1]),
bdLine(C1, [width:=6, color:=black]),
bdLine([H1,H2], [width:=6, arrows:=2]),
bdAngleD(b,a,c,0.5),
bdAngleD(b',a',c',0.5),
),
Display3D(),
A:=(B[-45,2]+B[-47,2])/2, // 2ième point 3d du bord (le kième point est B[2k-1,2])
LabelDot(Proj3D(A),"$\mathscr{C}$","N",0,0.15),
LabelDot(Proj3D((H1+H2)/2),"$h$","E",0,0.15),
FillStyle:=bdiag, Width:=6, FillColor:=black,
Ligne3D([t:=0,
for k from 1 to NbPoints do
[4*cos(t)-cos(4*t)+i*(4*sin(t)-sin(4*t)),-4]+5.5/7*V,
Inc(t,2*pi/NbPoints)
od],1),
FillOpacity := 0.8,
DrawFacet(Cyl2,[color:=white, Width:=2])
]
Revenir vers Questions - Réponses
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 14 invités