Dessiner des surfaces topologiques

Tout ce qui concerne le langage Asymptote. Ce langage est utilisable sur le forum via les balises asy.
[participation réservée aux utilisateurs inscrits]
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.
cerise
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 447
Inscription : mercredi 08 juin 2005, 18:03
Contact :

Dessiner des surfaces topologiques

Message non lu par cerise »

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.
Pièces jointes
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
maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: Dessiner des surfaces topologiques

Message non lu par maurice »

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
Francky
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 681
Inscription : dimanche 11 avril 2010, 14:01

Re: Dessiner des surfaces topologiques

Message non lu par Francky »

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
cerise
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 447
Inscription : mercredi 08 juin 2005, 18:03
Contact :

Re: Dessiner des surfaces topologiques

Message non lu par cerise »

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
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Dessiner des surfaces topologiques

Message non lu par GMaths »

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 ?
320d048aa91ff2dc5d97c871a13ce5b75daaaa8d.svg
En résumé : quel est le cahier des charges de ce qui est espéré ?
Francky
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 681
Inscription : dimanche 11 avril 2010, 14:01

Re: Dessiner des surfaces topologiques

Message non lu par Francky »

@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
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Dessiner des surfaces topologiques

Message non lu par GMaths »

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.
Francky
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 681
Inscription : dimanche 11 avril 2010, 14:01

Re: Dessiner des surfaces topologiques

Message non lu par Francky »

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
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Dessiner des surfaces topologiques

Message non lu par GMaths »

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
Francky
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 681
Inscription : dimanche 11 avril 2010, 14:01

Re: Dessiner des surfaces topologiques

Message non lu par Francky »

Ç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
maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: Dessiner des surfaces topologiques

Message non lu par maurice »

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
Francky
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 681
Inscription : dimanche 11 avril 2010, 14:01

Re: Dessiner des surfaces topologiques

Message non lu par Francky »

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
cerise
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 447
Inscription : mercredi 08 juin 2005, 18:03
Contact :

Re: Dessiner des surfaces topologiques

Message non lu par cerise »

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
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message