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
» Gestionnaire de Projets Panoramic
par Minibug Aujourd'hui à 2:10

» Mah-Jong européen new-look
par jjn4 Hier à 16:35

» Button_picture
par pascal10000 Hier à 11:41

» Pourquoi le compilateur stagne
par Minibug Hier à 11:09

» 4 (en analyse): SYNEDIT_TARGET_IS_OBJECT devient inactif
par Jack Hier à 10:09

» 3 (en analyse): Mauvaise interprétation du string "THEN"
par Jack Hier à 10:03

» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Marc Hier à 10:00

» KGF_dll - nouvelles versions
par pascal10000 Mer 13 Déc 2017 - 17:27

» track_bar circulaire
par Klaus Mar 12 Déc 2017 - 13:54

» API Windows
par Klaus Mar 12 Déc 2017 - 3:21

» Cartes de voeux, menus, etc.
par JL35 Lun 11 Déc 2017 - 17:48

» a l'aide klaus
par Minibug Lun 11 Déc 2017 - 11:42

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Lun 11 Déc 2017 - 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

» Ecouter la radio fm sur votre pc
par pascal10000 Sam 9 Déc 2017 - 3:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier

Partagez | 
 

 Premier pas en trigonométrie

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : 1, 2  Suivant
AuteurMessage
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Premier pas en trigonométrie   Ven 3 Juil 2015 - 12:27

Bonjour, j'ai posté le sujet dans l'aide car je souhaite une inspection de mon code par Papydall ou un autre matheux.
Le but est de vérifier l'exactitude du code et aussi celle des commentaires, pour que je puisse savoir si ma démarche pour créer un cercle point par point est correcte.
Et éventuellement, je suis preneur d'une autre façon de faire.

@Jack, si tu as l'occasion de tester, j'aimerai que tu te penche sur la ligne 20. Si on met cette ligne en fonction les lignes 24 et 33 ne sont pas exécutées (ou visibles) Question

Code:
' premiers pas en trigonométrie

dim pi,pir,r,cx,cy,ad,s,c,px,py
pi = acos(-1)            :' définition de pi
pir = pi/180            :' pi converti en radian

rem =========================================================================================
rem UTILISATION DES VARIABLES:
rem r = rayon du cercle
rem cx = position en X du centre du cercle
rem cy = position en Y du centre du cercle
rem ad = angle en degrés à partir du centre (pour calcul du sinus et du cosinus)
rem px = position en X d°un point du cercle de rayon r par rapport à l°angle ad
rem py = position en Y d°un point du cercle de rayon r par rapport à l°angle ad
rem s = sin(ad*pir) sinus de l°angle ad converti en radian pour calcul de py sur l°axe Y
rem c = cos(ad*pir) cosinus de l°angle ad converti en radian pour calcul de px sur l°axe X
rem ==========================================================================================

full_space 0 : color 0,0,0,0
' font_color 0,255,255,255 :' pour visualiser les valeurs de la ligne 41, mais perturbe l'affichage
2d_pen_color 255,255,255

' la commande ci_dessous ne fonctionne pas si la ligne 20 est en fonction
 2d_circle 200,200,50 :' dessiner un cercle avec la commande Panoramic 2d_circle


' définir un cercle de rayon r positionné en cx,cy
r=100                    :' rayon du cercle
cx=(screen_x/2)-int(r/2) :' centre de l'écran en X
cy=(screen_y/2)-int(r/2) :' centre de l'écran en Y

' la commande ci_dessous ne fonctionne pas si la ligne 20 est en fonction
2d_point cx,cy:' affiche le centre du cercle (ne fonctionne pas si ligne 20 en fonction)

' dessiner le cercle point par point
 for ad=1 to 360
    2d_pen_color rnd(255),255,255 :' ton bleu_vert
    c=cos(ad*pir) : s=sin(ad*pir)
    px=cx+(r*c) :py=cy+(r*s)
    2d_point px,py
    ' print px: print py :' visible si ligne 20 en fonction
    pause 1: ' pour visualiser la progression
 next ad

END

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
silverman

avatar

Nombre de messages : 475
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Premier pas en trigonométrie   Ven 3 Juil 2015 - 12:52

bonjour à tous,

c'est tout bon jean-claude.

Pour le pb de "font_color N,R,G,B", le numéro "N" de l'objet systeme doit être plus grand que zéro, c'est précisé dans l'aide.
Si tu veux voir l'affichage, change la couleur de fond du form car le texte s'écrit en noir par défaut.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Premier pas en trigonométrie   Ven 3 Juil 2015 - 14:02

Merci Silverman pour ta réponse.

Je suis bien content d'être dans le coup. Comme tu l'as compris, j'apprend la "trigo" appliquée à Panoramic.

Pour ce qui est de FONT_COLOR, tu as raison, il faut que le numéro d'objet soit >0, et j'ajoute: il ne s'applique pas à FORM. Comme quoi, il faut lire la doc quand on a un souci avec une commande.
Mais ça c'est pas mon problème dans ce sujet.

Prochaine étape: dessiner des cercles contiguës dont le centre est sin et cos du premier cercle.

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

avatar

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

MessageSujet: Re: Premier pas en trigonométrie   Ven 3 Juil 2015 - 15:29

Bravo Jean Claude, tu as tout compris !

Maintenant je te donne un exercice de tracer d’une ellipse.
Ne fronce pas les sourcils : c’est tout aussi simple.
Je te rappelle que le cercle est aussi une ellipse (un peu particulière) comme le carré qui est aussi un rectangle.

Voici l’équation d’une ellipse centrée sur le point (cx, cy) :
Px = cx + R1 * cos(a)
Py = cy + R2 * sin(a)
Avec :
Cx et cy : coordonnées du centre de l’ellipse
R1 : demi-axe (c’est le rayon) horizontal de l’ellipse
R2 : demi-axe (c’est le rayon) vertical de l’ellipse.
a   : angle variant de 0 à 360° (soit de 0 à 2*pi)

Si R1 > R2 : l’ellipse est ‘allongée’, c-à-d plus large que haute
Si R1 < R2 : l’ellipse est ‘haute’, c-à-d plus haute que large
Si R1 = R2  on retrouve notre cercle.

Allez !  Au boulot.
Je ramasserai la copie tout à l’heure.
T'en fait pas, tu auras une bonne note Laughing

Edit  : Ligne  5
Code:
 pir = pi/180            :' pi converti en radian

Je comprends ce que tu voulais dire, mais tu l’as dit pas correctement.
J’aurais préféré : facteur de conversion de degrés en radians.
Mais bon, tu l’as utilisé à bon escient, alors je sors ...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Premier pas en trigonométrie   Ven 3 Juil 2015 - 17:00

Merci Papydall,

Ton ton professoral me plaît. Hi Hi, Tonton Papyprof.  Very Happy  Razz

Pour le tracé de l'ellipse, je vois que le boulot est déjà pratiquement fait. Mais sous cette forme, je vais devoir écrire le code, et c'est bien ce que je souhaite car un code tout prêt ne m'aurait pas aidé.
Je le ferais dès que j'en aurai terminé avec un petit code en cours.

Pour "facteur de conversion de degrés en radians.", là aussi bravo, c'est exactement l'esprit de ce post.
A savoir vérifier aussi les commentaires, car je compte conserver ces codes pour pouvoir me replonger dedans.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Premier pas en trigonométrie   Ven 3 Juil 2015 - 20:07

@Papydall,
à corriger Very Happy
Code:
' premiers pas en trigonométrie (3)
' dessiner une ellipse

dim pi,pir,r1,cx,cy,ad,s,c,px,py
dim r2,ad2,px2,py2,cx2,cy2
pi = acos(-1)            :' définition de pi
pir = pi/180             :' facteur de conversion de degrés en radians

rem =======================================================================================
rem UTILISATION DES VARIABLES:
rem r1 = rayon du cercle
rem cx = position en X du centre du cercle
rem cy = position en Y du centre du cercle
rem ad = angle en degrés à partir du centre (pour calcul du sinus et du cosinus)
rem px = position en X d°un point du cercle de rayon r par rapport à l°angle ad
rem py = position en Y d°un point du cercle de rayon r par rapport à l°angle ad
rem s = sin(ad*pir) sinus de l°angle ad converti en radian pour calcul de py sur l°axe Y
rem c = cos(ad*pir) cosinus de l°angle ad converti en radian pour calcul de px sur l°axe X
rem =======================================================================================

full_space 0 : color 0,0,0,0
caption 0,"[Echap] pour sortir"
' font_color 0,255,255,255
2d_pen_color 255,255,255

rem ================================================================ Exercice (Papydall) ==
rem Voici l’équation d’une ellipse centrée sur le point (cx, cy) :
rem Px = cx + R1 * cos(a)
rem Py = cy + R2 * sin(a)
rem Avec :
rem Cx et cy : coordonnées du centre de l’ellipse
rem R1 : demi-axe (c’est le rayon) horizontal de l’ellipse
rem R2 : demi-axe (c’est le rayon) vertical de l’ellipse.
rem a   : angle variant de 0 à 360° (soit de 0 à 2*pi)

rem Si R1 > R2 : l’ellipse est ‘allongée’, c-à-d plus large que haute
rem Si R1 < R2 : l’ellipse est ‘haute’, c-à-d plus haute que large
rem Si R1 = R2  on retrouve notre cercle.
rem =======================================================================================

' définir le point cx,cy
r1=100                    :' rayon du cercle
cx=(screen_x/2)-int(r1/2)+16 :' centre de l'écran en X (16 por W8)
cy=(screen_y/2)-int(r1/2)+31 :' centre de l'écran en Y (31 pour W8)

' 2d_point cx,cy:' affiche le centre du cercle (ne fonctionne pas si ligne 20 en fonction)

' dessiner plusieurs cercles (r1=20) point par point à partir du cercle (r1=100)
' si r1=100 et r2=20 step=24

 r1=400 : r2=80 :' ellipse "horizontale"
' r2=400 : r1=80 :' ellipse "verticale"
' r1=400 : r2=400 :' cercle

 for ad=1 to 360 :' step 1
     if scancode<>0 then terminate
     2d_pen_color rnd(255),rnd(255),255
     c=cos(ad*pir) : s=sin(ad*pir)
     px=cx+(r1*c) :py=cy+(r2*s)
     2d_point px,py
     pause 1
 next ad

END


BON, OK, quand on a l'équation c'est facile.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Premier pas en trigonométrie   Ven 3 Juil 2015 - 21:24

C'est fou comme on se prend au jeu,

Code:
' premiers pas en trigonométrie (4)
' dessiner une figure à partir d'une ellipse

dim pi,pir,r1,cx,cy,ad,s,c,px,py
dim r2,ad2,px2,py2,cx2,cy2
dim r3,r4
pi = acos(-1)            :' définition de pi
pir = pi/180             :' facteur de conversion de degrés en radians

rem =======================================================================================
rem UTILISATION DES VARIABLES:
rem r1 = rayon du cercle
rem cx = position en X du centre du cercle
rem cy = position en Y du centre du cercle
rem ad = angle en degrés à partir du centre (pour calcul du sinus et du cosinus)
rem px = position en X d°un point du cercle de rayon r par rapport à l°angle ad
rem py = position en Y d°un point du cercle de rayon r par rapport à l°angle ad
rem s = sin(ad*pir) sinus de l°angle ad converti en radian pour calcul de py sur l°axe Y
rem c = cos(ad*pir) cosinus de l°angle ad converti en radian pour calcul de px sur l°axe X
rem =======================================================================================

full_space 0 : color 0,0,0,0
caption 0,"[Echap] pour sortir"
' font_color 0,255,255,255
2d_pen_color 255,255,255

rem ================================================================ Exercice (Papydall) ==
rem Voici l’équation d’une ellipse centrée sur le point (cx, cy) :
rem Px = cx + R1 * cos(a)
rem Py = cy + R2 * sin(a)
rem Avec :
rem Cx et cy : coordonnées du centre de l’ellipse
rem R1 : demi-axe (c’est le rayon) horizontal de l’ellipse
rem R2 : demi-axe (c’est le rayon) vertical de l’ellipse.
rem a   : angle variant de 0 à 360° (soit de 0 à 2*pi)

rem Si R1 > R2 : l’ellipse est ‘allongée’, c-à-d plus large que haute
rem Si R1 < R2 : l’ellipse est ‘haute’, c-à-d plus haute que large
rem Si R1 = R2  on retrouve notre cercle.
rem =======================================================================================

' définir le point cx,cy
r1=100                    :' rayon du cercle
cx=(screen_x/2)-int(r1/2)+16 :' centre de l'écran en X (16 por W8)
cy=(screen_y/2)-int(r1/2)+31 :' centre de l'écran en Y (31 pour W8)

' 2d_point cx,cy:' affiche le centre du cercle (ne fonctionne pas si ligne 20 en fonction)

' dessiner plusieurs cercles (r1=20) point par point à partir du cercle (r1=100)
' si r1=100 et r2=20 step=24

' r1=400 : r2=80 :' ellipse "horizontale"
' r2=400 : r1=80 :' ellipse "verticale"
 r1=200 : r2=200 :' cercle
 r3=400 : r4=150 :' ellipses du pourtour
 for ad=1 to 360  step 10
     if scancode<>0 then terminate
     2d_pen_color rnd(255),rnd(255),255
     c=cos(ad*pir) : s=sin(ad*pir)
     px=cx+(r1*c) :py=cy+(r2*s)
'     2d_point px,py
     cx2=px : cy2=py
   for ad2=1 to 360 :' step 10
       if scancode<>0 then terminate
       2d_pen_color rnd(255),rnd(255),255
       c=cos(ad2*pir) : s=sin(ad2*pir)
       px2=cx2+(r3*c) :py2=cy2+(r4*s)
       2d_point px2,py2
    '  pause 1
   next ad2
 next ad

END

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

avatar

Nombre de messages : 5863
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Premier pas en trigonométrie   Ven 3 Juil 2015 - 21:32

Reprise de ton premier code pour en faire un truc coloré Wink
Code:
' premiers pas en trigonométrie

dim pi,pir,cx,cy,i
pi = acos(-1)            :' définition de pi
pir = pi/180            :' pi converti en radian

rem =========================================================================================
rem UTILISATION DES VARIABLES:
rem cx = position en X du centre de l'écran
rem cy = position en Y du centre de l'écran
rem ad = angle en degrés à partir du centre (pour calcul du sinus et du cosinus)
rem px = position en X d°un point du cercle de rayon r par rapport à l°angle ad
rem py = position en Y d°un point du cercle de rayon r par rapport à l°angle ad
rem s = sin(ad*pir) sinus de l°angle ad converti en radian pour calcul de py sur l°axe Y
rem c = cos(ad*pir) cosinus de l°angle ad converti en radian pour calcul de px sur l°axe X
rem ==========================================================================================

full_space 0 : color 0,0,0,0

cx=(screen_x/2) : cy=(screen_y/2) :' centre de l'écran en X et Y
' définir un cercle de rayon r positionné en cx,cy de 3 pixels d'épaisseur
for i = 5 to 600 step 6
cercle(cx,cy,i,8, (i+100)/3,80,(255-i/3))
next i
end

rem =========================================================================================
rem UTILISATION DES VARIABLES:
rem CentreX = position en X du centre du cercle
rem CentreY = position en Y du centre du cercle
rem r = rayon du cercle
rem ==========================================================================================

SUB Cercle(CentreX,CentreY,r,W , cr,cv,cb)
dim_local ad,s,c,px,py, opx,opy
' la commande ci_dessous ne fonctionne pas si la ligne 20 est en fonction
2d_pen_width W : 2d_point CentreX,CentreY:' affiche le centre du cercle (ne fonctionne pas si ligne 20 en fonction)
' dessiner le cercle point par point
 for ad=0 to 360 step 6
    2d_pen_color cr,cv,cb :' ton bleu_vert
    c=cos(ad*pir) : s=sin(ad*pir)
    px=CentreX+(r*c) :py=CentreY+(r*s)
    if ad > 0 then 2d_line opx,opy,px,py
    opx = px : opy = py
    ' print px: print py :' visible si ligne 20 en fonction
    pause 1: ' pour visualiser la progression
 next ad
END_SUB
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Premier pas en trigonométrie   Ven 3 Juil 2015 - 21:40

C'est ça qui est merveilleux, avec de l'imagination on fait des trucs supers.

Un autre à base d'ellipse (de cercles).
Code:
' premiers pas en trigonométrie (4)
' dessiner une figure à partir d'une ellipse

dim pi,pir,r1,cx,cy,ad,s,c,px,py
dim r2,ad2,px2,py2,cx2,cy2
dim r3,r4
pi = acos(-1)            :' définition de pi
pir = pi/180             :' facteur de conversion de degrés en radians

rem =======================================================================================
rem UTILISATION DES VARIABLES:
rem r1 = rayon du cercle
rem cx = position en X du centre du cercle
rem cy = position en Y du centre du cercle
rem ad = angle en degrés à partir du centre (pour calcul du sinus et du cosinus)
rem px = position en X d°un point du cercle de rayon r par rapport à l°angle ad
rem py = position en Y d°un point du cercle de rayon r par rapport à l°angle ad
rem s = sin(ad*pir) sinus de l°angle ad converti en radian pour calcul de py sur l°axe Y
rem c = cos(ad*pir) cosinus de l°angle ad converti en radian pour calcul de px sur l°axe X
rem =======================================================================================

full_space 0 : color 0,0,0,0
caption 0,"[Echap] pour sortir"
' font_color 0,255,255,255
2d_pen_color 255,255,255

rem ================================================================ Exercice (Papydall) ==
rem Voici l’équation d’une ellipse centrée sur le point (cx, cy) :
rem Px = cx + R1 * cos(a)
rem Py = cy + R2 * sin(a)
rem Avec :
rem Cx et cy : coordonnées du centre de l’ellipse
rem R1 : demi-axe (c’est le rayon) horizontal de l’ellipse
rem R2 : demi-axe (c’est le rayon) vertical de l’ellipse.
rem a   : angle variant de 0 à 360° (soit de 0 à 2*pi)

rem Si R1 > R2 : l’ellipse est ‘allongée’, c-à-d plus large que haute
rem Si R1 < R2 : l’ellipse est ‘haute’, c-à-d plus haute que large
rem Si R1 = R2  on retrouve notre cercle.
rem =======================================================================================

' définir le point cx,cy
r1=100                    :' rayon du cercle
cx=(screen_x/2)-int(r1/2)+16 :' centre de l'écran en X (16 por W8)
cy=(screen_y/2)-int(r1/2)+31 :' centre de l'écran en Y (31 pour W8)

' 2d_point cx,cy:' affiche le centre du cercle (ne fonctionne pas si ligne 20 en fonction)

' dessiner plusieurs cercles (r1=20) point par point à partir du cercle (r1=100)
' si r1=100 et r2=20 step=24

' r1=400 : r2=80 :' ellipse "horizontale"
' r2=400 : r1=80 :' ellipse "verticale"
 r1=200 : r2=200 :' cercle
 r3=200 : r4=200 :' ellipses du pourtour
 for ad=1 to 360  step 10
     if scancode<>0 then terminate
     2d_pen_color rnd(255),rnd(255),255
     c=cos(ad*pir) : s=sin(ad*pir)
     px=cx+(r1*c) :py=cy+(r2*s)
'     2d_point px,py
     cx2=px : cy2=py
   for ad2=1 to 360  step 1
       if scancode<>0 then terminate
       2d_pen_color rnd(255),rnd(255),255
       c=cos(ad2*pir) : s=sin(ad2*pir)
       px2=cx2+(r3*c) :py2=cy2+(r4*s)
       2d_point px2,py2
    '  pause 1
   next ad2
 next ad

END


A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5863
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Premier pas en trigonométrie   Ven 3 Juil 2015 - 23:08

Une petite variation de ton code
Code:
' premiers pas en trigonométrie (4)
' dessiner une figure à partir d'une ellipse

dim pi,pir,r1,cx,cy,ad,s,c,px,py
dim r2,ad2,px2,py2,cx2,cy2, opx2, opy2
dim r3,r4
pi = acos(-1)            :' définition de pi
pir = pi/180            :' facteur de conversion de degrés en radians

rem =======================================================================================
rem UTILISATION DES VARIABLES:
rem r1 = rayon du cercle
rem cx = position en X du centre du cercle
rem cy = position en Y du centre du cercle
rem ad = angle en degrés à partir du centre (pour calcul du sinus et du cosinus)
rem px = position en X d°un point du cercle de rayon r par rapport à l°angle ad
rem py = position en Y d°un point du cercle de rayon r par rapport à l°angle ad
rem s = sin(ad*pir) sinus de l°angle ad converti en radian pour calcul de py sur l°axe Y
rem c = cos(ad*pir) cosinus de l°angle ad converti en radian pour calcul de px sur l°axe X
rem =======================================================================================

full_space 0 : color 0,0,0,0

rem ================================================================ Exercice (Papydall) ==
rem Voici l’équation d’une ellipse centrée sur le point (cx, cy) :
rem Px = cx + R1 * cos(a)
rem Py = cy + R2 * sin(a)
rem Avec :
rem Cx et cy : coordonnées du centre de l’ellipse
rem R1 : demi-axe (c’est le rayon) horizontal de l’ellipse
rem R2 : demi-axe (c’est le rayon) vertical de l’ellipse.
rem a  : angle variant de 0 à 360° (soit de 0 à 2*pi)

rem Si R1 > R2 : l’ellipse est ‘allongée’, c-à-d plus large que haute
rem Si R1 < R2 : l’ellipse est ‘haute’, c-à-d plus haute que large
rem Si R1 = R2  on retrouve notre cercle.
rem =======================================================================================

' définir le point cx,cy
cx=(screen_x/2)-int(r1/2)-16 :' centre de l'écran en X (16 por W8)
cy=(screen_y/2)-int(r1/2)-20 :' centre de l'écran en Y (31 pour W8)

' dessiner plusieurs cercles (r1=20) point par point à partir du cercle (r1=100)

 2d_pen_width 10
 r1=200 : r2=200 :' cercle
 r3=200 : r4=200 :' ellipses du pourtour
 for ad=1 to 360  step 5
    c=cos(ad*pir) : s=sin(ad*pir)
    px=cx+(r1*c) :py=cy+(r2*s)
    cx2=px : cy2=py
  for ad2=0 to 360  step 3
      2d_pen_color px/4,abs( ad - 180), py/3
      c=cos(ad2*pir) : s=sin(ad2*pir)
      px2=cx2+(r3*c) :py2=cy2+(r4*s)
      if ad2 > 0 then 2d_line opx2,opy2,px2,py2
      opx2 = px2 : opy2 = py2
  next ad2
 next ad

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

avatar

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

MessageSujet: Re: Premier pas en trigonométrie   Sam 4 Juil 2015 - 1:17

Code:

dim pi,p,xc,yc,r,r1,a,px,py,n
pi = acos(-1) : p = pi/180
full_space 0
xc = width(0)/2 : yc = height(0)/2
r = 250 : ' rayon du grand cercle
n = 20  : ' Nombre des petits cercles (à modifier pour voir)
' pour l'esthétique, choisir n telle que la division de 360 par n tombe juste.
2d_pen_width 2
for a = 0 to 360
    px = xc+r*cos(a*p) : py = yc+r*sin(a*p) : ' coordonnées des points du grand cercle
    if mod(a,int(360/n)) = 0 : ' si l'angle a est un multiple de n
    ' placer les n petits cercles sur le périmètre du grand
       r1 = pi*r/n  : ' rayon des petits cercles
       2d_fill_color 255,0,0 : 2d_fill_on : 2d_circle px,py,r1
    end_if
next a
2d_flood xc,yc,255,255,0
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jicehel

avatar

Nombre de messages : 5863
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Premier pas en trigonométrie   Sam 4 Juil 2015 - 9:03

J'ai fais une petites variation de ton code
Code:
dim pi,p,xc,yc,r,r1,a,px,py,n
pi = acos(-1) : p = pi/180
full_space 0
xc = width(0)/2 : yc = height(0)/2
r = 250 : ' rayon du grand cercle
n = 18  : ' Nombre des petits cercles (à modifier pour voir)
' pour l'esthétique, choisir n telle que la division de 360 par n tombe juste.
2d_pen_width 4 : 2d_fill_on : 2d_pen_color 120,55,0
for a = 0 to 360 step (360 / n)
    px = xc+r*cos(a*p) : py = yc+r*sin(a*p) : ' coordonnées des points du grand cercle
    ' placer les n petits cercles sur le périmètre du grand
      r1 = pi*r/n  : ' rayon des petits cercles
      2d_fill_color abs(180 - a) + 50,0,0  :  2d_circle px,py,r1
next a
2d_flood xc,20,0,0,0
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Parpaiun

avatar

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

MessageSujet: Revue du sujet   Sam 4 Juil 2015 - 10:33

Félicitations à Jean_Claude pour ses progrès en trigonométrie ! Comme ça, il ne se plaindra plus que je l'aie embêté à mes débuts avec plusieurs de mes programmes trigo ! Je me passe de commentaires pour les autres qui se débrouillent très bien avec lui ! Un triple "HOURRA" pour Jean_Claude ! cheers cheers cheers
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5863
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Premier pas en trigonométrie   Sam 4 Juil 2015 - 10:55

Woui, absolument
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Premier pas en trigonométrie   Sam 4 Juil 2015 - 14:03

Parpaiun a écrit:
il ne se plaindra plus que je l'aie embêté à mes débuts avec plusieurs de mes programmes trigo !

@Parpaiun
Cherche une phrase, une seule, où je dis que tu m'embêtes avec tes programmes de trigonométrie et je te ferais des exucuses. confused
Et merci pour tes encouragements.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Parpaiun

avatar

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

MessageSujet: Revue du sujet   Sam 4 Juil 2015 - 21:45

Pardon jean_claude pour ma méchante boutade ! Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Premier pas en trigonométrie   Sam 4 Juil 2015 - 22:51

Merci Parpaiun, je ne voulais pas passer pour un vilain petit canard.

@tous,
Pour vous rafraîchir, je vous offre un magnifique soleil. sunny
Code:
' canicule

dim pi,pir,r,cx,cy,ad,s,c,px,py,n%,stp%,cr,cv,cb
dim r2,ad2,px2,py2,cx2,cy2
pi = acos(-1)            :' définition de pi
pir = pi/180            :' facteur de conversion de degrés en radians

rem =========================================================================================
rem UTILISATION DES VARIABLES:
rem r = rayon du cercle
rem cx = position en X du centre du cercle
rem cy = position en Y du centre du cercle
rem ad = angle en degrés à partir du centre (pour calcul du sinus et du cosinus)
rem px = position en X d°un point du cercle de rayon r par rapport à l°angle ad
rem py = position en Y d°un point du cercle de rayon r par rapport à l°angle ad
rem s = sin(ad*pir) sinus de l°angle ad converti en radian pour calcul de py sur l°axe Y
rem c = cos(ad*pir) cosinus de l°angle ad converti en radian pour calcul de px sur l°axe X
rem ==========================================================================================

full_space 0 : color 0,0,0,0
caption 0,"[Echap] pour sortir"
2d_pen_color 255,255,255

' définir un cercle de rayon r positionné en cx,cy
r=100                    :' rayon du cercle
cx=(screen_x/2)-int(r/2)+16 :' centre de l'écran en X (16 por W8)
cy=(screen_y/2)-int(r/2)+31 :' centre de l'écran en Y (31 pour W8)

r2=20 : r=400  : stp%=15 : cr=5 : cv=5 : cb=5
for n%=1 to 14
caption 0,str$(n%)+"/14  *  [Echap] pour sortir"
    r=r-18 : stp%=stp%-1
    cr=cr+20 : cv=cv+20 : cb=cb+10
    if cr > 255 then cr=255 : cv=255 :cb=cb+10 : r=r-10
 for ad=1 to 360 step stp%
    if scancode<>0 then terminate
    2d_pen_color cr,cv,cb
    c=cos(ad*pir) : s=sin(ad*pir)
    px=cx+(r*c) :py=cy+(r*s)
    cx2=px : cy2=py
    for ad2=1 to 360
        if scancode<>0 then terminate
        c=cos(ad2*pir) : s=sin(ad2*pir)
        px2=cx2+(r2*c) :py2=cy2+(r2*s)
        2d_line int(cx),int(cy),int(cx2),int(cy2)
'        2d_line int(px),int(py),int(px2),int(py2) :' une autre image
    next ad2
 next ad
next n%
caption 0,"Terminé"
END

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

avatar

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

MessageSujet: Re: Premier pas en trigonométrie   Dim 5 Juil 2015 - 0:17

Heu ! A ce rythme-là, tu vas rendre jaloux plus d’un !
Bon divertissement !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
papydall

avatar

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

MessageSujet: Re: Premier pas en trigonométrie   Lun 6 Juil 2015 - 5:17

@Jean Claude

Après les cercles et les ellipses, tu veux bien  plonger dans les spirales ?
Cette fois-ci les équations à utiliser sont des équations polaires.
Les équations polaires sont plus simples à exprimer que les équations paramétriques.
Tu trouveras les formules de passage des coordonnées polaires aux coordonnées cartésiennes.
En fait le travail est à moitié mâché.
C’est à toi de mâcher le reste car je n'ai plus toutes mes dents !  Laughing



Code:

rem ============================================================================
rem                            SPIRALE
rem ============================================================================
rem Equation polaire de la spirale (centrée sur l origine)  :  Rho = tetha
rem tetha angle variant de 0 = 2*n*pi radians
rem n : nombre de tours de la spirale
rem Si l angle tetha est négatif, la spirale tournera dans le sens anti-horaire
rem Si l angle tetha est positif, la spirale tournera dans le sens horaire
rem ============================================================================
rem Passage des coordonnées polaires aux coordonnées cartésiennes :
rem X = Rho*COS(tetha)
rem Y = Rho*SIN(tetha)
rem ============================================================================
rem Pour la spirale centrée sur XC,YC, la formule devient :
rem X = XC + Rho*COS(tetha)
rem Y = YC + RHO*SIN(tetha)
rem ============================================================================

rem Spirale logarithmique d équation : rho = exp(a*tetha)
rem Prendre pour la constante a, la valeur a = .088 par exemple
rem tetha angle variant de 0 à 2*n*pi radians
rem n : nombre de tours de la spirale
rem ============================================================================
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jicehel

avatar

Nombre de messages : 5863
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Premier pas en trigonométrie   Lun 6 Juil 2015 - 10:58

Vous me faites mal à la tête quand j'essaye de vous suivre alors je me contente de regarder, mais c'est beau Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Premier pas en trigonométrie   Lun 6 Juil 2015 - 13:06

Je rends ma copie ! Very Happy
Code:
rem ============================================================================
rem                            SPIRALE
rem ============================================================================
rem Equation polaire de la spirale (centrée sur l origine)  :  Rho = tetha
rem tetha angle variant de 0 = 2*n*pi radians
rem n : nombre de tours de la spirale
rem Si l angle tetha est négatif, la spirale tournera dans le sens anti-horaire
rem Si l angle tetha est positif, la spirale tournera dans le sens horaire
rem ============================================================================
rem Passage des coordonnées polaires aux coordonnées cartésiennes :
rem X = Rho*COS(tetha)
rem Y = Rho*SIN(tetha)
rem ============================================================================
rem Pour la spirale centrée sur XC,YC, la formule devient :
rem X = XC + Rho*COS(tetha)
rem Y = YC + RHO*SIN(tetha)
rem ============================================================================

rem Spirale logarithmique d équation : rho = exp(a*tetha)
rem Prendre pour la constante a, la valeur a = .088 par exemple
rem tetha angle variant de 0 à 2*n*pi radians
rem n : nombre de tours de la spirale
rem ============================================================================

full_space 0 : color 0,0,0,0
2d_pen_color 255,255,255

dim Rho,tetha,a,pi,pir
dim n,x,y,xc,yc,nb%
pi = acos(-1) : pir = pi/180
dim cr,cv,cb

' xc=400 : yc=400
xc=(screen_x/2) : yc=(screen_y/2)-31
a=0.001
n=5000
 for nb%=1 to n
    caption 0,str$(n-nb%)
    if scancode<>0 then exit_for
    cr=cr+28 : cv=cv+20 : cb=cb+12
    if cr>255 then cr=12
    if cv>255 then cv=11
    if cb>255 then cb=10
    2d_pen_color cr,cv,cb
    tetha=((2*n)*pir)+(nb%/10) : Rho=(exp(a*tetha))+(nb%/10)
    x = xc + (Rho*COS(tetha)):' + (nb%/30)
    y = yc + (Rho*SIN(tetha)):' + (nb%/20)
    2d_point x,y
    pause 1: ' pour visualiser la progression
 next nb%
caption 0,"terminé"
end
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5863
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Premier pas en trigonométrie   Lun 6 Juil 2015 - 13:15

Heu Jean-Claude, ce n'est plus de l'initiation là, donc c'est hors sujet Very Happy Moi, je dis que c'est déjà du cours avancé... Wink
Dis avec tous tes progrès en trigo tu pourrais en faire un article pour continuer à banaliser l'usage de ces choses et avec la bénédiction de Papydall, tu pourrais te servir de son programme pour illustrer ton article (et / ou en faire la première partie) ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Premier pas en trigonométrie   Lun 6 Juil 2015 - 14:59

Salut tout le monde.
@Jean Claude

Bravo !  C’est parfaitement parfait.
Tu as rendu jaloux Jicehel  tongue

Suggestion : remplace 2d_point par 2d_poly_to]
Modifie les valeurs de Y en les multipliant par 0.5 (c-à-d une division par 2)
Code:

y = yc + .5*(Rho*SIN(tetha))


2d_poly_to  va donner un tracé continu plus beau à voir.
Le rapport sur Y donnera une figure aplatie mieux adapté aux écrans.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Premier pas en trigonométrie   Lun 6 Juil 2015 - 15:14

Faire un article ?

Pour cela il faudrait que je maîtrise le sujet, ce qui est loin d’être le cas.
J'avoue que, autant j'ai compris la première partie "SIN, COS", autant je n'ai rien pigé à la spirale.

C'est pratiquement un coup de bol (Néanmoins, mes débuts ont servi...), que j'ai réussi à faire une spirale.
Ensuite j'ai bidouillé jusqu’à obtenir un résultat acceptable, sans vraiment comprendre ce que je faisais.
Toutefois, je suis particulièrement fier de la colorisation car j'ai réussi utiliser les couleurs de façon à ajouter d'autres spirales à la spirale principale.

Pour les artistes, vous pouvez modifier les divers paramètres du code (dont certains sont encore visibles) et vous verrez des résultats surprenants.

Exemple:
Code:
full_space 0 : color 0,0,0,0
2d_pen_color 255,255,255

dim Rho,tetha,a,pi,pir
dim n,x,y,xc,yc,nb%
pi = acos(-1) : pir = pi/180
dim cr,cv,cb

 xc=300 :' yc=100
' xc=(screen_x/2)
yc=(screen_y/2)-31

a=0.005
n=2500
 for nb%=1 to n
    caption 0,str$(n-nb%)
    if scancode<>0 then exit_for
    cr=cr+24 : cv=cv+16 : cb=cb+8
    if cr>255 then cr=12
    if cv>255 then cv=11
    if cb>255 then cb=10
    2d_pen_color cr,cv,cb
    tetha=((2*n)*pir)+(nb%/10) : Rho=(exp(a*tetha))+(nb%/10)
    x = xc + (Rho*COS(tetha)) + (nb%/11)
    y = yc + (Rho*SIN(tetha)) + (nb%/100000)
    2d_point x,y
    pause 1: ' pour visualiser la progression
 next nb%
a=0.004 : xc=302
 for nb%=1 to n
    caption 0,str$(n-nb%)
    if scancode<>0 then exit_for
    cr=cr+24 : cv=cv+16 : cb=cb+8
    if cr>255 then cr=12
    if cv>255 then cv=11
    if cb>255 then cb=10
    2d_pen_color cr,cv,cb
    tetha=((2*n)*pir)+(nb%/10) : Rho=(exp(a*tetha))+(nb%/10)
    x = xc + (Rho*COS(tetha)) + (nb%/11)
    y = yc + (Rho*SIN(tetha)) + (nb%/10000)
    2d_point x,y
    pause 1: ' pour visualiser la progression
 next nb%
a=0.004 : xc=304
 for nb%=1 to n
    caption 0,str$(n-nb%)
    if scancode<>0 then exit_for
    cr=cr+12 : cv=cv+8 : cb=cb+4
    if cr>255 then cr=6
    if cv>255 then cv=4
    if cb>255 then cb=2
    2d_pen_color cr,cv,cb
    tetha=((2*n)*pir)+(nb%/10) : Rho=(exp(a*tetha))+(nb%/10)
    x = xc + (Rho*COS(tetha)) + (nb%/11)
    y = yc + (Rho*SIN(tetha)) + (nb%/1000)
    2d_point x,y
    pause 1: ' pour visualiser la progression
 next nb%
caption 0,"terminé"
end
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Premier pas en trigonométrie   Lun 6 Juil 2015 - 15:16

On viens de se croiser Papydall,

Je vais faire des essais avec tes suggestions...

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Premier pas en trigonométrie   

Revenir en haut Aller en bas
 
Premier pas en trigonométrie
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Trigonométrie circulaire et hyperbolique
» Bon premier Mai
» Mon premier GPS... un Garmin 3790T
» Premier pas Zumo 390LM
» [Résolu] Barre de Navigation en premier plan

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: