Parpaiun
Nombre de messages : 192 Age : 85 Localisation : HERAULT Date d'inscription : 15/04/2015
| Sujet: Les fonctions LINOR et ARCOR Mar 28 Avr 2015 - 15:58 | |
| Voici mon premier utilitaire ! LINOR veut dire ‘ligne ou droite orientée’ et ARCOR ‘Arc orienté’. Vous connaissez la fonction '2D_LINE' qui trace une droite de a à b, de même pour les fonctions '2D_POLY_FROM' et '2D_POLY_TO' ! Mais voilà, lorsque vous voulez coïncider une extrémité b de cette droite à l'extrémité c d'une autre droite, vous êtes obligé de tâtonner souvent en cherchant son orientation ce qui vous fait perdre du temps. Il en est de même pour l'ARC qui, bien curieusement, semble faire défaut dans la liste des primitives Panoramic. J'ai donc "inventé" deux fonctions pour cinq raisons: 1°) LINOR utilise le suivi de tracé. Idem pour ARCOR. 2°) La droite ou l'arc sont orientables selon l’angle donné par le programmeur. 3°) Possibilité d'attribuer un type de tracé (fin ou épais) avec '2D_PEN_WIDTH' ou autre. 4°) En géométrie 2D ou 3D, ou en trigonométrie, le tracé ne se fait plus par plots mais par lignes. Il n’est pas possible de se servir ici des fonctions ROT et SCALE. 5°) Ce programme vous évite de faire des calculs par formules mathématiques ! Exemple d'appels de fonctions prévues pour Panoramic: LINOR(x1,y1,lr,la,lt) où ‘x1 et y1’ sont les coordonnées de départ de la droite, ‘lr’ est la longueur en pixels, ‘la’ est l'angle de direction (0 à 360 degrés), et ‘lt’ le tracé (1 pour actif <-> pen Down), 0 pour inactif <-> pen up). ARCOR(ax,ay,ar,ad,al,at) où ‘ax et ay’ sont les coordonnées de départ de l'arc, ‘ar’ le rayon de l'arc ‘ad’ la direction angulaire de départ en degrés (de 0 à 360), ‘al’ la longueur de l'arc et enfin ‘at’ est l'orientation (1 pour gauche, -1 pour droite). Pour tracer la droite ou l'arc suivants, on répète simplement x et y (sans les valeurs), ce qui assure un suivi de tracé et on modifie les autres valeurs selon sa convenance. D’après la figure qu’il veut dessiner, le programmeur a toute liberté de choix entre LINOR pour tracer des droites et ARCOR pour les arcs. Ces deux fonctions associées, très faciles d'emploi, permettent d'obtenir à bonne vitesse une très grande variété de figures géométriques fixes en 2D ou 3D. Code: - Code:
-
rem ' =========================================================== rem Auteur: Parpaiun rem Date-version: 19/04/2015 rem ============================================================================ dim pi,rad,th,x,x2,y,y2 width 0,500 : height 0,500 caption 0,"Les fonctions LINOR et ARCOR" pi = acos(-1) : rad = pi / 180
alpha 10 : font_name 10 ,"ariel" : font_bold 10 : font_size 10,18 : top 10,50 : left 10,50 caption 10,"Les fonctions LINOR et ARCOR" + chr$(13) + string$(15," ")+"Par Parpaiun"
' ***************************************************************************** rem A partir d'ici, mettez ici vos directives de tracé : 2d_pen_width 3 x = 100 : y = 430 linor(x,y,200,0,1) linor(x,y,150,90,1) arcor(x,y,100,90,180,-1) linor(x,y,150,270,1)
' =============================================== x = 220 : y = 350 linor(x,y,40,0,1) linor(x,y,30,90,1) arcor(x,y,20,90,180,-1) linor(x,y,30,270,1) ' ============================================== x = 150 : y = 350 linor(x,y,40,0,1) linor(x,y,30,90,1) arcor(x,y,20,90,180,-1) linor(x,y,30,270,1)
end ' terminate rem ' ============================================================ sub linor(x1,y1,lr,la,lt) la = la * rad for th = 1 to lr x2 = x1 + th * cos(la) y2 = y1 + th * sin(la * -1) next th 2d_pen_color 0,0,0: if lt = 0 then 2d_pen_color 255,255,255 2d_line x1,y1,x2,y2 x = x2: y = y2 END_SUB rem ' ============================================================ sub arcor(ax,ay,ar,ad,al,at) dim_local mx,my,n ad = (360 - ad) * rad n = int(0.5 + ar * al * rad) for th = 1 to n if th > 1 then 2d_line mx,my,ax,ay mx = ax : my = ay ax = ax + cos(ad) ay = ay + sin(ad) ad = ad + at / ar next th x = ax : y = ay END_SUB rem =============================================================
Voilà. J'espère que les matheux en géométrie 2D ou 3D et en trigonométrie tireront profit de mon programme pour obtenir de belles figures plus ou moins complexes. De la part de Parpaiun | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Les fonctions LINOR et ARCOR Mar 28 Avr 2015 - 16:32 | |
| Intéressantes, ces fonctions. surtout pour l'arc.
Pour les lignes droites, as-tu regardé les commandes 2D_POLY_FROM (définit le point de départ d'un segment droit) et 2D_POLY_TO (définit le point d'arrivé d'un segment droit) ? Et pour tracer un polygone, tu fais une fois 2D_POLY_FROM, puis autant de fois que nécessaire 2D_POLY_TO, avec les coordonnées données au 2D_POLY_FROM pour le dernier 2D_POLY_TO, pour avoir un polygone fermé. | |
|
Parpaiun
Nombre de messages : 192 Age : 85 Localisation : HERAULT Date d'inscription : 15/04/2015
| Sujet: Les fonctions LINOR et ARCOR Mar 28 Avr 2015 - 21:12 | |
| Bien reçu ton message 5 sur 5. C'est très bien pour un 2D_POLY_FROM puis plusieurs 2D_POLY_TO. Mais voilà, comment fais tu après pour faire suivre le tracé avec un ou plusieurs ARCS ? Je parie que tu n'as pas prévu ce problème ... Si je gagne, force est d'utiliser mes fonctions LINOR et ARCOR ! Si je perds, je te dois un apéro ! Bonsoir ! de Parpaiun | |
|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Les fonctions LINOR et ARCOR Mer 29 Avr 2015 - 1:10 | |
| - Code:
-
' Tracer une figure quelconque à l'aide de 2D_LINE 2d_line 100,100,200,100 2d_line 200,100,100,200 2d_line 100,200,200,200
' Tracé à l'aide de 2D_POLY_FROM / 2D_POLY_TO ' On choisi l'origine du tracé 2d_poly_from 300,100 ' On poursuit 2d_poly_to 400,100 : 2d_poly_to 300,200 : 2d_poly_to 400,200
Pour l'apéro, c'est un peu tard maintenant : reportons-le à demain. | |
|