[Résolu] Supprimer le scintillement d'un dé à jouer en 3D ?

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.

[Résolu] Supprimer le scintillement d'un dé à jouer en 3D ?

Messagepar AndréC » Dimanche 09 Juillet 2017, 21:18

Bonjour,
Je suis en train d'apprendre Asymptote et ce qui m'intéresse est la 3D manipulable avec la souris. Pour ma première figure en 3D, j'ai dessiné un dé à jouer dont le code est ci-dessous. Malheureusement les disques représentant les points scintillent lorsque l'on fait tourner ce dé à la souris.
J'en conclus que je dois m'y prendre autrement pour colorier les faces du dé car lorsque je supprime l'instruction de la ligne 25
Code: Tout sélectionner
draw(tX*scale3(84a)*unitcube, surfacepen=white);
alors le dé ne scintille plus, mais du coup devient transparent.

je pense qu'il faudrait arriver à colorier une première fois les faces sans les disques, puis en une deuxième étape les disques eux-mêmes.
Seulement , je ne sais pas comment faire cela en 3D.

remarque : le dé mesure 4,2 cm et a = 0,05, d'où 84a = 4,2 cm.
Code: Tout sélectionner
import three;
currentprojection =orthographic((5,2,3));
currentlight=nolight;
settings.tex="latex"; // Moteur LaTeX utilisé pour la compilation (latex, pdflatex, ...)
settings.outformat="pdf"; // Format de sortie ; eps par défaut
settings.prc=true; // Format PRC de la figure ; vrai par défaut
settings.render=-1; // Rendu des figures ; -1 par défaut
size(6cm,0);
real a = 0.05;
path    carre = box ((0,0),(84a,84a)),
      disque = scale(9a)*unitcircle,
      patron1[] = shift(42a,42a)*disque,
      patron2[] = shift(14a,70a)*disque^^shift(70a,14a)*disque,
      patron3[] = shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(42a,42a)*disque,
      patron4[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque,
      patron5[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque^^shift(42a,42a)*disque,
      patron6[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque^^shift(42a,70a)*disque^^shift(42a,14a)*disque;
transform3 tX=shift(84a*X), tY=shift(84a*Y), tZ=shift(84a*Z);      
path3    facegauche[] =path3(patron6,ZXplane),
      facedroite[] =path3(patron1,ZXplane),
      faceavant[] =path3(patron2,YZplane),
      facearriere[] =path3(patron5,YZplane),   
      facehaut[] =path3(patron4,XYplane),      
      facebas[] =path3(patron3,XYplane);      
draw(scale3(84a)*unitcube, surfacepen=white);
draw(box(O, 84a*(X+Y+Z)), gray);
draw(surface(facegauche),blue);
draw(surface(tY*facedroite),blue);
draw(surface(tZ*facehaut),blue);
draw(surface(facebas),blue);
draw(surface(facearriere),blue);
draw(surface(tX*faceavant),blue);


A moins que quelqu'un n'ait une autre solution ?
Je vous remercie de vos lumières.
Dernière édition par AndréC le Lundi 10 Juillet 2017, 16:09, édité 2 fois.
AndréC
Déca-utilisateur
 
Messages: 17
Inscription: Dimanche 17 Avril 2016, 13:25
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: Supprimer le scintillement d'un dé à jouer en 3D ?

Messagepar OG » Lundi 10 Juillet 2017, 10:34

Bonjour

C'est normal (réponse facile). En effet les disques sont exactement sur la surface des faces, aucun des objets
n'est positionné au dessus/au dessous...
Solution 1 (voir code ci-joint) : décaler de $\varepsilon=0.001$ chaque disque dans le bon sens.

Solution 2 (moins facile) : dessiner réellement chaque face comme le carré privé des disques

Code: Tout sélectionner
import three;
    currentprojection =orthographic((5,2,3));
    currentlight=nolight;
    settings.tex="latex"; // Moteur LaTeX utilisé pour la compilation (latex, pdflatex, ...)
    settings.outformat="pdf"; // Format de sortie ; eps par défaut
    settings.prc=true; // Format PRC de la figure ; vrai par défaut
    settings.render=-1; // Rendu des figures ; -1 par défaut
    size(6cm,0);
    real a = 0.05;
    path    carre = box ((0,0),(84a,84a)),
          disque = scale(9a)*unitcircle,
          patron1[] = shift(42a,42a)*disque,
          patron2[] = shift(14a,70a)*disque^^shift(70a,14a)*disque,
          patron3[] = shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(42a,42a)*disque,
          patron4[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque,
          patron5[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque^^shift(42a,42a)*disque,
          patron6[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque^^shift(42a,70a)*disque^^shift(42a,14a)*disque;
    transform3 tX=shift((84a+00.1)*X), tY=shift((84a+.001)*Y), tZ=shift((84a+0.01)*Z);     
    path3    facegauche[] =shift(0,-0.001,0)*path3(patron6,ZXplane),
          facedroite[] =path3(patron1,ZXplane),
          faceavant[] =path3(patron2,YZplane),
          facearriere[] =shift(-0.001,0,0)*path3(patron5,YZplane),   
          facehaut[] =path3(patron4,XYplane),     
          facebas[] =shift(0,0,-0.001)*path3(patron3,XYplane);     
    draw(scale3(84a)*unitcube, surfacepen=white);
    draw(box(O, 84a*(X+Y+Z)), gray);
    draw(surface(facegauche),blue);
    draw(surface(tY*facedroite),blue);
    draw(surface(tZ*facehaut),blue);
    draw(surface(facebas),blue);
    draw(surface(facearriere),blue);
    draw(surface(tX*faceavant),blue);


J'ai mis aussi une réponse sur stackexchange :)

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

Re: Supprimer le scintillement d'un dé à jouer en 3D ?

Messagepar rebouxo » Lundi 10 Juillet 2017, 11:54

Oh, lumière, lumière, n'exagérons rien ;-).
La source des scintillements viens que tu as des objets plans l'un sur l'autre. Il suffit de décaler les cercles légèrement du cube pour que le scintillement disparaisse, j'ai décalé de h.

Je propose ceci comme code
Code: Tout sélectionner
import three;
currentprojection =orthographic((5,2,3));
currentlight=nolight;
settings.tex="latex"; // Moteur LaTeX utilisé pour la compilation (latex, pdflatex, ...)
settings.outformat="pdf"; // Format de sortie ; eps par défaut
settings.prc=true; // Format PRC de la figure ; vrai par défaut
settings.render=-1; // Rendu des figures ; -1 par défaut
size(6cm,0);
real a = 0.05;
real h = 0.001 ;
surface cube = scale3(84*a)*unitcube ;

surface disqueX = scale3(9*a)*unitdisk ;
surface disqueY = rotate(90,Y)*scale3(9*a)*unitdisk ;
surface disqueZ = rotate(90,X)*scale3(9*a)*unitdisk ;


draw(cube, white, gray+linewidth(1bp));

surface[] face1 = {shift(42*a,42*a,84*(a+h))*disqueX} ;
surface[] face6 = {shift(14*a,14*a,-h)*disqueX,
         shift(14*a,42*a,-h)*disqueX,
         shift(14*a,70*a,-h)*disqueX,
         shift(70*a,14*a,-h)*disqueX,
         shift(70*a,42*a,-h)*disqueX,
         shift(70*a,70*a,-h)*disqueX} ;


surface[] face2 = {shift(-h,14*a,14*a)*disqueY,
         shift(-h,70*a,70*a)*disqueY} ;

surface[] face5 = {shift(84*(a+h),14*a,14*a)*disqueY,
         shift(84*(a+h),14*a,70*a)*disqueY,
         shift(84*(a+h),42*a,42*a)*disqueY,
         shift(84*(a+h),70*a,14*a)*disqueY,
         shift(84*(a+h),70*a,70*a)*disqueY} ;

surface[] face4 = {shift(14*a,84*(a+h),14*a)*disqueZ,
         shift(14*a,84*(a+h),70*a)*disqueZ,
         shift(70*a,84*(a+h),14*a)*disqueZ,
         shift(70*a,84*(a+h),70*a)*disqueZ} ;
        

surface[] face3 = {shift(14*a,-h,14*a)*disqueZ,
         shift(42*a,-h,42*a)*disqueZ,
         shift(70*a,-h,70*a)*disqueZ} ;


surface[][] points = {face1,face2,face3,face4,face5,face6} ;


for(int i = 0 ; i < 6 ; ++i)
  {
    for(int cpt = 0 ; cpt <= i ; ++cpt)
      {
   draw(points[i][cpt],blue,blue) ;
      }
  }

La principale différence est d'utiliser systématiquement les objets 3d, plutôt que de gérer des objets plans, pour les plaquer sur le dés. Plutôt une histoire de goût, mais je soupçonne que ta méthode soit plus efficace, si il y a beaucoup d'objets. Comme je ne peux pas concaténer des surface (dommage) j'ai fait des tableaux de surface (un pour chaque face) et un tableau de ces tableaux, pour éviter des copier-coller.

Olivier
Zut griller par Olivier !
@O.G. Pour la 2e idée, je pense que ce n'est faisable qu'avec des objets 2D ?
Il manque des choses dans asymptote : faire des trous, des chanfreins, bref toutes choses utile pour la CAO. :D
A line is a point that went for a walk. Paul Klee
Par solidarité, pas de MP
rebouxo
Modérateur
 
Messages: 6743
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Re: Supprimer le scintillement d'un dé à jouer en 3D ?

Messagepar AndréC » Lundi 10 Juillet 2017, 13:27

@OG merci beaucoup, j'ai compris l'origine du problème et le code fonctionne parfaitement.
Je vais clore la question sur stackexchange.

@rebouxo, merci beaucoup pour le code, j'essaie de le comprendre mais malheureusement je n'arrive pas à le compiler en ligne de commande, j'ai ces erreurs :
de.asy: 5.1: no type of name 'surface'
de.asy: 5.29: no matching variable 'unitcube'

P.S:
- Comment dit t-on que le sujet est résolu ?
- Je signale un problème sur le forum : lorsqu'on clique sur le bouton « tout sélectionner » pour copier le code, on change de page et on se retrouve sur la page d'accueil des forums. En revanche, la sélection et la copie par clic droit à la souris fonctionne.
AndréC
Déca-utilisateur
 
Messages: 17
Inscription: Dimanche 17 Avril 2016, 13:25
Statut actuel: Actif et salarié | Enseignant

Re: Supprimer le scintillement d'un dé à jouer en 3D ?

Messagepar rebouxo » Lundi 10 Juillet 2017, 13:38

Tu édites ton premier message (toi seul peut le faire) et tu mets un [RÉSOLU] !
Par contre c'est bizarre les erreurs sur le fichier.
Quelle version d'asymptote ? Quel OS ?

Ce qui est surprenant c'est l'erreur à la première ligne.

@O.G. J'ai réussi à faire les trous :

03228f7b8ba6a3cf45000ed64fc3e713.svg

Code: Tout sélectionner
import three;
currentprojection =orthographic((5,2,3));
currentlight=nolight;
settings.tex="latex"; // Moteur LaTeX utilisé pour la compilation (latex, pdflatex, ...)
settings.outformat="pdf"; // Format de sortie ; eps par défaut
settings.prc=true; // Format PRC de la figure ; vrai par défaut
settings.render=-1; // Rendu des figures ; -1 par défaut
size(6cm,0);
real a = 0.05;
path carre = box ((0,0),(84a,84a)) ;
path disque = scale(9a)*unitcircle ;
path point1[] = shift(42a,42a)*disque ;
path point2[] = shift(14a,70a)*disque^^shift(70a,14a)*disque ;
path point3[] = shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(42a,42a)*disque ;
path point4[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque ;
path point5[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque^^shift(42a,42a)*disque ;
path point6[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque^^shift(42a,70a)*disque^^shift(42a,14a)*disque ;
path patron1[] = carre^^point1 ;
path patron2[] = point2^^carre ;
path patron3[] = point3^^carre ;
path patron4[] = point4^^carre ;
path patron5[] = point5^^carre ;
path patron6[] = point6^^carre ;

filldraw(carre,blue,white) ;
filldraw(patron4,evenodd+white,white) ;


Mais je ne sais pas plaquer ces images 2D sur un cube.
Olivier
A line is a point that went for a walk. Paul Klee
Par solidarité, pas de MP
rebouxo
Modérateur
 
Messages: 6743
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

Messagepar AndréC » Lundi 10 Juillet 2017, 14:16

@rebouxo j'utilise Asymptote 2.41 sur Windows 7 pro 64 bits
AndréC
Déca-utilisateur
 
Messages: 17
Inscription: Dimanche 17 Avril 2016, 13:25
Statut actuel: Actif et salarié | Enseignant

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

Messagepar rebouxo » Lundi 10 Juillet 2017, 14:32

Même version, mais sous linux.
Un problème d'encodage de caractères ?
A line is a point that went for a walk. Paul Klee
Par solidarité, pas de MP
rebouxo
Modérateur
 
Messages: 6743
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

Messagepar AndréC » Lundi 10 Juillet 2017, 14:36

rebouxo a écrit:Même version, mais sous linux.
Un problème d'encodage de caractères ?

Le fichier était encodé en UTF8 sans BOM (avec notepad++). Je viens de le convertir en UTF8 et j'ai cette erreur :
de.asy: 1.1: invalid token
de.asy: 1.2: invalid token
de.asy: 1.3: invalid token

En réencodant en UTF8 sans BOM, plus aucun problèmes !
C'est vraiment bizarre !
AndréC
Déca-utilisateur
 
Messages: 17
Inscription: Dimanche 17 Avril 2016, 13:25
Statut actuel: Actif et salarié | Enseignant

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

Messagepar OG » Lundi 10 Juillet 2017, 22:42

Bonsoir

Comme j'écrivais ce matin il y a une solution 2, Asymptote peut transformer un contour 2D en une surface 3D.
C'est ce qui fait pour les étiquettes en 3D : bezulate est ton ami.
@monvoisinhavrais: il y a aussi extrude qui peut servir..

Il faut donc construire chaque face trouée et là plus besoin du décalage de $\varepsilon$
Pour que bezulate comprenne la construction 1 carré privé d'un disque, il faut faire
un reverse(disque), c'est la règle.

Voici le code
Code: Tout sélectionner

    currentprojection =orthographic((5,2,3));
    currentlight=nolight;
    settings.tex="latex"; // Moteur LaTeX utilisé pour la compilation (latex, pdflatex, ...)
    settings.outformat="pdf"; // Format de sortie ; eps par défaut
    settings.prc=true; // Format PRC de la figure ; vrai par défaut
    settings.render=-1; // Rendu des figures ; -1 par défaut
    size(6cm,0);
    real a = 0.05;
    path    carre = box ((0,0),(84a,84a)),
          // reverse est capital pour créer les trous avec bezulate
          // c'est la règle : unitsquare et disque ne seront pas dans le
          // même sens, donc bezulate comprend que c'est un trou
          disque = scale(9a)*reverse(unitcircle), 
         
          patron1[] = shift(42a,42a)*disque,
          patron2[] = shift(14a,70a)*disque^^shift(70a,14a)*disque,
          patron3[] = shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(42a,42a)*disque,
          patron4[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque,
          patron5[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque^^shift(42a,42a)*disque,
          patron6[]=  shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque^^shift(42a,70a)*disque^^shift(42a,14a)*disque;
    transform3 tX=shift((84a)*X), tY=shift((84a)*Y), tZ=shift((84a)*Z);     
    path3    facegauche[] =path3(patron6,ZXplane),
          facedroite[] =path3(patron1,ZXplane),
          faceavant[] =path3(patron2,YZplane),
          facearriere[] =path3(patron5,YZplane),   
          facehaut[] =path3(patron4,XYplane),     
          facebas[] =path3(patron3,XYplane);     
   
 //   draw(scale3(84a)*unitcube, surfacepen=white);
    draw(box(O, 84a*(X+Y+Z)), gray);
    draw(surface(facegauche),blue);
    draw(surface(tY*facedroite),blue);
    draw(surface(tZ*facehaut),blue);
    draw(surface(facebas),blue);
    draw(surface(facearriere),blue);
    draw(surface(tX*faceavant),blue);
// les faces trouées
    path[] gp6=bezulate(scale(84a)*unitsquare^^patron6);
    path[] gp5=bezulate(scale(84a)*unitsquare^^patron5);
    path[] gp4=bezulate(scale(84a)*unitsquare^^patron4);
    path[] gp3=bezulate(scale(84a)*unitsquare^^patron3);
    path[] gp2=bezulate(scale(84a)*unitsquare^^patron2);
    path[] gp1=bezulate(scale(84a)*unitsquare^^patron1);
    surface s1=shift((0,84a,84a))*rotate(90,Y)*rotate(90,X)*surface(gp1);
    surface s2=shift(84a,0,0)*rotate(-90,Y)*surface(gp2);
    surface s3=surface(gp3);
    surface s4=shift((0,0,84a))*surface(gp4);
    surface s5=shift((0,0,84a))*rotate(90,Y)*surface(gp5);
    surface s6=shift((0,0,84a))*rotate(90,Y)*rotate(90,X)*surface(gp6);
    draw(s6,red);
    draw(s5,red);
    draw(s4,red);
    draw(s3,red);
    draw(s2,red);
    draw(s1,red);



h142.png
h142.png (3.18 Kio) Vu 106 fois


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

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

Messagepar rebouxo » Lundi 10 Juillet 2017, 23:19

Ou c'est documenté, ça bezulate ?

Je me disais que l'on devait pouvoir faire un extrudé. J'essayerais cela demain.

Olivier
A line is a point that went for a walk. Paul Klee
Par solidarité, pas de MP
rebouxo
Modérateur
 
Messages: 6743
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

Messagepar AndréC » Mardi 11 Juillet 2017, 07:33

@OG Génial, je vais essayer de comprendre le code puis de faire un vrai dé avec des trous à la place des points !

@rebouxo et @OG, j'ai copié-collé vos solutions sur le stackexchange français de tex à savoir texnique.fr ici : http://texnique.fr/osqa/questions/3425/asymptote-3d-supprimer-le-scintillement-des-points-dun-de-a-jouer
AndréC
Déca-utilisateur
 
Messages: 17
Inscription: Dimanche 17 Avril 2016, 13:25
Statut actuel: Actif et salarié | Enseignant

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

Messagepar AndréC » Mardi 11 Juillet 2017, 09:36

Je viens juste de translater le dé de -4.2X car je trouve qu'ainsi il se manipule plus facilement à la souris (et j'ai mis les couleurs lightolive et darkmagenta), ce qui donne le code :
Code: Tout sélectionner
import three;
    currentprojection =orthographic((5,2,3));
    currentlight=nolight;
    settings.tex="latex"; // Moteur LaTeX utilisé pour la compilation (latex, pdflatex, ...)
    settings.outformat="pdf"; // Format de sortie ; eps par défaut
    settings.prc=true; // Format PRC de la figure ; vrai par défaut
    settings.render=-1; // Rendu des figures ; -1 par défaut
    size(6cm,0);
    real a = 0.05;
   real h=0.001;
    path    carre = box ((0,0),(84a,84a)),
          disque = scale(9a)*unitcircle,
          patron1[] = shift(42a,42a)*disque,
          patron2[] = shift(14a,70a)*disque^^shift(70a,14a)*disque,
          patron3[] = shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(42a,42a)*disque,
          patron4[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque,
          patron5[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque^^shift(42a,42a)*disque,
          patron6[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque^^shift(42a,70a)*disque^^shift(42a,14a)*disque;
    transform3 tX=shift(-(84a+h)*X), tY=shift((84a+h)*Y), tZ=shift((84a+h)*Z);     
    path3 facegauche[] =shift(0,-h,0)*path3(patron6,ZXplane),
          facedroite[] =path3(patron1,ZXplane),
          faceavant[] =shift(h,0,0)*path3(patron2,YZplane),
          facearriere[] =shift(-h,0,0)*path3(patron5,YZplane),   
          facehaut[] =path3(patron4,XYplane),     
          facebas[] =shift(0,0,-h)*path3(patron3,XYplane);
//   draw(O--4.2X ^^ O--4.2Y ^^ O--4.2Z,red);    
    draw(tX*scale3(84a)*unitcube, surfacepen=lightolive);
    draw(box(O, 84a*(-X+Y+Z)), palecyan);
    draw(surface(tX*facegauche),darkmagenta);
    draw(surface(tX*tY*facedroite),darkmagenta);
    draw(surface(tX*tZ*facehaut),darkmagenta);
    draw(surface(-tX*facebas),darkmagenta);
    draw(surface(-tX*facearriere),darkmagenta);
    draw(surface(faceavant),darkmagenta);


Je m'attaque au plus dur comprendre vos codes à tous deux. :shock:
AndréC
Déca-utilisateur
 
Messages: 17
Inscription: Dimanche 17 Avril 2016, 13:25
Statut actuel: Actif et salarié | Enseignant

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

Messagepar AndréC » Mardi 11 Juillet 2017, 10:46

rebouxo a écrit:Ou c'est documenté, ça bezulate ?

Je viens de la trouver dans le manuel officiel en anglais
-> chapitre 8 base module
--> section 8.29 three
--->page numérotée 134 (p 139 du PDF).
AndréC
Déca-utilisateur
 
Messages: 17
Inscription: Dimanche 17 Avril 2016, 13:25
Statut actuel: Actif et salarié | Enseignant

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

Messagepar rebouxo » Mardi 11 Juillet 2017, 11:40

merci
Olivier
A line is a point that went for a walk. Paul Klee
Par solidarité, pas de MP
rebouxo
Modérateur
 
Messages: 6743
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

Messagepar OG » Mardi 11 Juillet 2017, 13:06

Pour bezulate, cela rejoint un des fils récents sur Asymptote : la documentation.
Celles et ceux qui ont suivi régulièrement le développement d'Asymptote ont plus
de chances d'être au courant que celle ou celui qui débarque, parcourt la doc...

@AndréC : je ne sais pas pourquoi la figure est "plus manipulable", il est clair que
pour la solution 2, la figure est plus complexe il y a plus de carreaux de Bézier donc
plus de calculs mais sur une machine "moderne" et "standard" je doute que cela
ralentisse notablement...

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

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

Messagepar AndréC » Mardi 11 Juillet 2017, 14:12

OG a écrit:@AndréC : je ne sais pas pourquoi la figure est "plus manipulable", il est clair que
pour la solution 2, la figure est plus complexe il y a plus de carreaux de Bézier donc
plus de calculs mais sur une machine "moderne" et "standard" je doute que cela
ralentisse notablement...
O.G.

Ce n'est pas une question de ralentissement, elle est plus facile à manipuler, selon moi, car le dé tourne sur lui même comme le ferait un ballon autour de son centre.
Précédemment, elle tournait autour autour d'une arête latérale (celle de gauche me semble t-il). Ce qui avait pour effet d'avoir des rotations plus difficiles à diriger avec la souris.
AndréC
Déca-utilisateur
 
Messages: 17
Inscription: Dimanche 17 Avril 2016, 13:25
Statut actuel: Actif et salarié | Enseignant

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

Messagepar OG » Mercredi 12 Juillet 2017, 17:18

AndréC a écrit:
OG a écrit:@AndréC : je ne sais pas pourquoi la figure est "plus manipulable", il est clair que
pour la solution 2, la figure est plus complexe il y a plus de carreaux de Bézier donc
plus de calculs mais sur une machine "moderne" et "standard" je doute que cela
ralentisse notablement...
O.G.

Ce n'est pas une question de ralentissement, elle est plus facile à manipuler, selon moi, car le dé tourne sur lui même comme le ferait un ballon autour de son centre.
Précédemment, elle tournait autour autour d'une arête latérale (celle de gauche me semble t-il). Ce qui avait pour effet d'avoir des rotations plus difficiles à diriger avec la souris.


Ok, je comprends mieux. C'est peut-être juste une question de définition des paramètres de perspective, qui (bizarrement) ne sont pas les mêmes.
Avec la fenêtre OpenGL, la touche "c" affiche dans la console tous les paramètres... permet de comparer les deux fichiers asy.

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

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

Messagepar AndréC » Mercredi 12 Juillet 2017, 19:08

OG a écrit:Ok, je comprends mieux. C'est peut-être juste une question de définition des paramètres de perspective, qui (bizarrement) ne sont pas les mêmes.
Avec la fenêtre OpenGL, la touche "c" affiche dans la console tous les paramètres... permet de comparer les deux fichiers asy.
O.G.

Voici les paramètres avec le dé du départ :
Code: Tout sélectionner
currentprojection=orthographic(
camera=(-2.0108149780213,14.4048903065911,0.973583358060801),
up=(-0.00700835867881202,-0.00309172725538799,0.0312695816480041),
target=(1.90038956793259e-15,8.63024929298462e-16,2.51968584885631e-16),
zoom=0.613913253540759);


Et ceux avec le dé translaté qui tourne autour de son centre :
Code: Tout sélectionner
currentprojection=orthographic(
camera=(11.8235956621239,4.72943826484957,7.09415739727435),
up=(-0.014547132307495,-0.005818852922998,0.0281244557944903),
target=(1.90038956793259e-15,8.63024929298462e-16,2.51968584885631e-16),
zoom=0.613913253540759);


Je n'y pige rien... :shock:
AndréC
Déca-utilisateur
 
Messages: 17
Inscription: Dimanche 17 Avril 2016, 13:25
Statut actuel: Actif et salarié | Enseignant

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

Messagepar rebouxo » Mercredi 12 Juillet 2017, 21:40

Ben camera, c'est la position de la caméra ;-). De l'observateur de ta scène 3D.
up indique où est le haut de la scène. zoom me paraît clair.
target n'est pas clair, je crois avoir compris que c'est la direction dans laquelle tu regardes, mais sans être certain.

Moi, je règle ma scène dans la fenêtre OpenGL, puis un coup de "c" est je copie les paramètres dans mon code.

Olivier
A line is a point that went for a walk. Paul Klee
Par solidarité, pas de MP
rebouxo
Modérateur
 
Messages: 6743
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Re: [RESOLU] Supprimer le scintillement d'un dé à jouer en 3

Messagepar AndréC » Mercredi 12 Juillet 2017, 22:11

Merci.
Je viens de regarder dans le document « Asymptote 3D » de Bruno Colombel http://asy.marris.fr/ressources/ASY_3D.pdf , il est écrit que « camera » est l'endroit où elle se trouve et « target » l'endroit où elle regarde.

Je cite en p 8 « Projette en deux dimensions du point de vue d’un observateur positionné en camera qui regarde target »
AndréC
Déca-utilisateur
 
Messages: 17
Inscription: Dimanche 17 Avril 2016, 13:25
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 1 invité