Page 1 sur 1

Dessiner des surfaces topologiques

MessagePosté: Jeudi 10 Mars 2011, 15:49
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.

Re: Dessiner des surfaces topologiques

MessagePosté: Jeudi 10 Mars 2011, 17:04
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

Re: Dessiner des surfaces topologiques

MessagePosté: Jeudi 10 Mars 2011, 20:05
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.

Re: Dessiner des surfaces topologiques

MessagePosté: Vendredi 11 Mars 2011, 15:42
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

Re: Dessiner des surfaces topologiques

MessagePosté: Vendredi 11 Mars 2011, 20:25
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 ?

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é ?

Re: Dessiner des surfaces topologiques

MessagePosté: Vendredi 11 Mars 2011, 21:25
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 ?

Re: Dessiner des surfaces topologiques

MessagePosté: Samedi 12 Mars 2011, 09:13
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.

Re: Dessiner des surfaces topologiques

MessagePosté: Samedi 12 Mars 2011, 10:09
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.

Re: Dessiner des surfaces topologiques

MessagePosté: Samedi 12 Mars 2011, 14:07
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

Re: Dessiner des surfaces topologiques

MessagePosté: Samedi 12 Mars 2011, 14:27
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)

Re: Dessiner des surfaces topologiques

MessagePosté: Samedi 12 Mars 2011, 16:28
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

Re: Dessiner des surfaces topologiques

MessagePosté: Samedi 12 Mars 2011, 16:48
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.

Re: Dessiner des surfaces topologiques

MessagePosté: Samedi 12 Mars 2011, 18:05
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).