Dessiner des surfaces topologiques

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.

Dessiner des surfaces topologiques

Messagepar cerise » Jeudi 10 Mars 2011, 15:49

Bonjour,

Existe-t-il un package Asymptote permettant de dessiner facilement des surfaces topologiques, du genre de celle qui est en pièce-jointe ? (Là c'est moche, c'est fait à la va-vite, mais c'est pour donner l'idée.)
Si un tel package existe, permet-il de dessiner facilement des courbes sur la surface ?

Merci d'avance pour toute suggestion.
Fichiers joints
surface.png
Il fallait être Newton pour apercevoir que la Lune tombe quand tout le monde voit bien qu'elle ne tombe pas.
Paul Valéry
cerise
Méga-utilisateur
 
Messages: 448
Inscription: Mercredi 08 Juin 2005, 17:03
Statut actuel: Actif et salarié

Publicité

Re: Dessiner des surfaces topologiques

Messagepar maurice » Jeudi 10 Mars 2011, 17:04

Bonjour des trucs genre comme ça .... ?

Code: Tout sélectionner
import graph3;
import contour3;
size(300,0);
currentprojection=orthographic(5,5,5);

real mini=-1,
     maxi=1;

real f(real x, real y, real z) {return (x^2*((1-x^2)^2)*(4-x^2)^3-20*y^2)^2+80z^2-2;}

draw(surface(contour3(f,(mini,mini,mini),(maxi,maxi,maxi),nx=50)),purple);


C'est lourd à tracer ; mon ordinateur rame pas mal ...

tore2.png


avec nx=100, ca tourne et tourne ....

Maurice
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf
maurice
Méga-utilisateur
 
Messages: 399
Inscription: Jeudi 25 Mars 2010, 13:49
Statut actuel: Actif et salarié | Enseignant

Re: Dessiner des surfaces topologiques

Messagepar Francky » Jeudi 10 Mars 2011, 20:05

Le top serait des modèles types en courbes de Bezier.

J'avais commencé à y réfléchir pour un copain, mais j'ai arrêté faute de temps.
En tout cas, je n'ai pas trouvé de package.

Il reste à faire.
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
Francky
Giga-utilisateur
 
Messages: 683
Inscription: Dimanche 11 Avril 2010, 13:01
Statut actuel: Actif et salarié | Enseignant

Re: Dessiner des surfaces topologiques

Messagepar cerise » Vendredi 11 Mars 2011, 15:42

maurice a écrit:Bonjour des trucs genre comme ça .... ?

Non ; j'ai pensé en effet à utiliser des surfaces paramétrées explicitement, mais le temps de calcul est trop long pour ce que je veux en faire, et la forme pas assez "souple" (j'aimerais pouvoir facilement grossir ou rétrécir les trous, changer leur disposition, etc, pour que la figure soit la plus lisible possible selon ce que je fais avec...)
Mais merci pour la proposition.

Francky a écrit:Le top serait des modèles types en courbes de Bezier.

Oui, certainement.

Francky a écrit:J'avais commencé à y réfléchir pour un copain, mais j'ai arrêté faute de temps.
En tout cas, je n'ai pas trouvé de package.

Il reste à faire.

Bon, merci pour ces informations. Je me débrouillerai à la main pour le moment, et si un jour je suis motivée et que j'ai le temps, j'essaierai de faire un package (mais il faudra sans doute que j'aie progressé en Asymptote).

Merci en tout cas à tous les deux pour vos réponses.

Cerise
Il fallait être Newton pour apercevoir que la Lune tombe quand tout le monde voit bien qu'elle ne tombe pas.
Paul Valéry
cerise
Méga-utilisateur
 
Messages: 448
Inscription: Mercredi 08 Juin 2005, 17:03
Statut actuel: Actif et salarié

Re: Dessiner des surfaces topologiques

Messagepar GMaths » Vendredi 11 Mars 2011, 20:25

Je n'ai personnellement jamais fait de topologie donc j'ai cherché quelques liens. Beaucoup de schémas topologiques dans ce manuscrit de thèse.

Il faudrait en savoir un peu plus sur le ou les types de figures voulues... sur l'étendue des attentes... pour voir s'il est possible de proposer quelque chose.

Le problème est-il seulement de schématiser des trous plus ou moins grands (visibles) ?

Faire une fonction qui rende facile la schématisation d'un trou plus ou moins visible, comme présenté dans l'exemple, suivant un paramètre, ce n'est pas difficile... mais est-il souhaité d'autres formes ?

3e4dcd6413ab4237998d1360700f028e.png

Code: Tout sélectionner
size(200);

void trou(pair pA, real l=1, real a=20){
path p1=pA-l{dir(-a)}..{dir(a)}pA+l,
p2=(point(p1,.1)){dir(a)}..{dir(-a)}(point(p1,.9));
draw(p1,1bp+blue);
draw(p2,blue);
}

trou((0,0));
trou((4,0),a=30);
trou((0,-1),a=40);
trou((0,-2),l=2);


En résumé : quel est le cahier des charges de ce qui est espéré ?
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Dessiner des surfaces topologiques

Messagepar Francky » Vendredi 11 Mars 2011, 21:25

@GM
te souviens-tu cet été sur ton forum : je souhaitais tailler un short avec des carreaux de Bezier, c'était pour ça.

Exemple simple :
tu as deux cercles (rayon r1, r2) dans l'espace, avec deux vecteurs normaux (n1, n2)
Construire une surface de Bezier, un "tube" du cercle 1 au cercle2 où n1 et n2 sont utilisés.

La suite : on donne trois cercles (un grand, deux petits) et leur rayon.
Faire le short ...

Avec ces deux objets, mon ami dispose d'un théorème qui lui permet de représenter toute l'étendue topologique de ses surfaces étudiées,
il serait ravi de disposer d'un outil qui construit ses courbes à partir de ces pantalons ou shorts.

Voilà pour mon cahier des charges.
Rejoint-il celui de cerise ?
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
Francky
Giga-utilisateur
 
Messages: 683
Inscription: Dimanche 11 Avril 2010, 13:01
Statut actuel: Actif et salarié | Enseignant

Re: Dessiner des surfaces topologiques

Messagepar GMaths » Samedi 12 Mars 2011, 09:13

Francky a écrit:Voilà pour mon cahier des charges.
Rejoint-il celui de cerise ?

J'ai crû comprendre qu'elle recherche plutôt des représentations schématiques.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Dessiner des surfaces topologiques

Messagepar Francky » Samedi 12 Mars 2011, 10:09

Ben, moi j'ai lu le contraire, d'ailleurs, elle souhaite en bonus tracer des courbes sur la surface (moi aussi),
donc ça me semble convenir. D'ailleurs la solution de Maurice convenait si elle était en carreaux de Bezier, donc ...

Merci pour tout.
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
Francky
Giga-utilisateur
 
Messages: 683
Inscription: Dimanche 11 Avril 2010, 13:01
Statut actuel: Actif et salarié | Enseignant

Re: Dessiner des surfaces topologiques

Messagepar GMaths » Samedi 12 Mars 2011, 14:07

Francky a écrit:tu as deux cercles (rayon r1, r2) dans l'espace, avec deux vecteurs normaux (n1, n2)
Construire une surface de Bezier, un "tube" du cercle 1 au cercle2 où n1 et n2 sont utilisés.


Des tubes dont le rayon varie, c'est possible :
Code: Tout sélectionner
import tube;
size3(300);
transform T(real t){return scale(1-.9t);}
draw(tube((-2,0,0)..(0,-2,0)..(2,0,0),unitcircle,T),red);


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

Re: Dessiner des surfaces topologiques

Messagepar Francky » Samedi 12 Mars 2011, 14:27

Ça me plait beaucoup, mais je l'aurais bien vu avec deux carreaux de Bezier. (genre deux tuiles)
Car, pour tracer une courbe par dessus, Bezier semble bien pratique (on reprend le barycentre différemment).

Et pi, pour le short, avec tube ???

En tout cas, le rendu est nickel, je suis sûr que cela conviendra aussi à cerise, ainsi qu'à tous les fans de topo.

Exemple d'objectif à la fin : faire un bretzel en collant des morceaux.
(Et je sais qu'on peut aussi faire avec une fonction, HS ici)
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
Francky
Giga-utilisateur
 
Messages: 683
Inscription: Dimanche 11 Avril 2010, 13:01
Statut actuel: Actif et salarié | Enseignant

Re: Dessiner des surfaces topologiques

Messagepar maurice » Samedi 12 Mars 2011, 16:28

Francky a écrit:te souviens-tu cet été sur ton forum : je souhaitais tailler un short avec des carreaux de Bezier, c'était pour ça.


Pour mémoire, ça c'était fini comment cette histoire de short ?

Maurice
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf
maurice
Méga-utilisateur
 
Messages: 399
Inscription: Jeudi 25 Mars 2010, 13:49
Statut actuel: Actif et salarié | Enseignant

Re: Dessiner des surfaces topologiques

Messagepar Francky » Samedi 12 Mars 2011, 16:48

C'est resté inachevé, je cherchais à assembler des carreaux, mais pour avoir un truc C2, le top c'est des triangles.
J'ai compris comment faire un triangle, mais pour les abouter, j'avais eu de la peine.
Mais je m'y prenais mal, je ne connaissais pas l'option -V qui m'aurait été bien utile.
J'ai guerroyé avec différentes vues, et pi ...
--
Déjà, un bon début serait le tube précédent avec des carreaux.
void tuyau(pair pA, triple nA, pair pB, triple nB)
où n est un vecteur normal au disque entrant A ou sortant B, et dont la norme serait le rayon du disque.

Pour l'améliorer encore, on peut ajouter deux paramètres real anglA et anglB, les angles de sortie,
afin de rabouter des morceaux. angl=0 -> fin en cylindre, angl<>0 -> fin en cône.
Ceci permettrait de faire des connections C1, si l'angle est le même. (et je parie même pour C2 si on s'y prend bien)
Pas le temps aujourd'hui, mais demain j'essaye de refaire un bout de tuyau.
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
Francky
Giga-utilisateur
 
Messages: 683
Inscription: Dimanche 11 Avril 2010, 13:01
Statut actuel: Actif et salarié | Enseignant

Re: Dessiner des surfaces topologiques

Messagepar cerise » Samedi 12 Mars 2011, 18:05

Bon, plus je réfléchis à ce que je voudrais pouvoir faire effectivement, plus ça me semble difficile techniquement :|
À la fois, j'aurais aimé des représentations relativement schématiques de mes surfaces (les plus claires possibles, sans effets de couleurs/lumière qui seraient certes très jolis mais qui réduiraient la lisibilité du schéma). Ce qui est plus facilement réalisable directement en 2D.
En même temps, je voudrais pouvoir dessiner des courbes dessus, de manière assez précise, et avec gestion des parties cachées, ce qui se ferait mieux avec un package qui gère la 3D.
Bref, j'ai l'impression que mon cahier des charges est assez contradictoire :|...

Bon, plus j'y réfléchis, et plus je pense que le mieux serait que je fasse les choses plus ou moins "à la main", en 2D, en me débrouillant pour que mes courbes aient l'air plaquées sur ma surface et en gérant les parties cachées à la main. À moins que je ne découvre un package "magique" :lol:

Merci beaucoup en tout cas, pour votre aide et vos conseils. Je tâcherai d'en faire le meilleur profit. Je vous ferai part des résultats (ce n'est pas encore pour tout de suite : je posais ma question par anticipation, parce que je devrais être amenée à faire ce genre de dessins pour ma thèse, mais ce ne sera sans doute pas dans un futur tout à fait immédiat).
Il fallait être Newton pour apercevoir que la Lune tombe quand tout le monde voit bien qu'elle ne tombe pas.
Paul Valéry
cerise
Méga-utilisateur
 
Messages: 448
Inscription: Mercredi 08 Juin 2005, 17:03
Statut actuel: Actif et salarié


Retourner vers Asymptote

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

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