FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Table des angles  Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Table des angles  Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Table des angles  Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Table des angles  Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Table des angles  Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Table des angles  Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Table des angles  Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Table des angles  Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Table des angles  Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Table des angles  Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Table des angles  Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Table des angles  Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Table des angles  Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Table des angles  Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Table des angles  Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-38%
Le deal à ne pas rater :
Ecran PC gaming 23,8″ – ACER KG241Y P3bip à 99,99€
99.99 € 159.99 €
Voir le deal

 

 Table des angles

Aller en bas 
5 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
Parpaiun

Parpaiun


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

Table des angles  Empty
MessageSujet: Table des angles    Table des angles  EmptyMer 29 Avr 2015 - 9:37

En géométrie 2D ou 3D, ou bien en trigonométrie, le programmeur a besoin de savoir quelle direction angulaire donner à une droite ou un arc.  

Pour éviter d’avoir à tâtonner, ce qui est une perte de temps, j’ai imaginé une table qui permet de trouver rapidement quel angle donner à une droite ou à un arc de cercle par rapport à sa situation sur le papier ou sur l’écran.

J’ai disposé circulairement les degrés de 0 à 360 par pas de 9 en sens inverse des aiguilles d’une montre.  

Après avoir chargé et exécuté le programme, le programmeur s’arrange pour imprimer en format paysage le résultat en grand sur un papier. Il conserve ensuite ce papier sous plastique et bien en vue sur son bureau. La table est ainsi prête à être consultée à n’importe quel moment.

Code:
rem Auteur: Parpaiun
rem Date-version: 24/04/2015
Caption 0,"Table des angles de direction en degrés"
dim ax,ay,cs,cx,cy,i,j,k,n,px,py,rad,ray,ss,th,x,y,zh
rem
rem Construction de la flèche
n=40
dim mx(n),my(n)
cx = 290 : cy = 220
droite(cx,cy,20,90,1)
px = x : py = y
droite(x,y,10,225,1)
droite(px,py,10,315,1)
rem print_locate 2,2 : print "Nombre de k = ";k
rem message "Est ce correct ?"
cls
rem Affichage circulaire des degrés
rad = 3.14159265 / 180
cx = 280 : cy = 215 : ray = 195
for th = 0 to 351 step 9
ax = cx + ray * cos(th * rad)
ay = cy + ray * sin(th * -1 * rad)
print_locate ax,ay : print th
next th

rem Rosace de lignes simples
cx = 290 : cy = 220
ray = 150
for th = 0 to 360 step 45
x = cx + ray * cos(th * rad)
y = cy + ray * sin(th * rad)
2d_line cx,cy,x,y
next th

rem Rosace de lignes suivies de flèches
ray = 160
print_locate 1,2 : print "Valeurs des angles affichés en degrés"
for th = 0 to 360 step 9
px = cx + ray * cos(th * rad)
py = cy + ray * sin(th * -1 * rad)
for j = 1 to k
x = mx(j) : y =  my(j)
rot(th)
echel(1)
2d_point px + x, py + y
next j
zh = 360 - th
ax = cx - 9 + (ray + 40) * cos(zh * rad)
ay = cy - 5 + (ray + 40) * sin(zh * rad)
next th
end

sub droite(dx,dy,dl,da,dt)
rad = 3.14159265 / 180
da = da * rad
for i = 1 to dl
dx = dx + cos(da)
dy = dy - sin(da)
if dt = 1 then 2d_point dx,dy
k = k + 1 : mx(k) = dx - cx : my(k) = dy - cy
next i
x = dx : y = dy
END_SUB

sub rot(ang)
dim_local ux,uy
ang = (90 - ang) * rad
cs = cos(ang) : ss = sin(ang)
ux = x * cs - y * ss
uy = x * ss + y * cs
x = ux : y = uy
END_SUB

sub echel(e)
x = x * e : y = y * e
END_SUB

Vous aurez remarqué que j'ai défini une procédure sous le nom d'ECHEL. Pourquoi ? Eh bien parce que SCALE est un mot réservé en GFA Basic, package d'où est issu ce programme.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Table des angles  Empty
MessageSujet: Re: Table des angles    Table des angles  EmptyMer 29 Avr 2015 - 12:44

tu devrais faire une version avec affichage des valeur en degrés / grades / radians ? (tant qu'à faire et à garder une feuille autant qu'elle soit la plus exhaustive possible, qu'en penses-tu ?)
Revenir en haut Aller en bas
Parpaiun

Parpaiun


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

Table des angles  Empty
MessageSujet: Table des angles   Table des angles  EmptyMer 29 Avr 2015 - 13:32

Bien reçu ton message, Jicehel, merci. Truffer le dessin de repères angulaires en degrés / grades / radians serait le compliquer et le rendre peu lisible ! scratch
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Table des angles  Empty
MessageSujet: Re: Table des angles    Table des angles  EmptyMer 29 Avr 2015 - 15:00

C'est là que l'on compte sur ton talent et ton imagination Smile
Sinon, autant piquer le bon vieux rapporteur de son fiston ..... Very Happy
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Table des angles  Empty
MessageSujet: Re: Table des angles    Table des angles  EmptyMer 29 Avr 2015 - 16:58

Je te donne un peu d'inspiration  Smile
Table des angles  640px-10
Table des angles  Image014
Table des angles  Image023
Revenir en haut Aller en bas
Parpaiun

Parpaiun


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

Table des angles  Empty
MessageSujet: Table des angles   Table des angles  EmptyMer 29 Avr 2015 - 20:52

Grand merci JICEHEL pour m'avoir transmis les trois images dont deux abaques et un rapporteur !

C'est bien pour la première fois que je vois la première image extraordinairement complexe de ce superbe abaque à trois angles. J'avoue me sentir incapable d'obtenir la très haute résolution pour bien distinguer les écarts millimétriques ! Très belle image en vérité ! Je crois que tu as pu voir la "Moire de Kolomyjec" et ces branches extrêmes indiscernables qui prouvent la faiblesse de la résolution de mon écran. Pour cette raison, je ne pense pas pouvoir reproduire l'abaque trois angles par programme.

Bonsoir ! de Parpaiun Surprised


Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Table des angles  Empty
MessageSujet: Re: Table des angles    Table des angles  EmptyMer 29 Avr 2015 - 21:01

Ce n'est pas grave non plus Parpaium. Tu trouveras bien d'autres défits à relever.
C'est un truc que j'hésite à faire pour le mag: un petit défit dont le résultat serait publié le moi suivant avec un autre défit. Je verrais s'il y a des volontaires.
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Table des angles  Empty
MessageSujet: re   Table des angles  EmptyJeu 30 Avr 2015 - 2:00

Code:
' Les angles
' revus par ygeronimi
hide 0
Variables()
Labels()
Gui()
show 0
end

SUB Variables()
   dim_local i%
   dim no%

   dim Pan%(2)   : for i%=0 to 2  : no%=no%+1 : Pan%(i%)=no% :next i%
   dim Alph%(10) : for i%=0 to 10 : no%=no%+1 : Alph%(i%)=no% :next i%

   dim Udeg%     : no%=no%+1      : Udeg% = no%
   dim SpUdeg%   : no%=no%+1      : SpUdeg%  = no%
   dim Ddeg%     : no%=no%+1      : Ddeg% = no%
   dim SpDdeg%   : no%=no%+1      : SpDdeg% = no%

   dim Urad%     : no%=no%+1      : Urad% = no%
   dim SpUrad%   : no%=no%+1      : SpUrad% = no%
   dim Drad%     : no%=no%+1      : Drad% = no%
   dim SpDrad%   : no%=no%+1      : SpDrad% = no%

   dim Ugrd%     : no%=no%+1      : Ugrd% = no%
   dim SpUgrd%   : no%=no%+1      : SpUgrd% = no%
   dim Dgrd%     : no%=no%+1      : Dgrd% = no%
   dim SpDgrd%   : no%=no%+1      : SpDgrd% = no%
  
   dim visio%    : no%=no%+1      : visio% = no%
   dim Pict%     : no%=no%+1      : Pict%  = no%
  
   dim Pict$     : Pict$ = dir_current$+"\Pict.jpg"
  
   dim change%
  
   dim degres
   dim radians
   dim grades
END_SUB


SUB Labels()
   Label Change
END_SUB

SUB Gui()
'  form_0
   height 0,660
   width 0,840
   top 0,(screen_y-height(0))/2
   left 0,(screen_x-width(0))/2
   Caption 0,"Degrés - Radians - Grades"
  
'  Frame générale

   Panel Pan%(0) : full_space Pan%(0) : color Pan%(0),0,130,0
  
'  Frame paramètres

   Panel Pan%(1) : parent Pan%(1),Pan%(0)
   height Pan%(1),height(Pan%(0)) -10
   width Pan%(1),195
   top Pan%(1),5
   left Pan%(1),5

'  modifications en de degrés

   Alpha Alph%(1) : Parent Alph%(1),Pan%(1)
   top Alph%(1),10
   left Alph%(1),5
   Font_name Alph%(1),"Arial" : Font_size Alph%(1),8 : Font_bold Alph%(1)
   Font_color Alph%(1),0,0,200
   Caption Alph%(1),"Degrés :"
  
   Edit Udeg% : parent Udeg%,Pan%(1)
   top Udeg%,30
   left Udeg%,5
   width Udeg%,30
   Font_name Udeg%,"Times new roman" : Font_size Udeg%,10 : Font_bold Udeg%
   text Udeg%,"000"
  
   Spin SpUdeg% : parent SpUdeg%,Pan%(1)
   top SpUdeg%,30
   left SpUdeg%,width(Udeg%)+5
   width SpUdeg%,20
   Min SpUdeg%,0 : Max SpUdeg%,361 : Position SpUdeg%,0
   On_change SpUdeg%,change
  
   Edit Ddeg% : parent Ddeg%,Pan%(1)
   top Ddeg%,30
   left Ddeg%,width(udeg%)+30
   width Ddeg%,20
   Font_name Ddeg%,"Times new roman" : Font_size Ddeg%,10 : Font_bold Ddeg%
   Font_color Ddeg%,255,0,0
   text Ddeg%,"00"
  
   Spin SpDdeg% : parent SpDdeg%,Pan%(1)
   top SpDdeg%,30
   left SpDdeg%,width(Ddeg%)+60
   width SpDdeg%,20
   cursor_point SpDdeg%
   Min SpDdeg%,0 : Max SpDdeg%,100 : Position SpDdeg%,0
   On_change SpDdeg%,change

'  modifications en radians
  
   Alpha Alph%(2) : Parent Alph%(2),Pan%(1)
   top Alph%(2),60
   left Alph%(2),5
   Font_name Alph%(2),"Arial" : Font_size Alph%(2),8 : Font_bold Alph%(2)
   Font_color Alph%(2),0,0,200
   Caption Alph%(2),"Radians :"

   Edit Urad% : parent Urad%,Pan%(1)
   top Urad%,80
   left Urad%,5
   width Urad%,30
   Font_name Urad%,"Times new roman" : Font_size Urad%,10 : Font_bold Urad%
   text Urad%,"000"

   Spin SpUrad% : parent SpUrad%,Pan%(1)
   top SpUrad%,80
   left SpUrad%,width(Urad%)+5
   width SpUrad%,20
   Min SpUrad%,0 : Max SpUrad%,7 : position SpUrad%,0
   On_change SpUrad%,change

   Edit Drad% : parent Drad%,Pan%(1)
   top Drad%,80
   left Drad%,width(urad%)+30
   width Drad%,20
   Font_name Drad%,"Times new roman" : Font_size Drad%,10 : Font_bold Drad%
   Font_color Drad%,255,0,0
   text Drad%,"00"

   Spin SpDrad% : parent SpDrad%,Pan%(1)
   top SpDrad%,80
   left SpDrad%,width(Drad%)+60
   width SpDrad%,20
   Min SpDrad%,0 : Max SpDrad%,100 : position SpDrad%,0
   On_change SpDrad%,change
  
'  modifications en grades

   Alpha Alph%(3) : Parent Alph%(3),Pan%(1)
   top Alph%(3),110
   left Alph%(3),5
   Font_name Alph%(3),"Arial" : Font_size Alph%(3),8 : Font_bold Alph%(3)
   Font_color Alph%(3),0,0,200
   Caption Alph%(3),"Grades :"

   Edit Ugrd% : parent Ugrd%,Pan%(1)
   top Ugrd%,130
   left Ugrd%,5
   width Ugrd%,30
   Font_name Ugrd%,"Times new roman" : Font_size Ugrd%,10 : Font_bold Ugrd%
   text Ugrd%,"000"

   Spin SpUgrd% : parent SpUgrd%,Pan%(1)
   top SpUgrd%,130
   left SpUgrd%,width(Ugrd%)+5
   width SpUgrd%,20
   Min SpUgrd%,0 : Max SpUgrd%,401 : Position SpUgrd%,0
   On_change SpUgrd%,change

   Edit Dgrd% : parent Dgrd%,Pan%(1)
   top Dgrd%,130
   left Dgrd%,width(ugrd%)+30
   width Dgrd%,20
   Font_name Dgrd%,"Times new roman" : Font_size Dgrd%,10 : Font_bold Dgrd%
   Font_color Dgrd%,255,0,0
   text Dgrd%,"00"

   Spin SpDgrd% : parent SpDgrd%,Pan%(1)
   top SpDgrd%,130
   left SpDgrd%,width(Dgrd%)+60
   width SpDgrd%,20
   Min SpDgrd%,0 : Max SpDgrd%,100 : Position SpDgrd%,0
   On_change SpDgrd%,change
  
'  Frame visio

   Panel Pan%(2) : parent Pan%(2),Pan%(0)
   height Pan%(2),height(Pan%(0)) -10
   width Pan%(2),width(Pan%(0))-(width(Pan%(1))+15)
   top Pan%(2),5
   Left Pan%(2),Width(Pan%(1))+10
  
   Picture Visio% : Parent visio%,Pan%(2)
   height visio%,600
   width visio%,600
   top visio%,5
   left visio%,5
   color visio%,0,0,0
   file_load visio%,Pict$
   stretch_on visio%
END_SUB


Change:
   Change% = Number_change
   if Change% = SpUdeg% : DefineUniteDegres() :end_if
   if Change% = SpDdeg% : DefineDecimDegres() :end_if
   if Change% = SpUrad% : DefineUniteRadians() :end_if
   if Change% = SpDrad% : DefineDecimRadians() :end_if
   if Change% = SpUgrd% : DefineUniteGrades() :end_if
   if Change% = SpDgrd% : DefineDecimGrades() :end_if
return

SUB DefineUniteDegres()
    dim_local p%,p$
    P%=position(SpUdeg%)
    if P%=361
       off_change SpUdeg%
       P%=0
       Position SpUdeg%,0
       on_change SpUdeg%,change
    end_if
    P$=str$(P%)
    P$=string$(4-len(P$),"0")+P$
    P$=right$(P$,3)
    text Udeg%,P$
    degres = val(text$(Udeg%))+(val(text$(Ddeg%))/100)
    ConvertDegresToRadians()
    ConvertDegresToGrades()
END_SUB

SUB DefineDecimDegres()
    dim_local p%,p$
    P%=position(SpDdeg%)
    if P%=100
       off_change SpDdeg%
       P%=0
       Position SpDdeg%,0
       on_change SpDdeg%,change
    end_if
    P$=str$(P%)
    P$=string$(3-len(P$),"0")+P$
    P$=right$(P$,2)
    text Ddeg%,P$
    degres = val(text$(Udeg%))+(val(text$(Ddeg%))/100)
    ConvertDegresToRadians()
    ConvertDegresToGrades()
END_SUB

SUB DefineUniteRadians()
    dim_local p%,p$
    P%=position(SpUrad%)
    if P%=7
       off_change SpUrad%
       P%=0
       Position SpUrad%,0
       on_change SpUrad%,change
    end_if
    P$=str$(P%)
    P$=string$(4-len(P$),"0")+P$
    P$=right$(P$,3)
    text Urad%,P$
    radians = val(text$(Urad%))+(val(text$(Drad%))/100)
    ConvertRadiansToDegres()
    ConvertRadiansToGrades()
END_SUB

SUB DefineDecimRadians()
    dim_local p%,p$,m%
    if position(SpUrad%)=6
       m%=29
       Max SpDrad%,m%
       if position(SpDrad%)>28
          off_change SpDrad%
          Position SpDrad%,28
          on_change SpDrad%,change
          text Drad%,"28"
       end_if
    else
       m%=100
       Max SpDrad%,m%
    end_if
    P%=position(SpDrad%)
    if P%=m%
       off_change SpDrad%
       P%=0
       Position SpDrad%,0
       on_change SpDrad%,change
    end_if
    P$=str$(P%)
    P$=string$(3-len(P$),"0")+P$
    P$=right$(P$,2)
    text Drad%,P$
    radians = val(text$(Urad%))+(val(text$(Drad%))/100)
    ConvertRadiansToDegres()
    ConvertRadiansToGrades()
END_SUB

SUB DefineUniteGrades()
    dim_local p%,p$
    P%=position(SpUgrd%)
    if P%=401
       off_change SpUgrd%
       P%=0
       Position SpUgrd%,0
       on_change SpUgrd%,change
    end_if
    P$=str$(P%)
    P$=string$(4-len(P$),"0")+P$
    P$=right$(P$,3)
    text Ugrd%,P$
    grades = val(text$(Ugrd%))+(val(text$(Dgrd%))/100)
    ConvertGradesToDegres()
    ConvertGradesToRadians()
END_SUB

SUB DefineDecimGrades()
    dim_local p%,p$
    P%=position(SpDgrd%)
    if P%=100
       off_change SpDgrd%
       P%=0
       Position SpDgrd%,0
       on_change SpDgrd%,change
    end_if
    P$=str$(P%)
    P$=string$(3-len(P$),"0")+P$
    P$=right$(P$,2)
    text Dgrd%,P$
    grades = val(text$(Ugrd%))+(val(text$(Dgrd%))/100)
    ConvertGradesToDegres()
    ConvertGradesToRadians()
END_SUB

SUB ConvertDegresToRadians()
   dim_local pi,U%,D%,U$,D$
   pi=acos(-1)
   Radians=(degres*pi)/180
   U%=int(Radians)
   U$=str$(U%) : U$=string$(4-len(U$),"0")+U$ : U$=right$(U$,3)
   D%=frac(radians)*1000
   D$=str$(int(D%))
   if len(D$)>2 : D$=left$(D$,2): end_if
   off_change SpUrad%
   off_change SpDrad%
   text Urad%,U$
   text Drad%,D$
   Position SpUrad%,val(U$)
   Position SpDrad%,val(D$)
   on_change SpUrad%,change
   on_change SpDrad%,change
END_SUB

SUB ConvertDegresToGrades()
   dim_local pi,U%,D%,U$,D$
   pi=acos(-1)
   Grades=(Degres/360)*400
   U%=int(Grades)
   U$=str$(U%) : U$=string$(4-len(U$),"0")+U$ : U$=right$(U$,3)
   D%=frac(Grades)*1000
   D$=str$(int(D%))
   if len(D$)>2 : D$=left$(D$,2): end_if
   if len(D$)<2 : D$=D$+"0"     : end_if
   off_change SpUgrd%
   off_change SpDgrd%
   text Ugrd%,U$
   text Dgrd%,D$
   Position SpUgrd%,val(U$)
   Position SpDgrd%,val(D$)
   on_change SpUgrd%,change
   on_change SpDgrd%,change
END_SUB

SUB ConvertRadiansToDegres()
   dim_local pi,U%,D%,U$,D$
   pi=acos(-1)
   Degres=(Radians*180)/pi
   U%=int(Degres)
   U$=str$(U%) : U$=string$(4-len(U$),"0")+U$ : U$=right$(U$,3)
   D%=frac(Degres)*1000
   D$=str$(int(D%))
   if len(D$)>2 : D$=left$(D$,2): end_if
   if Degres<=360
      off_change SpUdeg%
      off_change SpDdeg%
      text Udeg%,U$
      text Ddeg%,D$
      Position SpUdeg%,val(U$)
      Position SpDdeg%,val(D$)
      on_change SpUdeg%,change
      on_change SpDdeg%,change
   end_if
END_SUB

SUB ConvertRadiansToGrades()
   dim_local pi,U%,D%,U$,D$
   pi=acos(-1)
   Grades=(Radians*200)/pi
   U%=int(Grades)
   U$=str$(U%) : U$=string$(4-len(U$),"0")+U$ : U$=right$(U$,3)
   D%=frac(Grades)*1000
   D$=str$(int(D%))
   if len(D$)>2 : D$=left$(D$,2): end_if
   if Grades<=400
      off_change SpUgrd%
      off_change SpDgrd%
      text Ugrd%,U$
      text Dgrd%,D$
      Position SpUgrd%,val(U$)
      Position SpDgrd%,val(D$)
      on_change SpUgrd%,change
      on_change SpDgrd%,change
   end_if
END_SUB

SUB ConvertGradesToDegres()
   dim_local pi,U%,D%,U$,D$
   pi=acos(-1)
   Degres=(Grades*400)/360
   U%=int(Degres)
   U$=str$(U%) : U$=string$(4-len(U$),"0")+U$ : U$=right$(U$,3)
   D%=frac(Degres)*1000
   D$=str$(int(D%))
   if len(D$)>2 : D$=left$(D$,2): end_if
   if len(D$)<2 : D$=D$+"0"     : end_if
   if Degres<=360
      off_change SpUdeg%
      off_change SpDdeg%
      text Udeg%,U$
      text Ddeg%,D$
      Position SpUdeg%,val(U$)
      Position SpDdeg%,val(D$)
      on_change SpUdeg%,change
      on_change SpDdeg%,change
   end_if
END_SUB

SUB ConvertGradesToRadians()
   dim_local pi,U%,D%,U$,D$
   pi=acos(-1)
   Radians=(Grades*pi)/200
   U%=int(Radians)
   U$=str$(U%) : U$=string$(4-len(U$),"0")+U$ : U$=right$(U$,3)
   D%=frac(Radians)*1000
   D$=str$(int(D%))
   if len(D$)>2 : D$=left$(D$,2): end_if
   if Radians<=6.28
      off_change SpUrad%
      off_change SpDrad%
      text Urad%,U$
      text Drad%,D$
      Position SpUrad%,val(U$)
      Position SpDrad%,val(D$)
      on_change SpUrad%,change
      on_change SpDrad%,change
   end_if
END_SUB

Si quelqu' un veut s' amuser à allumer les segments... (moi y en a être pas bon du tout en géométrie Laughing )

l' image à enregistrer au format *.jpg :
image:
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Table des angles  Empty
MessageSujet: Re: Table des angles    Table des angles  EmptyJeu 30 Avr 2015 - 2:17

Tu triches un peu au niveau dessin mais c'est bien pratique quand au résultat Wink
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Table des angles  Empty
MessageSujet: re   Table des angles  EmptyJeu 30 Avr 2015 - 2:21

Salut Jicehel,

J' ai une tare, je ne sais pas dessiner... Laughing 
Et encore moins avec des formules mathématiques... Embarassed

Si tu sais, ajoute le au code.
dans l' absolu, il faudrait que le segment concerné soit d' une couleur différente... Laughing
Revenir en haut Aller en bas
papydall

papydall


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

Table des angles  Empty
MessageSujet: Re: Table des angles    Table des angles  EmptyJeu 30 Avr 2015 - 2:26

Bon, c'est aussi une autre manière de structurer son programme et une belle illustration des objets PANEL, SPIN, etc..

Ça peut aider les nouveaux.

Merci Ygeronimi.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Parpaiun

Parpaiun


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

Table des angles  Empty
MessageSujet: Re: Table des angles    Table des angles  EmptyJeu 30 Avr 2015 - 9:56

Salut ygeronimi, j'ai chargé ton programme et essayé de le lancer par le Panoramic Editor. Mais un message impromptu me dit qu'il ne trouve pas l'image. Où dois je la placer ? Merci de me répondre. Parpaiun Question
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Table des angles  Empty
MessageSujet: Re: Table des angles    Table des angles  EmptyJeu 30 Avr 2015 - 10:56

Il faut que tu sauvegarde le source et que tu mette l'image dans le même répertorie sous le nom pict.jpg
Revenir en haut Aller en bas
Parpaiun

Parpaiun


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

Table des angles  Empty
MessageSujet: Table des angles   Table des angles  EmptyJeu 30 Avr 2015 - 11:45

OK Jicehel mais "le même répertoire " de quoi ? Je ne saisis pas bien là dessus, pour sûr !
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Table des angles  Empty
MessageSujet: Re: Table des angles    Table des angles  EmptyJeu 30 Avr 2015 - 11:52

Dans le même répertoire que là où tu auras sauvegardé le programme (le fichier .bas)
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Table des angles  Empty
MessageSujet: re   Table des angles  EmptyJeu 30 Avr 2015 - 12:29

Voilà, ils ont tout dit... Laughing 

Tu peux placer le fichier de l' image dans le dossier du fichier source
ou
Changer l' adresse de la variable Pict$, ligne n° 35, si tu le places ailleurs.

Bon l' image est là pour illustrer dans mon cas mais l' objet "picture" qui la contient
peut être remplacé par un objet "scene2d" pour la reproduire graphiquement avec
des segments de couleurs différentes pour marquer les angles.
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Table des angles  Empty
MessageSujet: re   Table des angles  EmptyJeu 30 Avr 2015 - 17:01

Comme je suis un gars un peu têtu...( On ne se moque pas  Wink )
Voilà un début du marquage d' un angle.
Ce n' est pas au point, il faut que je fasse une rotation anti-horaire
et que j' arrive à effacer la ligne précédente... scratch 


Code:
' Les angles
' par ygeronimi
hide 0
Variables()
Labels()
Gui()
show 0
end

SUB Variables()
  dim_local i%
  dim no%

  dim Pan%(2)  : for i%=0 to 2  : no%=no%+1 : Pan%(i%)=no% :next i%
  dim Alph%(10) : for i%=0 to 10 : no%=no%+1 : Alph%(i%)=no% :next i%

  dim Udeg%    : no%=no%+1      : Udeg% = no%
  dim SpUdeg%  : no%=no%+1      : SpUdeg%  = no%
  dim Ddeg%    : no%=no%+1      : Ddeg% = no%
  dim SpDdeg%  : no%=no%+1      : SpDdeg% = no%

  dim Urad%    : no%=no%+1      : Urad% = no%
  dim SpUrad%  : no%=no%+1      : SpUrad% = no%
  dim Drad%    : no%=no%+1      : Drad% = no%
  dim SpDrad%  : no%=no%+1      : SpDrad% = no%

  dim Ugrd%    : no%=no%+1      : Ugrd% = no%
  dim SpUgrd%  : no%=no%+1      : SpUgrd% = no%
  dim Dgrd%    : no%=no%+1      : Dgrd% = no%
  dim SpDgrd%  : no%=no%+1      : SpDgrd% = no%
 
  dim visio%    : no%=no%+1      : visio% = no%
  dim Pict%    : no%=no%+1      : Pict%  = no%
 
  dim Pict$    : Pict$ = dir_current$+"\Pict.jpg"
 
  dim change%
 
  dim degres
  dim radians
  dim grades
 
  dim Cx,Cy,Ax,Ay,Bx,By,Ray,Ang
END_SUB


SUB Labels()
  Label Change
END_SUB

SUB Gui()
'  form_0
  height 0,660
  width 0,840
  top 0,(screen_y-height(0))/2
  left 0,(screen_x-width(0))/2
  Caption 0,"Degrés - Radians - Grades"
 
'  Frame générale

  Panel Pan%(0) : full_space Pan%(0) : color Pan%(0),0,130,0
 
'  Frame paramètres

  Panel Pan%(1) : parent Pan%(1),Pan%(0)
  height Pan%(1),height(Pan%(0)) -10
  width Pan%(1),195
  top Pan%(1),5
  left Pan%(1),5

'  modifications en de degrés

  Alpha Alph%(1) : Parent Alph%(1),Pan%(1)
  top Alph%(1),10
  left Alph%(1),5
  Font_name Alph%(1),"Arial" : Font_size Alph%(1),8 : Font_bold Alph%(1)
  Font_color Alph%(1),0,0,200
  Caption Alph%(1),"Degrés :"
 
  Edit Udeg% : parent Udeg%,Pan%(1)
  top Udeg%,30
  left Udeg%,5
  width Udeg%,30
  Font_name Udeg%,"Times new roman" : Font_size Udeg%,10 : Font_bold Udeg%
  text Udeg%,"000"
 
  Spin SpUdeg% : parent SpUdeg%,Pan%(1)
  top SpUdeg%,30
  left SpUdeg%,width(Udeg%)+5
  width SpUdeg%,20
  Min SpUdeg%,0 : Max SpUdeg%,361 : Position SpUdeg%,0
  On_change SpUdeg%,change
 
  Edit Ddeg% : parent Ddeg%,Pan%(1)
  top Ddeg%,30
  left Ddeg%,width(udeg%)+30
  width Ddeg%,20
  Font_name Ddeg%,"Times new roman" : Font_size Ddeg%,10 : Font_bold Ddeg%
  Font_color Ddeg%,255,0,0
  text Ddeg%,"00"
 
  Spin SpDdeg% : parent SpDdeg%,Pan%(1)
  top SpDdeg%,30
  left SpDdeg%,width(Ddeg%)+60
  width SpDdeg%,20
  cursor_point SpDdeg%
  Min SpDdeg%,0 : Max SpDdeg%,100 : Position SpDdeg%,0
  On_change SpDdeg%,change

'  modifications en radians
 
  Alpha Alph%(2) : Parent Alph%(2),Pan%(1)
  top Alph%(2),60
  left Alph%(2),5
  Font_name Alph%(2),"Arial" : Font_size Alph%(2),8 : Font_bold Alph%(2)
  Font_color Alph%(2),0,0,200
  Caption Alph%(2),"Radians :"

  Edit Urad% : parent Urad%,Pan%(1)
  top Urad%,80
  left Urad%,5
  width Urad%,30
  Font_name Urad%,"Times new roman" : Font_size Urad%,10 : Font_bold Urad%
  text Urad%,"000"

  Spin SpUrad% : parent SpUrad%,Pan%(1)
  top SpUrad%,80
  left SpUrad%,width(Urad%)+5
  width SpUrad%,20
  Min SpUrad%,0 : Max SpUrad%,7 : position SpUrad%,0
  On_change SpUrad%,change

  Edit Drad% : parent Drad%,Pan%(1)
  top Drad%,80
  left Drad%,width(urad%)+30
  width Drad%,20
  Font_name Drad%,"Times new roman" : Font_size Drad%,10 : Font_bold Drad%
  Font_color Drad%,255,0,0
  text Drad%,"00"

  Spin SpDrad% : parent SpDrad%,Pan%(1)
  top SpDrad%,80
  left SpDrad%,width(Drad%)+60
  width SpDrad%,20
  Min SpDrad%,0 : Max SpDrad%,100 : position SpDrad%,0
  On_change SpDrad%,change
 
'  modifications en grades

  Alpha Alph%(3) : Parent Alph%(3),Pan%(1)
  top Alph%(3),110
  left Alph%(3),5
  Font_name Alph%(3),"Arial" : Font_size Alph%(3),8 : Font_bold Alph%(3)
  Font_color Alph%(3),0,0,200
  Caption Alph%(3),"Grades :"

  Edit Ugrd% : parent Ugrd%,Pan%(1)
  top Ugrd%,130
  left Ugrd%,5
  width Ugrd%,30
  Font_name Ugrd%,"Times new roman" : Font_size Ugrd%,10 : Font_bold Ugrd%
  text Ugrd%,"000"

  Spin SpUgrd% : parent SpUgrd%,Pan%(1)
  top SpUgrd%,130
  left SpUgrd%,width(Ugrd%)+5
  width SpUgrd%,20
  Min SpUgrd%,0 : Max SpUgrd%,401 : Position SpUgrd%,0
  On_change SpUgrd%,change

  Edit Dgrd% : parent Dgrd%,Pan%(1)
  top Dgrd%,130
  left Dgrd%,width(ugrd%)+30
  width Dgrd%,20
  Font_name Dgrd%,"Times new roman" : Font_size Dgrd%,10 : Font_bold Dgrd%
  Font_color Dgrd%,255,0,0
  text Dgrd%,"00"

  Spin SpDgrd% : parent SpDgrd%,Pan%(1)
  top SpDgrd%,130
  left SpDgrd%,width(Dgrd%)+60
  width SpDgrd%,20
  Min SpDgrd%,0 : Max SpDgrd%,100 : Position SpDgrd%,0
  On_change SpDgrd%,change
 
'  Frame visio

  Panel Pan%(2) : parent Pan%(2),Pan%(0)
  height Pan%(2),height(Pan%(0)) -10
  width Pan%(2),width(Pan%(0))-(width(Pan%(1))+15)
  top Pan%(2),5
  Left Pan%(2),Width(Pan%(1))+10
 
  Picture Visio% : Parent visio%,Pan%(2)
  height visio%,600
  width visio%,600
  top visio%,5
  left visio%,5
  color visio%,0,0,0
  file_load visio%,Pict$
  stretch_on visio%
 
'  tracer de la ligne 0
  Cx=(width(visio%)/2)-12
  Cy=(height(visio%)/2) -4
  Ax=520
  Ay=296
  2D_TARGET_IS Visio%
  2D_PEN_COLOR 255, 0, 0
  2D_PEN_WIDTH 2
  2D_LINE Cx,Cy,Ax,Ay
END_SUB


Change:
  Change% = Number_change
  if Change% = SpUdeg% : DefineUniteDegres() :end_if
  if Change% = SpDdeg% : DefineDecimDegres() :end_if
  if Change% = SpUrad% : DefineUniteRadians() :end_if
  if Change% = SpDrad% : DefineDecimRadians() :end_if
  if Change% = SpUgrd% : DefineUniteGrades() :end_if
  if Change% = SpDgrd% : DefineDecimGrades() :end_if
return

SUB DefineUniteDegres()
    dim_local p%,p$
    P%=position(SpUdeg%)
    if P%=361
      off_change SpUdeg%
      P%=0
      Position SpUdeg%,0
      on_change SpUdeg%,change
    end_if
    P$=str$(P%)
    P$=string$(4-len(P$),"0")+P$
    P$=right$(P$,3)
    text Udeg%,P$
    degres = val(text$(Udeg%))+(val(text$(Ddeg%))/100)
    ConvertDegresToRadians()
    ConvertDegresToGrades()
    TraceAngle()
END_SUB

SUB DefineDecimDegres()
    dim_local p%,p$
    P%=position(SpDdeg%)
    if P%=100
      off_change SpDdeg%
      P%=0
      Position SpDdeg%,0
      on_change SpDdeg%,change
    end_if
    P$=str$(P%)
    P$=string$(3-len(P$),"0")+P$
    P$=right$(P$,2)
    text Ddeg%,P$
    degres = val(text$(Udeg%))+(val(text$(Ddeg%))/100)
    ConvertDegresToRadians()
    ConvertDegresToGrades()
    TraceAngle()
END_SUB

SUB DefineUniteRadians()
    dim_local p%,p$
    P%=position(SpUrad%)
    if P%=7
      off_change SpUrad%
      P%=0
      Position SpUrad%,0
      on_change SpUrad%,change
    end_if
    P$=str$(P%)
    P$=string$(4-len(P$),"0")+P$
    P$=right$(P$,3)
    text Urad%,P$
    radians = val(text$(Urad%))+(val(text$(Drad%))/100)
    ConvertRadiansToDegres()
    ConvertRadiansToGrades()
    TraceAngle()
END_SUB

SUB DefineDecimRadians()
    dim_local p%,p$,m%
    if position(SpUrad%)=6
      m%=29
      Max SpDrad%,m%
      if position(SpDrad%)>28
          off_change SpDrad%
          Position SpDrad%,28
          on_change SpDrad%,change
          text Drad%,"28"
      end_if
    else
      m%=100
      Max SpDrad%,m%
    end_if
    P%=position(SpDrad%)
    if P%=m%
      off_change SpDrad%
      P%=0
      Position SpDrad%,0
      on_change SpDrad%,change
    end_if
    P$=str$(P%)
    P$=string$(3-len(P$),"0")+P$
    P$=right$(P$,2)
    text Drad%,P$
    radians = val(text$(Urad%))+(val(text$(Drad%))/100)
    ConvertRadiansToDegres()
    ConvertRadiansToGrades()
    TraceAngle()
END_SUB

SUB DefineUniteGrades()
    dim_local p%,p$
    P%=position(SpUgrd%)
    if P%=401
      off_change SpUgrd%
      P%=0
      Position SpUgrd%,0
      on_change SpUgrd%,change
    end_if
    P$=str$(P%)
    P$=string$(4-len(P$),"0")+P$
    P$=right$(P$,3)
    text Ugrd%,P$
    grades = val(text$(Ugrd%))+(val(text$(Dgrd%))/100)
    ConvertGradesToDegres()
    ConvertGradesToRadians()
    TraceAngle()
END_SUB

SUB DefineDecimGrades()
    dim_local p%,p$
    P%=position(SpDgrd%)
    if P%=100
      off_change SpDgrd%
      P%=0
      Position SpDgrd%,0
      on_change SpDgrd%,change
    end_if
    P$=str$(P%)
    P$=string$(3-len(P$),"0")+P$
    P$=right$(P$,2)
    text Dgrd%,P$
    grades = val(text$(Ugrd%))+(val(text$(Dgrd%))/100)
    ConvertGradesToDegres()
    ConvertGradesToRadians()
    TraceAngle()
END_SUB

SUB ConvertDegresToRadians()
  dim_local pi,U%,D%,U$,D$
  pi=acos(-1)
  Radians=(degres*pi)/180
  U%=int(Radians)
  U$=str$(U%) : U$=string$(4-len(U$),"0")+U$ : U$=right$(U$,3)
  D%=frac(radians)*1000
  D$=str$(int(D%))
  if len(D$)>2 : D$=left$(D$,2): end_if
  off_change SpUrad%
  off_change SpDrad%
  text Urad%,U$
  text Drad%,D$
  Position SpUrad%,val(U$)
  Position SpDrad%,val(D$)
  on_change SpUrad%,change
  on_change SpDrad%,change
END_SUB

SUB ConvertDegresToGrades()
  dim_local pi,U%,D%,U$,D$
  pi=acos(-1)
  Grades=(Degres/360)*400
  U%=int(Grades)
  U$=str$(U%) : U$=string$(4-len(U$),"0")+U$ : U$=right$(U$,3)
  D%=frac(Grades)*1000
  D$=str$(int(D%))
  if len(D$)>2 : D$=left$(D$,2): end_if
  if len(D$)<2 : D$=D$+"0"    : end_if
  off_change SpUgrd%
  off_change SpDgrd%
  text Ugrd%,U$
  text Dgrd%,D$
  Position SpUgrd%,val(U$)
  Position SpDgrd%,val(D$)
  on_change SpUgrd%,change
  on_change SpDgrd%,change
END_SUB

SUB ConvertRadiansToDegres()
  dim_local pi,U%,D%,U$,D$
  pi=acos(-1)
  Degres=(Radians*180)/pi
  U%=int(Degres)
  U$=str$(U%) : U$=string$(4-len(U$),"0")+U$ : U$=right$(U$,3)
  D%=frac(Degres)*1000
  D$=str$(int(D%))
  if len(D$)>2 : D$=left$(D$,2): end_if
  if Degres<=360
      off_change SpUdeg%
      off_change SpDdeg%
      text Udeg%,U$
      text Ddeg%,D$
      Position SpUdeg%,val(U$)
      Position SpDdeg%,val(D$)
      on_change SpUdeg%,change
      on_change SpDdeg%,change
  end_if
END_SUB

SUB ConvertRadiansToGrades()
  dim_local pi,U%,D%,U$,D$
  pi=acos(-1)
  Grades=(Radians*200)/pi
  U%=int(Grades)
  U$=str$(U%) : U$=string$(4-len(U$),"0")+U$ : U$=right$(U$,3)
  D%=frac(Grades)*1000
  D$=str$(int(D%))
  if len(D$)>2 : D$=left$(D$,2): end_if
  if Grades<=400
      off_change SpUgrd%
      off_change SpDgrd%
      text Ugrd%,U$
      text Dgrd%,D$
      Position SpUgrd%,val(U$)
      Position SpDgrd%,val(D$)
      on_change SpUgrd%,change
      on_change SpDgrd%,change
  end_if
END_SUB

SUB ConvertGradesToDegres()
  dim_local pi,U%,D%,U$,D$
  pi=acos(-1)
  Degres=(Grades*400)/360
  U%=int(Degres)
  U$=str$(U%) : U$=string$(4-len(U$),"0")+U$ : U$=right$(U$,3)
  D%=frac(Degres)*1000
  D$=str$(int(D%))
  if len(D$)>2 : D$=left$(D$,2): end_if
  if len(D$)<2 : D$=D$+"0"    : end_if
  if Degres<=360
      off_change SpUdeg%
      off_change SpDdeg%
      text Udeg%,U$
      text Ddeg%,D$
      Position SpUdeg%,val(U$)
      Position SpDdeg%,val(D$)
      on_change SpUdeg%,change
      on_change SpDdeg%,change
  end_if
END_SUB

SUB ConvertGradesToRadians()
  dim_local pi,U%,D%,U$,D$
  pi=acos(-1)
  Radians=(Grades*pi)/200
  U%=int(Radians)
  U$=str$(U%) : U$=string$(4-len(U$),"0")+U$ : U$=right$(U$,3)
  D%=frac(Radians)*1000
  D$=str$(int(D%))
  if len(D$)>2 : D$=left$(D$,2): end_if
  if Radians<=6.28
      off_change SpUrad%
      off_change SpDrad%
      text Urad%,U$
      text Drad%,D$
      Position SpUrad%,val(U$)
      Position SpDrad%,val(D$)
      on_change SpUrad%,change
      on_change SpDrad%,change
  end_if
END_SUB

SUB TraceAngle()
  Ray=Ax-290
  Ang=Radians
  Bx=Cx+(Ray*cos(Ang))
  By=Cy+(Ray*sin(Ang))
  2D_TARGET_IS Visio%
  2D_PEN_COLOR 255, 0, 0
  2D_LINE Cx,Cy,Bx,By
END_SUB

L' image est la même.
Revenir en haut Aller en bas
Klaus

Klaus


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

Table des angles  Empty
MessageSujet: Re: Table des angles    Table des angles  EmptyJeu 30 Avr 2015 - 18:15

Effacer une ligne dans un picture ? Copie le picture dans un image par 2D_IMAGE_COPY, avant de tracer la ligne. Puis, pour l'effacer, tu rappelles l'image sauvegardée par 2D_IMAGE_PASTE, et le tour est joué.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Table des angles  Empty
MessageSujet: re   Table des angles  EmptyJeu 30 Avr 2015 - 21:28

Merci Klaus !
Je vais appliquer.
Là je cherche à passer en anti-horaire.
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Table des angles  Empty
MessageSujet: re   Table des angles  EmptyJeu 30 Avr 2015 - 22:35

Bon, il n' plus que les deux segments :
Code:
' Les angles
' par ygeronimi
hide 0
Variables()
Labels()
Gui()
show 0
end

SUB Variables()
   dim_local i%
   dim no%

   dim Pan%(2)   : for i%=0 to 2  : no%=no%+1 : Pan%(i%)=no% :next i%
   dim Alph%(10) : for i%=0 to 10 : no%=no%+1 : Alph%(i%)=no% :next i%

   dim Udeg%     : no%=no%+1      : Udeg% = no%
   dim SpUdeg%   : no%=no%+1      : SpUdeg%  = no%
   dim Ddeg%     : no%=no%+1      : Ddeg% = no%
   dim SpDdeg%   : no%=no%+1      : SpDdeg% = no%

   dim Urad%     : no%=no%+1      : Urad% = no%
   dim SpUrad%   : no%=no%+1      : SpUrad% = no%
   dim Drad%     : no%=no%+1      : Drad% = no%
   dim SpDrad%   : no%=no%+1      : SpDrad% = no%

   dim Ugrd%     : no%=no%+1      : Ugrd% = no%
   dim SpUgrd%   : no%=no%+1      : SpUgrd% = no%
   dim Dgrd%     : no%=no%+1      : Dgrd% = no%
   dim SpDgrd%   : no%=no%+1      : SpDgrd% = no%
  
   dim visio%    : no%=no%+1      : visio% = no%
   dim Pict%     : no%=no%+1      : Pict%  = no%
  
   dim Pict$     : Pict$ = dir_current$+"\Pict.jpg"
  
   dim change%
  
   dim degres
   dim radians
   dim grades
  
   dim Cx,Cy,Ax,Ay,Bx,By,Ray,Ang
END_SUB


SUB Labels()
   Label Change
END_SUB

SUB Gui()
'  form_0
   height 0,660
   width 0,840
   top 0,(screen_y-height(0))/2
   left 0,(screen_x-width(0))/2
   Caption 0,"Degrés - Radians - Grades"
  
'  Frame générale

   Panel Pan%(0) : full_space Pan%(0) : color Pan%(0),0,130,0
  
'  Frame paramètres

   Panel Pan%(1) : parent Pan%(1),Pan%(0)
   height Pan%(1),height(Pan%(0)) -10
   width Pan%(1),195
   top Pan%(1),5
   left Pan%(1),5

'  modifications en de degrés

   Alpha Alph%(1) : Parent Alph%(1),Pan%(1)
   top Alph%(1),10
   left Alph%(1),5
   Font_name Alph%(1),"Arial" : Font_size Alph%(1),8 : Font_bold Alph%(1)
   Font_color Alph%(1),0,0,200
   Caption Alph%(1),"Degrés :"
  
   Edit Udeg% : parent Udeg%,Pan%(1)
   top Udeg%,30
   left Udeg%,5
   width Udeg%,30
   Font_name Udeg%,"Times new roman" : Font_size Udeg%,10 : Font_bold Udeg%
   text Udeg%,"000"
  
   Spin SpUdeg% : parent SpUdeg%,Pan%(1)
   top SpUdeg%,30
   left SpUdeg%,width(Udeg%)+5
   width SpUdeg%,20
   Min SpUdeg%,0 : Max SpUdeg%,361 : Position SpUdeg%,0
   On_change SpUdeg%,change
  
   Edit Ddeg% : parent Ddeg%,Pan%(1)
   top Ddeg%,30
   left Ddeg%,width(udeg%)+30
   width Ddeg%,20
   Font_name Ddeg%,"Times new roman" : Font_size Ddeg%,10 : Font_bold Ddeg%
   Font_color Ddeg%,255,0,0
   text Ddeg%,"00"
  
   Spin SpDdeg% : parent SpDdeg%,Pan%(1)
   top SpDdeg%,30
   left SpDdeg%,width(Ddeg%)+60
   width SpDdeg%,20
   cursor_point SpDdeg%
   Min SpDdeg%,0 : Max SpDdeg%,100 : Position SpDdeg%,0
   On_change SpDdeg%,change

'  modifications en radians
  
   Alpha Alph%(2) : Parent Alph%(2),Pan%(1)
   top Alph%(2),60
   left Alph%(2),5
   Font_name Alph%(2),"Arial" : Font_size Alph%(2),8 : Font_bold Alph%(2)
   Font_color Alph%(2),0,0,200
   Caption Alph%(2),"Radians :"

   Edit Urad% : parent Urad%,Pan%(1)
   top Urad%,80
   left Urad%,5
   width Urad%,30
   Font_name Urad%,"Times new roman" : Font_size Urad%,10 : Font_bold Urad%
   text Urad%,"000"

   Spin SpUrad% : parent SpUrad%,Pan%(1)
   top SpUrad%,80
   left SpUrad%,width(Urad%)+5
   width SpUrad%,20
   Min SpUrad%,0 : Max SpUrad%,7 : position SpUrad%,0
   On_change SpUrad%,change

   Edit Drad% : parent Drad%,Pan%(1)
   top Drad%,80
   left Drad%,width(urad%)+30
   width Drad%,20
   Font_name Drad%,"Times new roman" : Font_size Drad%,10 : Font_bold Drad%
   Font_color Drad%,255,0,0
   text Drad%,"00"

   Spin SpDrad% : parent SpDrad%,Pan%(1)
   top SpDrad%,80
   left SpDrad%,width(Drad%)+60
   width SpDrad%,20
   Min SpDrad%,0 : Max SpDrad%,100 : position SpDrad%,0
   On_change SpDrad%,change
  
'  modifications en grades

   Alpha Alph%(3) : Parent Alph%(3),Pan%(1)
   top Alph%(3),110
   left Alph%(3),5
   Font_name Alph%(3),"Arial" : Font_size Alph%(3),8 : Font_bold Alph%(3)
   Font_color Alph%(3),0,0,200
   Caption Alph%(3),"Grades :"

   Edit Ugrd% : parent Ugrd%,Pan%(1)
   top Ugrd%,130
   left Ugrd%,5
   width Ugrd%,30
   Font_name Ugrd%,"Times new roman" : Font_size Ugrd%,10 : Font_bold Ugrd%
   text Ugrd%,"000"

   Spin SpUgrd% : parent SpUgrd%,Pan%(1)
   top SpUgrd%,130
   left SpUgrd%,width(Ugrd%)+5
   width SpUgrd%,20
   Min SpUgrd%,0 : Max SpUgrd%,401 : Position SpUgrd%,0
   On_change SpUgrd%,change

   Edit Dgrd% : parent Dgrd%,Pan%(1)
   top Dgrd%,130
   left Dgrd%,width(ugrd%)+30
   width Dgrd%,20
   Font_name Dgrd%,"Times new roman" : Font_size Dgrd%,10 : Font_bold Dgrd%
   Font_color Dgrd%,255,0,0
   text Dgrd%,"00"

   Spin SpDgrd% : parent SpDgrd%,Pan%(1)
   top SpDgrd%,130
   left SpDgrd%,width(Dgrd%)+60
   width SpDgrd%,20
   Min SpDgrd%,0 : Max SpDgrd%,100 : Position SpDgrd%,0
   On_change SpDgrd%,change
  
'  Frame visio

   Panel Pan%(2) : parent Pan%(2),Pan%(0)
   height Pan%(2),height(Pan%(0)) -10
   width Pan%(2),width(Pan%(0))-(width(Pan%(1))+15)
   top Pan%(2),5
   Left Pan%(2),Width(Pan%(1))+10
  
   Picture Visio% : Parent visio%,Pan%(2)
   height visio%,600
   width visio%,600
   top visio%,5
   left visio%,5
   color visio%,0,0,0
   file_load visio%,Pict$
   stretch_on visio%
END_SUB


Change:
   Change% = Number_change
   if Change% = SpUdeg% : DefineUniteDegres() :end_if
   if Change% = SpDdeg% : DefineDecimDegres() :end_if
   if Change% = SpUrad% : DefineUniteRadians() :end_if
   if Change% = SpDrad% : DefineDecimRadians() :end_if
   if Change% = SpUgrd% : DefineUniteGrades() :end_if
   if Change% = SpDgrd% : DefineDecimGrades() :end_if
return

SUB DefineUniteDegres()
    dim_local p%,p$
    P%=position(SpUdeg%)
    if P%=361
       off_change SpUdeg%
       P%=0
       Position SpUdeg%,0
       on_change SpUdeg%,change
    end_if
    P$=str$(P%)
    P$=string$(4-len(P$),"0")+P$
    P$=right$(P$,3)
    text Udeg%,P$
    degres = val(text$(Udeg%))+(val(text$(Ddeg%))/100)
    ConvertDegresToRadians()
    ConvertDegresToGrades()
    TraceAngle()
END_SUB

SUB DefineDecimDegres()
    dim_local p%,p$
    P%=position(SpDdeg%)
    if P%=100
       off_change SpDdeg%
       P%=0
       Position SpDdeg%,0
       on_change SpDdeg%,change
    end_if
    P$=str$(P%)
    P$=string$(3-len(P$),"0")+P$
    P$=right$(P$,2)
    text Ddeg%,P$
    degres = val(text$(Udeg%))+(val(text$(Ddeg%))/100)
    ConvertDegresToRadians()
    ConvertDegresToGrades()
    TraceAngle()
END_SUB

SUB DefineUniteRadians()
    dim_local p%,p$
    P%=position(SpUrad%)
    if P%=7
       off_change SpUrad%
       P%=0
       Position SpUrad%,0
       on_change SpUrad%,change
    end_if
    P$=str$(P%)
    P$=string$(4-len(P$),"0")+P$
    P$=right$(P$,3)
    text Urad%,P$
    radians = val(text$(Urad%))+(val(text$(Drad%))/100)
    ConvertRadiansToDegres()
    ConvertRadiansToGrades()
    TraceAngle()
END_SUB

SUB DefineDecimRadians()
    dim_local p%,p$,m%
    if position(SpUrad%)=6
       m%=29
       Max SpDrad%,m%
       if position(SpDrad%)>28
          off_change SpDrad%
          Position SpDrad%,28
          on_change SpDrad%,change
          text Drad%,"28"
       end_if
    else
       m%=100
       Max SpDrad%,m%
    end_if
    P%=position(SpDrad%)
    if P%=m%
       off_change SpDrad%
       P%=0
       Position SpDrad%,0
       on_change SpDrad%,change
    end_if
    P$=str$(P%)
    P$=string$(3-len(P$),"0")+P$
    P$=right$(P$,2)
    text Drad%,P$
    radians = val(text$(Urad%))+(val(text$(Drad%))/100)
    ConvertRadiansToDegres()
    ConvertRadiansToGrades()
    TraceAngle()
END_SUB

SUB DefineUniteGrades()
    dim_local p%,p$
    P%=position(SpUgrd%)
    if P%=401
       off_change SpUgrd%
       P%=0
       Position SpUgrd%,0
       on_change SpUgrd%,change
    end_if
    P$=str$(P%)
    P$=string$(4-len(P$),"0")+P$
    P$=right$(P$,3)
    text Ugrd%,P$
    grades = val(text$(Ugrd%))+(val(text$(Dgrd%))/100)
    ConvertGradesToDegres()
    ConvertGradesToRadians()
    TraceAngle()
END_SUB

SUB DefineDecimGrades()
    dim_local p%,p$
    P%=position(SpDgrd%)
    if P%=100
       off_change SpDgrd%
       P%=0
       Position SpDgrd%,0
       on_change SpDgrd%,change
    end_if
    P$=str$(P%)
    P$=string$(3-len(P$),"0")+P$
    P$=right$(P$,2)
    text Dgrd%,P$
    grades = val(text$(Ugrd%))+(val(text$(Dgrd%))/100)
    ConvertGradesToDegres()
    ConvertGradesToRadians()
    TraceAngle()
END_SUB

SUB ConvertDegresToRadians()
   dim_local pi,U%,D%,U$,D$
   pi=acos(-1)
   Radians=(degres*pi)/180
   U%=int(Radians)
   U$=str$(U%) : U$=string$(4-len(U$),"0")+U$ : U$=right$(U$,3)
   D%=frac(radians)*1000
   D$=str$(int(D%))
   if len(D$)>2 : D$=left$(D$,2): end_if
   off_change SpUrad%
   off_change SpDrad%
   text Urad%,U$
   text Drad%,D$
   Position SpUrad%,val(U$)
   Position SpDrad%,val(D$)
   on_change SpUrad%,change
   on_change SpDrad%,change
END_SUB

SUB ConvertDegresToGrades()
   dim_local pi,U%,D%,U$,D$
   pi=acos(-1)
   Grades=(Degres/360)*400
   U%=int(Grades)
   U$=str$(U%) : U$=string$(4-len(U$),"0")+U$ : U$=right$(U$,3)
   D%=frac(Grades)*1000
   D$=str$(int(D%))
   if len(D$)>2 : D$=left$(D$,2): end_if
   if len(D$)<2 : D$=D$+"0"     : end_if
   off_change SpUgrd%
   off_change SpDgrd%
   text Ugrd%,U$
   text Dgrd%,D$
   Position SpUgrd%,val(U$)
   Position SpDgrd%,val(D$)
   on_change SpUgrd%,change
   on_change SpDgrd%,change
END_SUB

SUB ConvertRadiansToDegres()
   dim_local pi,U%,D%,U$,D$
   pi=acos(-1)
   Degres=(Radians*180)/pi
   U%=int(Degres)
   U$=str$(U%) : U$=string$(4-len(U$),"0")+U$ : U$=right$(U$,3)
   D%=frac(Degres)*1000
   D$=str$(int(D%))
   if len(D$)>2 : D$=left$(D$,2): end_if
   if Degres<=360
      off_change SpUdeg%
      off_change SpDdeg%
      text Udeg%,U$
      text Ddeg%,D$
      Position SpUdeg%,val(U$)
      Position SpDdeg%,val(D$)
      on_change SpUdeg%,change
      on_change SpDdeg%,change
   end_if
END_SUB

SUB ConvertRadiansToGrades()
   dim_local pi,U%,D%,U$,D$
   pi=acos(-1)
   Grades=(Radians*200)/pi
   U%=int(Grades)
   U$=str$(U%) : U$=string$(4-len(U$),"0")+U$ : U$=right$(U$,3)
   D%=frac(Grades)*1000
   D$=str$(int(D%))
   if len(D$)>2 : D$=left$(D$,2): end_if
   if Grades<=400
      off_change SpUgrd%
      off_change SpDgrd%
      text Ugrd%,U$
      text Dgrd%,D$
      Position SpUgrd%,val(U$)
      Position SpDgrd%,val(D$)
      on_change SpUgrd%,change
      on_change SpDgrd%,change
   end_if
END_SUB

SUB ConvertGradesToDegres()
   dim_local pi,U%,D%,U$,D$
   pi=acos(-1)
   Degres=(Grades*400)/360
   U%=int(Degres)
   U$=str$(U%) : U$=string$(4-len(U$),"0")+U$ : U$=right$(U$,3)
   D%=frac(Degres)*1000
   D$=str$(int(D%))
   if len(D$)>2 : D$=left$(D$,2): end_if
   if len(D$)<2 : D$=D$+"0"     : end_if
   if Degres<=360
      off_change SpUdeg%
      off_change SpDdeg%
      text Udeg%,U$
      text Ddeg%,D$
      Position SpUdeg%,val(U$)
      Position SpDdeg%,val(D$)
      on_change SpUdeg%,change
      on_change SpDdeg%,change
   end_if
END_SUB

SUB ConvertGradesToRadians()
   dim_local pi,U%,D%,U$,D$
   pi=acos(-1)
   Radians=(Grades*pi)/200
   U%=int(Radians)
   U$=str$(U%) : U$=string$(4-len(U$),"0")+U$ : U$=right$(U$,3)
   D%=frac(Radians)*1000
   D$=str$(int(D%))
   if len(D$)>2 : D$=left$(D$,2): end_if
   if Radians<=6.28
      off_change SpUrad%
      off_change SpDrad%
      text Urad%,U$
      text Drad%,D$
      Position SpUrad%,val(U$)
      Position SpDrad%,val(D$)
      on_change SpUrad%,change
      on_change SpDrad%,change
   end_if
END_SUB

SUB TraceAngle()
'  centre de l' image
   Cx=(width(visio%)/2)-12
   Cy=(height(visio%)/2) -4
'  def du Segment A
   Ax=520
   Ay=296
'  def rayon + angle
   Ray=Ax-290
   Ang=Radians*-1
'  def du segment B
   Bx=Cx+(Ray*cos(Ang))
   By=Cy+(Ray*sin(Ang))
'  Init du scene2d/picture
   File_load Visio%,Pict$
   2D_TARGET_IS Visio%
   2D_PEN_COLOR 255, 0, 0
   2D_PEN_WIDTH 2
'  tracer de la ligne 0
   2D_LINE Cx,Cy,Ax,Ay
'  tracer de la ligne d' angle
   2D_LINE Cx,Cy,Bx,By
END_SUB
Edit : ca y est ! l' anti-horaire est en place... Laughing


Dernière édition par ygeronimi le Jeu 30 Avr 2015 - 22:58, édité 2 fois
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Table des angles  Empty
MessageSujet: Re: Table des angles    Table des angles  EmptyJeu 30 Avr 2015 - 22:45

bravo Ygeronimi, c'est très bon. Par contre, je crois que par convention, normalement, le ségment devrait tourné dans le sens contraire des aiguilles d'une montre, mais bon c'est un détail
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Table des angles  Empty
MessageSujet: re   Table des angles  EmptyJeu 30 Avr 2015 - 22:48

Oui Jicehel ! je viens s' éditer au dessus, c' est fait ! Laughing 

( Pour pas tout recharger, dans la derniere sub tu mets :    Ang=Radians*-1 à la place de la ligne 475 )
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Table des angles  Empty
MessageSujet: Re: Table des angles    Table des angles  EmptyVen 1 Mai 2015 - 0:19

Parfait, j'ai aussi supprimé la ligne 479 (caption 0 qui sauf erreur de ma part ne sert que pour le debug ?)
Revenir en haut Aller en bas
papydall

papydall


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

Table des angles  Empty
MessageSujet: Re: Table des angles    Table des angles  EmptyVen 1 Mai 2015 - 0:43

En trigonométrie, les angles peuvent-être négatifs.
On doit pouvoir aussi parcourir l’abaque dans le sens horaire (sens négatif)
Modifiez ces deux lignes :

Ligne 91
Code:
 Min SpUdeg%,0-360 : Max SpUdeg%,361 : Position SpUdeg%,0
Ligne 217
Code:
 P%=position(SpUdeg%) : if p% < 0 then p% = 360 + p%

Dans le SPIN sous Degrés, cliquez sur la flèche en bas, vous parcourrez l’abaque dans le sens horaire
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Table des angles  Empty
MessageSujet: re   Table des angles  EmptyVen 1 Mai 2015 - 1:35

@ Jicehel,

Effectivement, c' était une ligne de debug/verif

@ Papydall,

Si tu ne change que ces deux lignes, tu cours au bug ! Laughing 
Il te faut changer tous les objets "Spin", le plus complexe étant celui des décimals pour les radians,
puisqu' ils agissent les uns sur les autres.
Revenir en haut Aller en bas
Contenu sponsorisé





Table des angles  Empty
MessageSujet: Re: Table des angles    Table des angles  Empty

Revenir en haut Aller en bas
 
Table des angles
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Calcul d’angle ALIAS Question de calcul de moyenne : RESOLU
» Problème de la table, du chat et de la tortue.
» Othello - la table d'exercices
» Puissance 4 - Table d'Exercices
» projet d'une table de mixage

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: