À propos de la routine surface()

Pour toute demande d'aide sur des exemples non finalisés, c'est ici.
Les exemples aboutis et intéressants seront ajoutés aux sous-forums qui suivent.

Règles du forum
Pour toute demande d'aide pour la conception (ou la confirmation d'un code) d'une figure Asymptote, c'est ici.

J'invite ceux qui ont régulièrement des questions à poser à aller dans leur panneau de l'utilisateur pour indiquer dans la signature de leurs messages :

  1. Nom du système d'exploitation (W7 ou Ubuntu 12.04 ou ...)
  2. Version d'Asymptote et éditeur utilisé pour les figures Asymptote
  3. Distribution LaTeX et éditeur utilisé pour les tex.


On va gagner du temps dans les réponses !
Fabrice
Messages : 92
Enregistré le : sam. 13 mars 2010, 11:41

À propos de la routine surface()

Message non lu par Fabrice » lun. 16 janv. 2012, 14:57

Bonjour,
L'énoncé de l'exercice que je veux illustrer est le suivant :

Code : Tout sélectionner

Une galette circulaire de rayon 15 cm a été entamée depuis le centre. La part entamée est-elle inférieure, égale ou supérieure au quart de la galette ?

Je joins un dessin fait dans le plan de la galette :http://www.fileupyours.com/view/310238/part.pdf
AO = 15, OH = 7 et HC = 6.
Le code est le suivant :

Code : Tout sélectionner

import three;
size(7cm,0);
currentlight=nolight;
currentprojection=perspective(
camera=(-6.10285631430519,36.029455663151,4.5056187380542),
up=(0.00212394924123073,-0.0148253878706536,0.123534632293459),
target=(-3.50925769342241,-0.954817014611455,0.0225523065454158),
zoom=1,
angle=6.53206876661594,
autoadjust=false);
pair z1=(0,0);
real r=15, a1=-62.18, a2=-267.89;
path p=z1--arc(z1,r,a1,a2)--cycle;
path3 p3=path3(p,XYplane);
draw(surface(p3),lightgray,0.8bp+black);
draw(shift(0.8*Z)*surface(p3),lightgray,0.8bp+black);
draw(extrude(p,0.8*Z),lightgray,0.8bp+black);

On verra de suite le problème. De plus, je souhaiterais coder la figure à partir des indications ci-dessus.
Merci.
Debian Sid + Asymptote 2.25svn + Emacs + TeXLive 2013

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1328
Enregistré le : dim. 7 mars 2010, 14:50

Re: À propos de la routine surface()

Message non lu par GM » lun. 16 janv. 2012, 15:28

Puis-je repartir de zéro pour faire une proposition ?

Si les données sont celles précisées... je n'ai pas trop envie de voir ce genre de choses : a1=-62.18, a2=-267.89.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 10/10/17) :
PC n°1 :Windows 10 - Asymptote(2.41)+MikTeX2.9 - Editeurs : Notepad++ et TeXworks.
Mes autres PC :Ubuntu 16.04LTS - Asymptote(2.42 git) + TexLive2017 - Editeur : TeXworks.
Merci de préciser la votre pour faciliter l'aide des autres !

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1328
Enregistré le : dim. 7 mars 2010, 14:50

Re: À propos de la routine surface()

Message non lu par GM » lun. 16 janv. 2012, 15:34

Fabrice a écrit :On verra de suite le problème.


Si le problème était celui des traits de trop sur les bases, le patch rapide est celui-ci :

remplacer :

Code : Tout sélectionner

draw(surface(p3),lightgray,0.8bp+black);
draw(shift(0.8*Z)*surface(p3),lightgray,0.8bp+black);

par :

Code : Tout sélectionner

draw(surface(p3),lightgray);
draw(p3,0.8bp+black);

draw(shift(0.8*Z)*surface(p3),lightgray);
draw(shift(0.8*Z)*p3,0.8bp+black);
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 10/10/17) :
PC n°1 :Windows 10 - Asymptote(2.41)+MikTeX2.9 - Editeurs : Notepad++ et TeXworks.
Mes autres PC :Ubuntu 16.04LTS - Asymptote(2.42 git) + TexLive2017 - Editeur : TeXworks.
Merci de préciser la votre pour faciliter l'aide des autres !

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1328
Enregistré le : dim. 7 mars 2010, 14:50

Re: À propos de la routine surface()

Message non lu par GM » lun. 16 janv. 2012, 15:44

(troisième partie de ma réponse)

Pour les cotations, je donne aussi une référence rapide pour dépanner rapidement : ce sujet.
On y suggère deux méthodes différentes : tout dépend... si c'est une figure destinée à être tournée ou pas.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 10/10/17) :
PC n°1 :Windows 10 - Asymptote(2.41)+MikTeX2.9 - Editeurs : Notepad++ et TeXworks.
Mes autres PC :Ubuntu 16.04LTS - Asymptote(2.42 git) + TexLive2017 - Editeur : TeXworks.
Merci de préciser la votre pour faciliter l'aide des autres !

Fabrice
Messages : 92
Enregistré le : sam. 13 mars 2010, 11:41

Re: À propos de la routine surface()

Message non lu par Fabrice » lun. 16 janv. 2012, 17:21

Salut,
GM a écrit :Puis-je repartir de zéro pour faire une proposition ?

Pourquoi tu ne pourrais pas ?

GM a écrit : je n'ai pas trop envie de voir ce genre de choses : a1=-62.18, a2=-267.89.

J'ai résolu l'exercice à la "manière" des élèves en faisant de la trigonométrie élémentaire, sans chercher la complication !

La figure n'est pas destinée à être bougée mais seulement à illustrer un énoncé de dns.

GM a écrit :
Fabrice a écrit :On verra de suite le problème.


Si le problème était celui des traits de trop sur les bases


Pourquoi ces traits en trop ?
En corrigant un peu mon code, il suffit de faire :

Code : Tout sélectionner

draw(surface(p3),white);
draw(shift(0.8*Z)*surface(p3),white);
draw(extrude(p,0.8*Z),white,0.8bp+red);

Merci.
Debian Sid + Asymptote 2.25svn + Emacs + TeXLive 2013

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1328
Enregistré le : dim. 7 mars 2010, 14:50

Re: À propos de la routine surface()

Message non lu par GM » lun. 16 janv. 2012, 17:39

Fabrice a écrit :Pourquoi ces traits en trop ?


Une surface est un ensemble de "carreaux" de Bezier de ce genre là :

Image


Une base de ta galette est constituée de deux carreaux. L'un des deux "pen" est pour les mettre en évidence.

Tu remplacerais :

Code : Tout sélectionner

draw(surface(p3),lightgray,0.8bp+black);

par ceci :

Code : Tout sélectionner

draw(surface(p3),nu=5,nv=2,lightgray,0.8bp+black);

et tu aurais chacun des deux carreaux (2 étant le minimum "obligatoire" dans ton exemple compte tenu de la complexité de ta base)...
Image

éclaté en 5x2 "carreaux" :
Image
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 10/10/17) :
PC n°1 :Windows 10 - Asymptote(2.41)+MikTeX2.9 - Editeurs : Notepad++ et TeXworks.
Mes autres PC :Ubuntu 16.04LTS - Asymptote(2.42 git) + TexLive2017 - Editeur : TeXworks.
Merci de préciser la votre pour faciliter l'aide des autres !

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1328
Enregistré le : dim. 7 mars 2010, 14:50

Re: À propos de la routine surface()

Message non lu par GM » lun. 16 janv. 2012, 17:52

GM a écrit :Une base de ta galette est constituée de deux carreaux.

Si tu te dis que :

"c'est bizarre : le "carreau" donné en exemple était défini à partir de 4 points...
alors que pour galette, il semble n'y avoir que trois points pour chacun des carreaux"

je te cite la doc :

Planar Bezier surfaces patches are constructed using Orest Shardt’s bezulate routine, which decomposes (possibly nonsimply connected) regions bounded (according to the zerowinding fill rule) by simple cyclic paths (intersecting only at the endpoints) into subregions bounded by cyclic paths of length 4 or less.


Tu auras lu la fin : "4 ou moins".

A propos de nu et nv :

The parameters nu and nv specify the number of subdivisions for drawing optional mesh lines for each Bezier patch.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 10/10/17) :
PC n°1 :Windows 10 - Asymptote(2.41)+MikTeX2.9 - Editeurs : Notepad++ et TeXworks.
Mes autres PC :Ubuntu 16.04LTS - Asymptote(2.42 git) + TexLive2017 - Editeur : TeXworks.
Merci de préciser la votre pour faciliter l'aide des autres !

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1328
Enregistré le : dim. 7 mars 2010, 14:50

Re: À propos de la routine surface()

Message non lu par GM » lun. 16 janv. 2012, 18:16

Pour être complet... par rapport à ta question, voilà encore ce que tu peux obtenir avec ton code initial, sous acrobat-reader :

Image


Tu as le détail des parties qui constituent l'image prc... et tu peux les cocher-décocher.

Constate que les bases sont faites en deux parties... parties que j'appelle "carreaux", que la doc appelle "patch"... et qui s'appelle bizarrement "node" dans acrobat-reader.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 10/10/17) :
PC n°1 :Windows 10 - Asymptote(2.41)+MikTeX2.9 - Editeurs : Notepad++ et TeXworks.
Mes autres PC :Ubuntu 16.04LTS - Asymptote(2.42 git) + TexLive2017 - Editeur : TeXworks.
Merci de préciser la votre pour faciliter l'aide des autres !

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1328
Enregistré le : dim. 7 mars 2010, 14:50

Re: À propos de la routine surface()

Message non lu par GM » jeu. 19 janv. 2012, 15:38

Ai-je rêvé... ou ai-je bien lu depuis mon smartphone au lycée... qu'il y avait une relance qui a disparu.
Le problème serait-il réglé ? :roll:
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 10/10/17) :
PC n°1 :Windows 10 - Asymptote(2.41)+MikTeX2.9 - Editeurs : Notepad++ et TeXworks.
Mes autres PC :Ubuntu 16.04LTS - Asymptote(2.42 git) + TexLive2017 - Editeur : TeXworks.
Merci de préciser la votre pour faciliter l'aide des autres !

Fabrice
Messages : 92
Enregistré le : sam. 13 mars 2010, 11:41

Re: À propos de la routine surface()

Message non lu par Fabrice » jeu. 19 janv. 2012, 15:54

Salut,
Tout d'abord, je te remercie pour toutes ces explications supplémentaires (ce que je précisais dans le message qui a disparu !).

GM a écrit :Ai-je rêvé... ou ai-je bien lu depuis mon smartphone au lycée... qu'il y avait une relance qui a disparu.

Donc, tu n'a pas rêvé !
En fait, j'ai essayé autre chose sans que cela soit très convaincant. La figure ne doit pas être manipulée, j'ai donc essayé avec la routine distance() en compilant de cette manière :

Code : Tout sélectionner

asy -V -noprc -render=0 -f pdf fichier.asy

Le résultat est surprenant !
J'ai donc retiré le message pour essayer de comprendre ce qui s'est passé, mais je n'ai pas encore eu le temps de me pencher sur le problème.
Debian Sid + Asymptote 2.25svn + Emacs + TeXLive 2013

Répondre