[Résolu] Plusieurs solides simples et pointillés

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.

Re: [Résolu][Asymptote] Plusieurs solides simples et pointillés

Messagepar GMaths » Lundi 01 Février 2010, 12:24

GMaths a écrit:Je suppose que cela vient du fait que les pointillés ne débutent pas du même endroit.


Ph. Ivaldi a écrit:J'ai identifié le problème et cela ne vient (évidement :mrgreen: ) pas de ma routine.
La différence de tracé provient du fait que les faces des solides ont (évidement) des arrêtes en commun.
Or les point de départ et d'arrivée lors d'un tracé en pointillés dépendent (évidemment) du chemin.
Du coup, l'arrête commune à deux faces va être tracée deux fois avec des pointillés décalés.


J'avais compris le problème...

O.G. a écrit:éclater toutes les arêtes par exemple. Code pas vraiment optimisé...


... et j'avais essayé cela hier avec une boucle for moins sophistiquée que la tienne... sans y parvenir.
Ceci explique cela. :mrgreen:
Dernière édition par GMaths le Lundi 01 Février 2010, 12:31, édité 1 fois.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: [Résolu][Asymptote] Plusieurs solides simples et pointillés

Messagepar GMaths » Lundi 01 Février 2010, 12:30

GMaths a écrit:... et j'avais essayé cela hier avec une boucle for moins sophistiquée que la tienne... sans y parvenir.

... mais maintenant que je vois que vous êtes à deux sur le coup... je redeviens spectateur. :-) :lol: :mrgreen:

Et je vous encourage : allez Philippe, allez Olivier, allez... :lol:
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu][Asymptote] Plusieurs solides simples et pointillés

Messagepar GMaths » Lundi 01 Février 2010, 12:38

GMaths a écrit:J'avais compris le problème...
O.G. a écrit:éclater toutes les arêtes par exemple. Code pas vraiment optimisé...

... et j'avais essayé cela hier avec une boucle for moins sophistiquée que la tienne... sans y parvenir.
Ceci explique cela. :mrgreen:

Je viens de regarder ton code... et en fait j'avais tenté autre chose : c'est au niveau de l'appel à addshape dans les routines que j'avais tenté une boucle... en me disant que cela pouvait faire une différence au niveau du démarrage des pointillés si on a un shape ou un shape[].
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu][Asymptote] Plusieurs solides simples et pointillés

Messagepar OG » Lundi 01 Février 2010, 12:41

GMaths a écrit:
GMaths a écrit:... et j'avais essayé cela hier avec une boucle for moins sophistiquée que la tienne... sans y parvenir.

... mais maintenant que je vois que vous êtes à deux sur le coup... je redeviens spectateur. :-) :lol: :mrgreen:

Et je vous encourage : allez Philippe, allez Olivier, allez... :lol:


Merci pour tes encouragements. Même si cela m'amuse et m'intéresse, je n'ai pas vraiment le temps d'approfondir
en ce moment.
Que devrait faire de plus cette extension ?

O.G.
OG
Modérateur
 
Messages: 2285
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: [Résolu][Asymptote] Plusieurs solides simples et pointillés

Messagepar Ph. Ivaldi » Lundi 01 Février 2010, 14:55

Une version modifiée de geoespace.asy se trouve ICI, provisoirement, le temps des testes.
J'y ai ajouté un objet path3Pen qui permet de stocker les arrêtes avec le stylo, au lieu de les rebalancer dans des faces:

Code: Tout sélectionner
struct path3Pen {
  path3 path3;
  pen pen;
  void operator init(path3 path3, pen pen) { // constructor
    this.path3=path3;
    this.pen=pen;
  }
}


Au moment du tracé, les arrêtes sont d'abord éclatées en leurs parties rectilignes et non rectilignes par le fonction explode ci-dessous.

La solution tient donc dans ces quelques lignes:

Code: Tout sélectionner
// Return an exploded version of aPath3
// path3[0] is the piece wise straight part and path3[1] others parts.
path3[][] explode(path3 aPath3) {
  path3[][] op=new path3[2][];
  int l=length(aPath3);
  for (int j=0; j < l; ++j) {
    bool isPiecewiseStraight=true;
    int k=j;
    while(piecewisestraight(subpath(aPath3,j,k+1)) && k < l) {
      ++k;
    }
    if(k == j) {
      isPiecewiseStraight=false;
      while(!straight(aPath3,k) && k < l) {
        ++k;
      }
    }
    op[isPiecewiseStraight ? 0 : 1].push(subpath(aPath3,j,k));
  }
  return op;
}

// trace les faces de la scene entière et les arrêtes cachées
void trace(){
  add(hidden);
  if (pointilles==true){
    path3 section;
    bool isPiecewiseStraight=true;
    int j;
    for (int i=0; i < visible.length; ++i) {
      path3[][] exploded=explode(visible[i].path3);
      for (int j=0; j < exploded[0].length; ++j) {
        int l=length(exploded[0][j]);
        for (int k=0; k < l; ++k) {
          draw(subpath(exploded[0][j],k,k+1),visible[i].pen+defaultbackpen);
        }
      }
      draw(exploded[1],visible[i].pen+defaultbackpen);
    }
  }
}


J'ai aussi fait quelques modifications cosmétiques :-)

Voici ce que j'obtiens avec le code de Gaétan:

essai.png
essai.png (20.46 Kio) Vu 1143 fois


Maintenant il y a gros boulot à faire sur cette extension pour qu'elle ne mélange pas le tracé classique d'objets avec l'ajout d'objets dans la scène. Il faudrait aussi standardiser les routines, coder en anglais etc etc. En l'état actuel c'est un peu le gros bazar.

Voilà, si les testes de cette version sont probants, je l'envoie à l'auteur qui mettra à jour la version officielle.

Avis aux courageux: il faudrait tester cette nouvelle version avec des chemins non rectilignes par morceaux, en plus ce serait joli d'avoir un cylindre ou une sphère dans la scène.
Ph. Ivaldi
Méga-utilisateur
 
Messages: 267
Inscription: Vendredi 12 Janvier 2007, 23:27
Statut actuel: Actif et salarié

Re: [Résolu][Asymptote] Plusieurs solides simples et pointillés

Messagepar GMaths » Lundi 01 Février 2010, 16:05

Tout d'abord : merci Philippe !!

Premier test

Code: Tout sélectionner
import geoespace;
currentprojection=orthographic(5,2,4);
size(8cm,0);
triple A=(0,-2,0),
   B=(2.5,0,0),
   C=(-1.5,2,0),
   D=(-1.5,1.5,0),
   E=(1,1,4),
   F=(-1,-1,-1);
pyramide(E,A--B--C--D--cycle,.8white);
pave(F,2,2,3,.9palegreen);
trace();


pave_pyramide_2.png


une question : pourquoi les pointillés semblent plus noirs que les traits continus sur lesquels ils sont superposés parfois ?

des pointillés noirs sur un trait continu noir de même largeur... cela ne devrait pas se voir, non ? mais là, on dirait que les traits continus ont une bordure plus claire qui contraste avec les pointillés qui se voient donc par dessus.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu][Asymptote] Plusieurs solides simples et pointillés

Messagepar GMaths » Lundi 01 Février 2010, 16:36

En fait, le problème se pose uniquement pour la visualisation à l'écran... car à l'impression aucun problème : cela ne se voit pas.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu][Asymptote] Plusieurs solides simples et pointillés

Messagepar Ph. Ivaldi » Lundi 01 Février 2010, 16:41

GMaths a écrit:une question : pourquoi les pointillés semblent plus noirs que les traits continus sur lesquels ils sont superposés parfois ?

des pointillés noirs sur un trait continu noir de même largeur... cela ne devrait pas se voir, non ? mais là, on dirait que les traits continus ont une bordure plus claire qui contraste avec les pointillés qui se voient donc par dessus.

Comme toi je n'ai aucune explication.
Sinon ,essaye la nouvelle version où je force l'épaisseur des pointillés légèrement en dessous de celle du trait.

GMaths a écrit:En fait, le problème se pose uniquement pour la visualisation à l'écran... car à l'impression aucun problème : cela ne se voit pas.

Il s'agit donc d'un artéfact de rendu. Mieux vaut quand même le supprimer.
Ph. Ivaldi
Méga-utilisateur
 
Messages: 267
Inscription: Vendredi 12 Janvier 2007, 23:27
Statut actuel: Actif et salarié

Re: [Résolu][Asymptote] Plusieurs solides simples et pointillés

Messagepar GMaths » Lundi 01 Février 2010, 16:48

Ph. Ivaldi a écrit:Comme toi je n'ai aucune explication.
Sinon ,essaye la nouvelle version où je force l'épaisseur des pointillés légèrement en dessous de celle du trait.


Cela se voit encore mais c'est mieux !

pave_pyramide_3.png
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu][Asymptote] Plusieurs solides simples et pointillés

Messagepar Ph. Ivaldi » Lundi 01 Février 2010, 16:56

GMaths a écrit:Cela se voit encore mais c'est beaucoup mieux !


Chez moi ça ne se voit pas. Ça doit dépendre de la qualité de l'écran 8).
Sinon, essaye en chargeant comme ceci:

Code: Tout sélectionner
import geoespace;
defaultbackpen +=linewidth(0);
Ph. Ivaldi
Méga-utilisateur
 
Messages: 267
Inscription: Vendredi 12 Janvier 2007, 23:27
Statut actuel: Actif et salarié

Re: [Résolu][Asymptote] Plusieurs solides simples et pointillés

Messagepar GMaths » Lundi 01 Février 2010, 17:06

Ph. Ivaldi a écrit:
GMaths a écrit:Cela se voit encore mais c'est beaucoup mieux !

Chez moi ça ne se voit pas. Ça doit dépendre de la qualité de l'écran 8).

Que ce soit sur mon écran gauche (un magnifique 26 pouces que tout le monde m'envie)
ou sur l'écran de droite (un plus modeste 17 pouces pour l'instant)... j'ai le problème.
Cela doit dépendre de la vue, en fait... :lol:

Ph. Ivaldi a écrit:Sinon, essaye en chargeant comme ceci:
Code: Tout sélectionner
import geoespace;
defaultbackpen +=linewidth(0);

Ce n'est pas mieux... mais pour moi cela ira, vu qu'à l'impression, cela ne se voit pas.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu][Asymptote] Plusieurs solides simples et pointillés

Messagepar Ph. Ivaldi » Lundi 01 Février 2010, 17:40

GMaths a écrit:
Ph. Ivaldi a écrit:Sinon, essaye en chargeant comme ceci:
Code: Tout sélectionner
import geoespace;
defaultbackpen +=linewidth(0);

Ce n'est pas mieux... mais pour moi cela ira, vu qu'à l'impression, cela ne se voit pas.

Étonnant. Chez moi, en zoomant à 6400% dans l'acrobate, je ne vois strictement rien d'anormal.
Attendons d'autres retours…
Ph. Ivaldi
Méga-utilisateur
 
Messages: 267
Inscription: Vendredi 12 Janvier 2007, 23:27
Statut actuel: Actif et salarié

Re: [Résolu][Asymptote] Plusieurs solides simples et pointillés

Messagepar GMaths » Lundi 01 Février 2010, 17:46

Code: Tout sélectionner
import geoespace;
defaultbackpen +=linewidth(0);
currentprojection=orthographic(5,2,4);
size(8cm,0);
triple A=(0,-2,0),
   B=(2,0,0),
   C=(-1.5,2,0),
   D=(-1.5,1.5,0),
   E=(1,1,4),
   F=(-1,-1,-1);
pyramide(E,A--B--C--D--cycle,.95white);
pave(F,2,2,3,.9palegreen);

//(partie du plan d'équation x+y+z=3)
insertscene((1.5,-.5,2)--(2.5,0.5,0)--(1,1,1)--(-.5,2.5,1)--cycle,red);

//(partie du plan d'équation x+y+z=3.5)
insertscene((1.5,-.5,2.5)--(2.5,0.5,0.5)..(1,1,1.5)..(-.5,2.5,1.5)--cycle,blue);

trace();


delire.png


Petit délire pour tester... :-))
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu][Asymptote] Plusieurs solides simples et pointillés

Messagepar Ph. Ivaldi » Lundi 01 Février 2010, 18:00

et alors, le rendu est-il bon ? :D
Ph. Ivaldi
Méga-utilisateur
 
Messages: 267
Inscription: Vendredi 12 Janvier 2007, 23:27
Statut actuel: Actif et salarié

Re: [Résolu][Asymptote] Plusieurs solides simples et pointillés

Messagepar GMaths » Lundi 01 Février 2010, 18:02

Ph. Ivaldi a écrit:Avis aux courageux: il faudrait tester cette nouvelle version avec des chemins non rectilignes par morceaux


Peux-tu préciser ? car, dans la figure précédente, j'obtiens une erreur (bsp.asy: 16.31 : path is linear) si je remplace certains -- par .. pour les parties planes que j'ai ajoutées.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu][Asymptote] Plusieurs solides simples et pointillés

Messagepar GMaths » Lundi 01 Février 2010, 18:16

GMaths a écrit:
Ph. Ivaldi a écrit:Avis aux courageux: il faudrait tester cette nouvelle version avec des chemins non rectilignes par morceaux


Peux-tu préciser ? car, dans la figure précédente, j'obtiens une erreur (bsp.asy: 16.31 : path is linear) si je remplace certains -- par .. pour les parties planes que j'ai ajoutées.


Je ne sais plus quels points j'avais choisis et je n'arrive plus à reproduire l'erreur : à suivre.

Un autre exemple :

Code: Tout sélectionner
import geoespace;
defaultbackpen +=linewidth(0);
currentprojection=orthographic(5,2,4);
size(8cm,0);
triple A=(0,-2,0),
   B=(2,0,0),
   C=(-1.5,2,0),
   D=(-1.5,1.5,0),
   E=(1,1,4),
   F=(-1,-1,-1);
pyramide(E,A--B--C--D--cycle,.95white);
pave(F,2,2,3,.9palegreen);

// patatoïde dans le plan z=0
insertscene((-1.5,-1.5,0.5)..(1,-1.2,0.5)..(1.5,1.5,0.5)..(-1.7,1.5,0.5)..cycle,blue);

trace();


delire2.png
Dernière édition par GMaths le Lundi 01 Février 2010, 18:41, édité 1 fois.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu][Asymptote] Plusieurs solides simples et pointillés

Messagepar Ph. Ivaldi » Lundi 01 Février 2010, 18:20

Je crois me souvenir que chaque chemin doit être planaire.
Il faudrait insérer proprement une sphère par exemple mais je n'ai pas trop le temps de le faire.
Ph. Ivaldi
Méga-utilisateur
 
Messages: 267
Inscription: Vendredi 12 Janvier 2007, 23:27
Statut actuel: Actif et salarié

Re: [Résolu][Asymptote] Plusieurs solides simples et pointillés

Messagepar GMaths » Lundi 01 Février 2010, 18:26

Ph. Ivaldi a écrit:Je crois me souvenir que chaque chemin doit être planaire.


oui je sais, puisqu'à chaque fois, j'ai pris 4 points et j'ai dû faire attention pour qu'ils soient coplanaires mais je crois avoir eu l'erreur alors qu'ils l'étaient...
J'ai dû me planter dans mes calculs, j'imagine.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu][Asymptote] Plusieurs solides simples et pointillés

Messagepar GMaths » Mardi 02 Février 2010, 08:09

Avant de partir pour ma journée de surveillances (semaine du bac blanc), il fallait revenir sur ce sujet avec la figure de Patrick.

Code: Tout sélectionner
import geoespace;
//defaultbackpen =dotted;
defaultbackpen +=linewidth(0);
pen Crimson=rgb("DC143C"), SteelBlue=rgb("4682B4"), ForestGreen=rgb("228B22");

triple[] cylindre(triple c=O, real r, real h, triple axis=Z,pen remplissage=white,pen aretes=black)
{
  triple[] som;
  int n=20;
  real theta=360/n;
  axis=h*unit(axis);
  som[0]=c+r*perp(axis);
  som[1]=som[0]+axis;
  som[2]=rotate(theta,c,c+axis)*som[0];
  som[3]=som[2]+axis;
  path3 facette=som[0]--som[1]--som[3]--som[2]--cycle;
  for(int i=0; i<n; ++i){
   insertscene(rotate(i*theta,c,c+axis)*facette,remplissage,aretes);
  }
  return som;
}

currentprojection=orthographic(5,3,3.5);
size(8cm,0);
triple pO=(0,0,0), M_1=(3,0,0), M_2=(2,3,0), M_3=(0,3,0),
       pS=(0,0,3.5),
      M=(-1,-1,1);
cylindre(c=(1,2,-1),r=1,h=3,Y+Z,ForestGreen,.9ForestGreen);
pyramide(pS,O--M_1--M_2--M_3--cycle,SteelBlue);
pave(M,2,2,2,Crimson);


La fonction cylindre (à facettes) serait à introduire dans une extension... pour réduire le code à sa plus simple expression.

cube_pyramide_cylindre.png


Je ne sais pas faire mieux pour l'instant : si je veux passer de n=20 à n=40... le résultat est : out of memory.

Comment économiser de la mémoire : that's the question.

cube_pyramide_cylindre_2.png
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu][Asymptote] Plusieurs solides simples et pointillés

Messagepar OG » Mardi 02 Février 2010, 09:14

bonjour

Ça doit être le bsp qui flanche. Je ne connais pas la complexité et le nombre de subdivisions nécessaires. Je suppose que cela grimpe vite. Il faudrait savoir si la gestion dans TeXgraph d'un cylindre dans l'algo bsp se fait par les facettes ou non.

O.G.
OG
Modérateur
 
Messages: 2285
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

PrécédenteSuivante

Retourner vers Asymptote

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité