Des nouvelles
Des nouvelles
Bonjour,
Des nouveautés sur mon site consacré à Asymptote:
Voilà... cela faisait longtemps que je voulais faire une page d'animations; c'est chose faite.
Des nouveautés sur mon site consacré à Asymptote:
Voilà... cela faisait longtemps que je voulais faire une page d'animations; c'est chose faite.
-
- Administrateur
- Messages : 8058
- Inscription : samedi 28 mai 2005, 14:23
- Statut actuel : Enseignant
- Contact :
Re: [Asymptote] Des nouvelles
Très bien tout ça.
Il va falloir que je regarde l'histoire des polyèdres car je pense en avoir besoin sous peu.
Sinon, c'est quoi l'histoire des fichiers OBJ ?
Il va falloir que je regarde l'histoire des polyèdres car je pense en avoir besoin sous peu.
Sinon, c'est quoi l'histoire des fichiers OBJ ?
-
- Modérateur honoraire
- Messages : 6962
- Inscription : mercredi 15 février 2006, 13:18
- Localisation : le havre
- Contact :
Re: [Asymptote] Des nouvelles
Super, génial.
Une petite question, si on veut faire des solides, plus basiques (pyramides à base carrée par exemple). Comment faire ?
Olivier
Une petite question, si on veut faire des solides, plus basiques (pyramides à base carrée par exemple). Comment faire ?
Olivier
Re: [Asymptote] Des nouvelles
Salut MB,MB a écrit :Il va falloir que je regarde l'histoire des polyèdres car je pense en avoir besoin sous peu.
Pour l'instant l'extension ne fait pas grand chose: elle affiche juste un ensemble de polyèdres.
Dans le futur... peut-être...
Les fichiers obj sont des fichiers texte qui contiennent des informations pour définir un objet 3D.MB a écrit :Sinon, c'est quoi l'histoire des fichiers OBJ ?
La plupart des gros logiciels de synthèse d'image en 3D peuvent exporter en .obj
Voir http://fr.wikipedia.org/wiki/Obj
-
- Administrateur
- Messages : 8058
- Inscription : samedi 28 mai 2005, 14:23
- Statut actuel : Enseignant
- Contact :
Re: [Asymptote] Des nouvelles
Bonne question, ça m'intéresse aussi ça. (mais je ne sais pas si ce module le permet)rebouxo a écrit :Une petite question, si on veut faire des solides, plus basiques (pyramides à base carrée par exemple). Comment faire ?
Re: [Asymptote] Des nouvelles
C'est très simple, il suffit de définir chaque face:rebouxo a écrit :Une petite question, si on veut faire des solides, plus basiques (pyramides à base carrée par exemple). Comment faire ?
Code : Tout sélectionner
import polyhedron;
settings.tex="pdflatex";
settings.outformat="pdf"; // for opacity
polyhedron pyramid;
real sq2=sqrt(2)/2;
pyramid[0]=(sq2,-sq2,0)--(sq2,sq2,0)--(-sq2,sq2,0)--(-sq2,-sq2,0)--cycle;
pyramid[0]=pyramid[0]--cycle;
pyramid[1]=(sq2,-sq2,0)--(sq2,sq2,0)--(0,0,1)--cycle;
pyramid[2]=(sq2,sq2,0)--(-sq2,sq2,0)--(0,0,1)--cycle;
pyramid[3]=(-sq2,sq2,0)--(-sq2,-sq2,0)--(0,0,1)--cycle;
pyramid[4]=(-sq2,-sq2,0)--(sq2,-sq2,0)--(0,0,1)--cycle;
size(10cm);
polyhedron[] parr={pyramid};
filldraw(parr,new pen[]{lightgrey},op=0.9);
- Pièces jointes
-
- pyramid.png (19.58 Kio) Consulté 1820 fois
-
- Modérateur honoraire
- Messages : 6962
- Inscription : mercredi 15 février 2006, 13:18
- Localisation : le havre
- Contact :
Re: [Asymptote] Des nouvelles
Si j'ai bien compris tu décris chacune des faces.
Et si je veux avoir une pyramide en fil de fer : pas de couleur sur les faces, mais des pointillés sur les arêtes cachées ?
C'est possible ?
Olivier
Et si je veux avoir une pyramide en fil de fer : pas de couleur sur les faces, mais des pointillés sur les arêtes cachées ?
C'est possible ?
Olivier
Re: [Asymptote] Des nouvelles
Bonjour à tous,
Si je puis me permettre, pourquoi ne pas faire une macro qui construit elle-même les faces? On lui fournit la liste des sommets puis la liste des faces mais avec les numéros de sommets au lieu des coordonnées. C'est ce que je propose dans mon programme (la macro MakePoly), cela donnerait pour cet exemple:
on définit les 4 sommets de base: s1, s2, s3, s4 puis le sommet du haut s5 (dans le sens direct), on construit ensuite la pyramide comme ceci (attention à l'orientation des faces):
L'avantage c'est qu'il devient alors plus facile d'écrire ensuite des macros qui calculent des sommets et construisent elle-même des polyèdres.
Si je puis me permettre, pourquoi ne pas faire une macro qui construit elle-même les faces? On lui fournit la liste des sommets puis la liste des faces mais avec les numéros de sommets au lieu des coordonnées. C'est ce que je propose dans mon programme (la macro MakePoly), cela donnerait pour cet exemple:
on définit les 4 sommets de base: s1, s2, s3, s4 puis le sommet du haut s5 (dans le sens direct), on construit ensuite la pyramide comme ceci (attention à l'orientation des faces):
Code : Tout sélectionner
pyramide:= MakePoly([s1,s2,s3,s4,s5],[4,3,2,1,jump,1,2,5,jump,2,3,5,jump,3,4,5,jump,4,1,5,jump])
Re: [Asymptote] Des nouvelles
Pour du fil de fer il suffit de remplacer le filldraw(parr,...) par draw(parr).rebouxo a écrit :Et si je veux avoir une pyramide en fil de fer : pas de couleur sur les faces, mais des pointillés sur les arêtes cachées ?
Les arrêtes en pointillés ne sont pas encore implémentées; si quelqu'un a un algorithme à proposer, je suis preneur.
-
- Administrateur
- Messages : 8058
- Inscription : samedi 28 mai 2005, 14:23
- Statut actuel : Enseignant
- Contact :
Re: [Asymptote] Des nouvelles
En effet, ça ne doit pas être très simple tout ça ... (dans un cas général)Ph. Ivaldi a écrit :Les arrêtes en pointillés ne sont pas encore implémentées; si quelqu'un a un algorithme à proposer, je suis preneur.
Re: [Asymptote] Des nouvelles
Bonjour Patrick,P.Fradin a écrit :Si je puis me permettre, pourquoi ne pas faire une macro qui construit elle-même les faces? On lui fournit la liste des sommets puis la liste des faces mais avec les numéros de sommets au lieu des coordonnées.
C'est effectivement une bonne méthode et c'est ainsi qu'est construit un .obj.
L'extension pour Asymptote est pour l'instant minimaliste; Je verrai ce que je peux faire lorsque j'aurais du temps...
(MB attend encore la fin de trembling et il reste un truc pénible à régler dans geometry_dev)
J'en profite pour te remercier pour les fichiers permettant de fabriquer les animations swf avec les boutons.
Re: [Asymptote] Des nouvelles
Pour les polyèdres convexes (uniquement) j'ai procédé ainsi dans TeXgraph:Ph. Ivaldi a écrit : Les arrêtes en pointillés ne sont pas encore implémentées; si quelqu'un a un algorithme à proposer, je suis preneur.
- structure de données: une arête est la donnée de deux points et un statut (visible/cachée),
- par défaut toutes les arêtes sont considérées comme cachées,
- on parcourt le polyèdre face par face:
* pour chaque face: on détermine si elle est visible ou non, c'est à dire si son vecteur normal est dirigé vers l'observateur (c'est juste un produit scalaire à faire), si elle est visible alors les arêtes de cette face sont visibles, on modifie donc leur statut.
Voilà c'est tout!
On peut alors envisager plusieurs modes de dessin:
* fil de fer: on dessine juste les arêtes en tenant compte de leur statut
* faces visibles uniquement avec éventuellement un remplissage
* faces visibles + arêtes cachées
C'est surtout Jean-Michel (Sarlat) qu'il faut remercier!J'en profite pour te remercier pour les fichiers permettant de fabriquer les animations swf avec les boutons.
Dernière modification par P.Fradin le dimanche 10 février 2008, 10:07, modifié 1 fois.
Re: [Asymptote] Des nouvelles
Salut à tous,
joli travail Philippe, j'aime beaucoup ton bateau playmobil :)
J'avais procédé ainsi avec geoPyX et les objets 3d (qui étaient aussi des .obj, j'ai d'ailleurs toujours un exemplaire de la navette spatiale, parmi pas mal d'autres objets, si ça t'interesse...) :
- trier les faces visibles/cachées (à l'aide du produit scalaire, cf algo de Patrick).
- commencer par tracer toutes les faces cachées en pointillés ;
- ensuite les visibles ;
Le rendu final est acceptable, mais personnelement je me suis arrêté là car je n'en étais pas totalement satisfait (une arête peut-être à la fois cachée/visible car appartenant à deux faces distinctes, la superposition se voit parfois un peu mais il faut vraiment être très attentif pour le remarquer).
Maintenant, (c'est totalement hors-sujet) je m'intéresse de plus en plus aux langages fonctionnels et je viens de trouver ceci implémenté en Common-Lisp: http://www.fractalconcept.com/ex.pdf
C'est le troisième projet (après Lout et Ant) que je vois qui tente une alternative à LaTeX/MetaPost en même temps...mais la barrière semble être le language.
Pourtant j'aime beaucoup la syntaxe minimaliste de Lisp et j'imagine déjà ce qu'on pourrait faire avec de telles choses.
joli travail Philippe, j'aime beaucoup ton bateau playmobil :)
J'avais procédé ainsi avec geoPyX et les objets 3d (qui étaient aussi des .obj, j'ai d'ailleurs toujours un exemplaire de la navette spatiale, parmi pas mal d'autres objets, si ça t'interesse...) :
- trier les faces visibles/cachées (à l'aide du produit scalaire, cf algo de Patrick).
- commencer par tracer toutes les faces cachées en pointillés ;
- ensuite les visibles ;
Le rendu final est acceptable, mais personnelement je me suis arrêté là car je n'en étais pas totalement satisfait (une arête peut-être à la fois cachée/visible car appartenant à deux faces distinctes, la superposition se voit parfois un peu mais il faut vraiment être très attentif pour le remarquer).
Maintenant, (c'est totalement hors-sujet) je m'intéresse de plus en plus aux langages fonctionnels et je viens de trouver ceci implémenté en Common-Lisp: http://www.fractalconcept.com/ex.pdf
C'est le troisième projet (après Lout et Ant) que je vois qui tente une alternative à LaTeX/MetaPost en même temps...mais la barrière semble être le language.
Pourtant j'aime beaucoup la syntaxe minimaliste de Lisp et j'imagine déjà ce qu'on pourrait faire avec de telles choses.
Re: [Asymptote] Des nouvelles
Bonjour,
Dans l'algorithme que j'ai proposé il n'y a pas ce problème puisque chaque arête est dessinée une seule fois. Initialement toutes les arêtes ont le statut "cachée", puis on parcourt toutes les faces une à une, lorsqu'une face est visible le statut de ses arêtes passe à "visible". Ensuite on peut dessiner chaque arête en fonction de son statut, et une seule fois chacune!.kib2 a écrit : Le rendu final est acceptable, mais personnelement je me suis arrêté là car je n'en étais pas totalement satisfait (une arête peut-être à la fois cachée/visible car appartenant à deux faces distinctes, la superposition se voit parfois un peu mais il faut vraiment être très attentif pour le remarquer).
Maintenant tu sais pourquoi dans TeXgraph tout est fonction et liste (en fait tout est "arbre" et exécuter signifie évaluer l'arbre)...Maintenant, (c'est totalement hors-sujet) je m'intéresse de plus en plus aux langages fonctionnels ....
Re: [Asymptote] Des nouvelles
Salut Kib2 et merci pour le compliment mais c'est Jens qui a fait le plus gros boulot.kib2 a écrit :joli travail Philippe, j'aime beaucoup ton bateau playmobil :)
Un joli .obj m'intéresse effectivement.kib2 a écrit : j'ai d'ailleurs toujours un exemplaire de la navette spatiale, parmi pas mal d'autres objets, si ça t'interesse...) :
C'est pourquoi je pense qu'il faut parcourir chaque arrête avec un petit pas et lancer un rayon vers la caméra pour savoir s'il intercepte une face.kib2 a écrit : une arête peut-être à la fois cachée/visible car appartenant à deux faces distinctes, la superposition se voit parfois un peu
Une autre idée (bête) et de tracer toutes les arrêtes en trait plein puis de hachurer chaque face (ordonnée) avec la couleur de fond (oui je sais le résultat risque d'être moche).
Ceci dit je ne me suis pas penché sérieusement sur la question...
C'est intéressant mais avant d'avoir toutes les fonctionnalités de TeX, il risque de passer beaucoup d'eau sous les ponts.kib2 a écrit : je viens de trouver ceci implémenté en Common-Lisp: http://www.fractalconcept.com/ex.pdf
Tu nous tiens au courant des évolutions ?
Re: [Asymptote] Des nouvelles
On est d'accord mais cela ne marche que pour les polyèdres convexes.P.Fradin a écrit :Dans l'algorithme que j'ai proposé il n'y a pas ce problème puisque chaque arête est dessinée une seule fois. Initialement toutes les arêtes ont le statut "cachée", puis on parcourt toutes les faces une à une, lorsqu'une face est visible le statut de ses arêtes passe à "visible". Ensuite on peut dessiner chaque arête en fonction de son statut, et une seule fois chacune!.
Comment faire dans le cas général (on peut supposé --sans perte de généralité-- que chaque face est convexe).
Re: [Asymptote] Des nouvelles
Bonjour Philippe,Ph. Ivaldi a écrit : On est d'accord mais cela ne marche que pour les polyèdres convexes.
Comment faire dans le cas général (on peut supposé --sans perte de généralité-- que chaque face est convexe).
Pour les non convexes, c'est évidemment plus délicat! Je ne vais pas polluer ce fil consacré à Asymptote avec mon programme, disons que l'utilisateur a deux méthodes pour représenter son polyèdre quand il est non convexe:
1) un tri de facettes de la plus éloignée à la plus proche puis affichage, c'est suffisant quand le solide n'est pas trop tordu.
ou
2) un tri de facettes avec découpage pour les classer, c'est l'algorithme de BSP-trees, ça fonctionne tout le temps mais cela peut faire une image très lourde en vectoriel!
Ce deux méthodes ne donnent pas les arêtes cachées en pointillés, l'astuce est de redessiner en pointillés toutes les arêtes par dessus, dans la même couleur et a même épaisseur bien sûr.
Personnellement, je n'aime pas trop voir les arêtes cachées en pointillés dans ce cas, je trouve qu'utiliser la transparence donne mieux, d'ailleurs Jean-Michel a mis quelques exemples sur son site Syracuse.
Re: [Asymptote] Des nouvelles
Tu ne pollues rien du tout et je ne peux que te remercier pour tes excellents conseils.P.Fradin a écrit :Je ne vais pas polluer ce fil consacré à Asymptote avec mon programme
Excellente astuce !P.Fradin a écrit :l'astuce est de redessiner en pointillés toutes les arêtes par dessus, dans la même couleur et a même épaisseur bien sûr.
Finalement je crois qu'il ne manque pas grand chose pour que les modules de Jens affiche les arrêtes cachées en pointillés.
Dès que j'ai un moment, j'y travaille. Encore merci !
-
- Modérateur spécialisé
- Messages : 2293
- Inscription : lundi 12 mars 2007, 11:20
- Localisation : Rouen
Re: [Asymptote] Des nouvelles
Bonjour
Tout cela est très joli.
Pour information, l'algorithme de Jens pour les polyèdres est similaire à celui utilisé par Patrick (ou encore m3D par Anthony Phan et bien d'autres encore) et travaille sur les faces.
1) trie selon la distance de la caméra au centre de gravité de la face
2) selon le produit scalaire qui teste face visible/invible on affiche la face et ses arêtes.
Donc facilement adaptable pour faire un mode fil de fer/pointillé. (mélanger transparence et pointillé n'est pas forcément un bon mélange)
Cordialement
O.G.
Tout cela est très joli.
Pour information, l'algorithme de Jens pour les polyèdres est similaire à celui utilisé par Patrick (ou encore m3D par Anthony Phan et bien d'autres encore) et travaille sur les faces.
1) trie selon la distance de la caméra au centre de gravité de la face
2) selon le produit scalaire qui teste face visible/invible on affiche la face et ses arêtes.
Donc facilement adaptable pour faire un mode fil de fer/pointillé. (mélanger transparence et pointillé n'est pas forcément un bon mélange)
Cordialement
O.G.