FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Problème de math
par papydall Aujourd'hui à 1:53

» A propos des attributs de fichier
par papydall Hier à 14:33

» Problème de math
par Marc37 Sam 21 Oct 2017 - 23:04

» I Love You
par papydall Sam 21 Oct 2017 - 19:22

» Un petit "coucou" à tous les Panoramiciens !
par mindstorm Sam 21 Oct 2017 - 17:06

» MARK_ON déclenche un événement ON_CLICK à la place de ...
par Jean Claude Mer 18 Oct 2017 - 18:08

» mise a jour calculatrice
par joeeee2017 Mer 18 Oct 2017 - 15:57

» [solved] 3D_LINE How to ?
par Jicehel Mer 18 Oct 2017 - 11:01

» Convertisseur de base 10 de 2 à 36
par gigi75 Mar 17 Oct 2017 - 18:49

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» Calculatrice
par Jean Claude Sam 14 Oct 2017 - 12:30

» Compilateur FBPano
par jean_debord Jeu 12 Oct 2017 - 9:53

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

» à propos de Panoramic_Editor [Résolu]
par Klaus Mar 10 Oct 2017 - 3:19

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 Les fonctions LINOR et ARCOR

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Parpaiun

avatar

Nombre de messages : 192
Age : 78
Localisation : HERAULT
Date d'inscription : 15/04/2015

MessageSujet: Les fonctions LINOR et ARCOR   Mar 28 Avr 2015 - 16: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 cheers cheers cheers
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10075
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Les fonctions LINOR et ARCOR   Mar 28 Avr 2015 - 17: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é.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Parpaiun

avatar

Nombre de messages : 192
Age : 78
Localisation : HERAULT
Date d'inscription : 15/04/2015

MessageSujet: Les fonctions LINOR et ARCOR   Mar 28 Avr 2015 - 22: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 Question

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5551
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Les fonctions LINOR et ARCOR   Mer 29 Avr 2015 - 2: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Contenu sponsorisé




MessageSujet: Re: Les fonctions LINOR et ARCOR   

Revenir en haut Aller en bas
 
Les fonctions LINOR et ARCOR
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: