Label en 3D

Tout ce qui concerne le langage Asymptote. Ce langage est supporté sur le forum via les balises asy.

Modérateur : gdm_asy

Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
rebouxo
Modérateur global
Modérateur global
Messages : 6962
Inscription : mercredi 15 février 2006, 13:18
Localisation : le havre

Label en 3D

Message par rebouxo »

Bonjour à tous. Je suis maintenant assez autonome avec asymptote, mais là, je ne vois pas comment régler mon problème de label.

Code : Tout sélectionner

import graph ; 
  import math ; 
  import geometry ;
  import interpolate ;
  import solids ;
  import three ;
  
  unitsize(0.5cm,0.5cm) ; 
  currentprojection=orthographic(5,2.5,2.5) ;

  real x = 8 ;
  real h = 30 - x ;

  // Point 
  triple pA=(x,0,x) ;
  triple pB=(x,x,x) ;
  triple pC=(0,x,x) ;
  triple pD=(0,0,x) ;
  triple pA1=(x,0,0) ;
  triple pB1=(x,x,0) ;
  triple pC1=(0,x,0) ;
  triple pD1=(0,0,0) ;
  triple pO1=0.5*(pA1+pC1) ;
  triple pO=0.5*(pA+pC) ;
  triple pS = (pO.x,pO.y,h) ; 
  // On agrandit le cube unité.
  // On le dessine sans lumière et avec transparence, les traits cachés sont alors 
  // plus clair.
  transform3 mul = scale3(x) ;
  draw(mul*unitcube,white+opacity(0.7),linewidth(1.5bp)+rgb("0000AC"),nolight) ;
  // La pyramide
  path3[] faces={
    pA--pB--pC--pD--cycle,
    pS--pA--pB--cycle,
    pS--pB--pC--cycle,
    pS--pC--pD--cycle,
    pS--pD--pA--cycle,
  } ;
  draw(surface(faces),white+opacity(0.7),linewidth(1.5bp)+rgb("0000AC"),nolight);
  draw(pS--pO1^^pA--pO,linewidth(1.5bp)+rgb("0000AC")+dashed) ;  

  label("$ A $",pA,W) ;
  dot(pA,linewidth(2bp)) ;
  label("$ B $",pB,E) ;
  dot(pB,linewidth(2bp)) ;
  label("$ C $",pC,E) ;
  dot(pC,linewidth(2bp)) ;
  label("$ D $",pD,W) ;
  dot(pD,linewidth(2bp)) ;
  label("$ A' $",pA1,W) ;
  dot(pA1,linewidth(2bp)) ;
  label("$ B' $",pB1,E) ;
  dot(pB1,linewidth(2bp)) ;
  label("$ C' $",pC1,E) ;
  dot(pC1,linewidth(2bp)) ;
  label("$ D' $",pD1,W) ;
  dot(pD1,linewidth(2bp)) ;
  label("$ O $",pO,W) ;
  dot(pO,linewidth(2bp)) ;
  label("$ O' $",pO1,W) ;
  dot(pO1,linewidth(2bp)) ;
  label("$ S $",pS,N) ;
  dot(pS,linewidth(2bp)) ;
La figure me plaît bien. Avec l'opacité cela rend bien les arêtes cachées. Problèmes, cela cache aussi les labels. J'ai essayé de les mettre sur une autre picture, mais rien n'y fait. Des idées ?

Olivier
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
A line is a point that went for a walk. Paul Klee.
Par solidarité, pas de MP.

rebouxo
Modérateur global
Modérateur global
Messages : 6962
Inscription : mercredi 15 février 2006, 13:18
Localisation : le havre

Re: Label en 3D

Message par rebouxo »

Je vais me répondre. En y réfléchissant hier soir, je me suis dis qu'il fallait savoir ce que je voulais. Si c'est de la 3d, ben les labels sont en 3d et donc ceux qui sont derrière la figure sont forcément derrière. Autrement dit la demande est déraisonnable.

Olivier
A line is a point that went for a walk. Paul Klee.
Par solidarité, pas de MP.