Section d'un cube par un plan

Tout ce qui concerne l'utilisation ou l'installation d'Asymptote.

Modérateur: gdm_asy

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Section d'un cube par un plan

Messagepar loicwood » Lundi 11 Février 2013, 18:52

Bonsoir,

j'essaie de représenter la section d'un cube par un plan en 3D. Pour l'instant, ma figure ressemble à cela :

Code: Tout sélectionner
settings.render=0;
settings.outformat='pdf';
settings.tex="pdflatex";
settings.prc=true;

size(15cm,0);
import solids;
import three;
import math;

currentprojection = orthographic(50,50,25);

nslice=4*nslice;

real a=5, l=0.5;

triple pA=(-a,-a,-a), pB=(a,-a,-a), pC=(a,a,-a), pD=(-a,a,-a), pE=(-a,-a,a), pF=(a,-a,a), pG=(a,a,a), pH=(-a,a,a);

draw(pA--pB--pC--pD--pH--pE--pF--pG--pC);
draw(pD--pA--pE);
draw(pB--pF);
draw(pC--pG--pH);


triple pI=1/2*(pA+pB), pJ=1/2*(pF+pG), pK=1/2*(pA+pE), pL=1/2*(pC+pG), pM=1/2*(pG+pH), pN=1/2*(pD+pH), pP=1/2*(pF+pB), pQ=1/2*(pE+pH);

triple vectAH=pH-pA, vectAJ=pJ-pA, vectHJ=pJ-pH, vectmid=1/2*(vectAH+vectAJ);

triple pt1=pA+(l+0.5)*vectHJ-l*vectmid, pt2=pA-(l+0.5)*vectHJ-l*vectmid, pt3=pH-l*vectHJ+l*vectmid, pt4=pJ+l*vectHJ+l*vectmid;

path3 planAHJ=pt1--pt2--pt3--pt4--cycle;

//path3 planAHJ=plane(2*vectAH,2*vectAJ,pA);

draw(surface(planAHJ),red+opacity(0.2));

path3 faceABCD=pA--pB--pC--pD--cycle;
path3 faceABFE=pA--pB--pF--pE--cycle;
path3 faceBCGF=pB--pC--pG--pF--cycle;
path3 faceADHE=pA--pD--pH--pE--cycle;
path3 faceEFGH=pE--pF--pG--pH--cycle;
path3 faceCDHG=pC--pD--pH--pG--cycle;

draw(surface(faceABCD),blue+opacity(0.25));
draw(surface(faceABFE),blue+opacity(0.25));
draw(surface(faceBCGF),blue+opacity(0.25));
draw(surface(faceADHE),blue+opacity(0.25));
draw(surface(faceEFGH),blue+opacity(0.25));
draw(surface(faceCDHG),blue+opacity(0.25));

dot(Label("$A$",align=SW),pA);
dot(Label("$B$",align=SE),pB);
dot(Label("$C$",align=SE),pC);
dot(Label("$D$",align=NW),pD);
dot(Label("$E$",align=SW),pE);
dot(Label("$F$",align=SE),pF);
dot(Label("$G$",align=NE),pG);
dot(Label("$H$",align=NW),pH);
dot(Label("$I$",align=S),pI);
dot(Label("$J$",align=SE),pJ);
dot(Label("$K$",align=W),pK);
dot(Label("$L$",align=E),pL);
dot(Label("$M$",align=N),pM);
dot(Label("$N$",align=W),pN);
dot(Label("$P$",align=E),pP);
dot(Label("$Q$",align=NW),pQ);



Est-il possible de construire des segments représentant les intersections des différentes faces du cube par le plan (AHJ) ? J'ai du mal à comprendre comment fonctionne la commande intersect (ou intersections etc).

Autre question : comment arriver à avoir dès le départ une vue en 3D correcte (que mettre comme nombres dans currentprojection = orthographic(50,50,25) ) ?

Merci.
loicwood
Kilo-utilisateur
 
Messages: 118
Inscription: Dimanche 23 Octobre 2011, 10:24
Localisation: Souppes sur Loing
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: Section d'un cube par un plan

Messagepar chellier » Lundi 11 Février 2013, 19:07

Bonjour,
Ce n'est pas très "simple". J'avais essayé de faire quelque chose ici : http://forum.mathematex.net/asymptote-f34/intersection-de-deux-plans-t13121.html#p126743

Christophe
chellier
Modérateur
 
Messages: 355
Inscription: Samedi 25 Juillet 2009, 11:25
Localisation: Le Creusot
Statut actuel: Actif et salarié | Enseignant

Re: Section d'un cube par un plan

Messagepar loicwood » Mardi 12 Février 2013, 21:58

Bonsoir,

la solution donnée fonctionne correctement sur les quelques exemples que j'ai traités. Le seul problème, c'est de définir un plan suffisamment grand à partir des 3 points de la figure pour obtenir les intersections.

Est-il possible d'obtenir directement un "plan" contenant les trois points en passant par une commande, mais que le plan soit plus grand que le parallélogramme défini par les 3 points ?
loicwood
Kilo-utilisateur
 
Messages: 118
Inscription: Dimanche 23 Octobre 2011, 10:24
Localisation: Souppes sur Loing
Statut actuel: Actif et salarié | Enseignant

Re: Section d'un cube par un plan

Messagepar chellier » Mercredi 13 Février 2013, 09:12

Bonjour,

loicwood a écrit:Est-il possible d'obtenir directement un "plan" contenant les trois points en passant par une commande, mais que le plan soit plus grand que le parallélogramme défini par les 3 points ?


Comme ça peut-être :

Code: Tout sélectionner
size(5cm,0);
import three;
settings.render=0;
settings.prc=false;
currentprojection=obliqueX;
currentlight=nolight;

// Définition d'une routine planetendu
path3 planetendu(triple u, triple v, triple O=O, real k1, real k2)
{
  triple A=O-k1*(u+v);
  return A--A+k2*u--A+k2*(u+v)--A+k2*v--cycle;
}

triple v1=(4,0,0), v2=(0,5,0);

path3 pl1=plane(v1,v2);
path3 pl2=planetendu(v1,v2,.3,1.9);

draw(surface(pl2),paleblue);
draw(surface(pl1),gray+opacity(.8),black);


dot("$O$",O,N);
dot("$O-k1*(u+v)$",O-.3*(v1+v2),N);

//draw(O--X,Arrow3);draw(O--Y,Arrow3);draw(O--Z,Arrow3);
//label("X",X);label("Y",Y);label("Z",Z);

Christophe

PS : La figure ne compile pas sur le forum :shock:
chellier
Modérateur
 
Messages: 355
Inscription: Samedi 25 Juillet 2009, 11:25
Localisation: Le Creusot
Statut actuel: Actif et salarié | Enseignant

Re: Section d'un cube par un plan

Messagepar loicwood » Mercredi 13 Février 2013, 18:49

Merci bien :o
loicwood
Kilo-utilisateur
 
Messages: 118
Inscription: Dimanche 23 Octobre 2011, 10:24
Localisation: Souppes sur Loing
Statut actuel: Actif et salarié | Enseignant


Retourner vers Asymptote

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités