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.
N'est pas Néo qui veut Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
N'est pas Néo qui veut Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
N'est pas Néo qui veut Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
N'est pas Néo qui veut Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
N'est pas Néo qui veut Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
N'est pas Néo qui veut Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
N'est pas Néo qui veut Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
N'est pas Néo qui veut Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
N'est pas Néo qui veut Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
N'est pas Néo qui veut Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
N'est pas Néo qui veut Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
N'est pas Néo qui veut Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
N'est pas Néo qui veut Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
N'est pas Néo qui veut Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
N'est pas Néo qui veut 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
Le Deal du moment :
Code promo Nike : -25% dès 50€ ...
Voir le deal

 

 N'est pas Néo qui veut

Aller en bas 
4 participants
AuteurMessage
Froggy One

Froggy One


Nombre de messages : 598
Date d'inscription : 06/01/2012

N'est pas Néo qui veut Empty
MessageSujet: N'est pas Néo qui veut   N'est pas Néo qui veut EmptyMer 13 Mar 2013 - 10:20

Bon, j'avais du temps devant moi, alors vite ! au PANORAMIC ! Grâce à vous tous, je progresse dans mon ridicule mais si important (pour moi) projet de FAIRE TOURNER UN RECTANGLE !!! Pas de problème grâce à la matrice, oui mais voilà : c'est l'angle qui me pose un problème (déjà, dans les wargames, les Angles...)

J'ai cru comprendre (ne riez pas, je suis plutôt littéraire) que l'angle devait être converti par une formule du style :

Ang=Ang * 2 * pi / 360

Donc, si je veux faire tourner ma figure de 15°, tout baigne !!! ben non. si je boucle de 0 à 15, ET SANS CETTE FORMULE (que je cache provisoirement derrière un REM) j'ai une figure qui s'éloigne de façon quasi exponentielle tandis que si je l'applique, PANORAMIC cesse tout bonnement de fonctionner.

Voici mon code, à l'attention de tout Samaritain du web :

caption 0, "TANK move 0.0"
rem 320 240

rem Affichage des éléments

top 0,(screen_y-height(0))/2
left 0,(screen_x-width(0))/2
'
picture 1:full_space 1:2d_target_is 1
color 1,50,130,13
'
rem 'Dimensions du rectangle
dim LargRect%,HautRect%
LargRect%=64:HautRect%=32

rem Calcul du 'centre de la fenêtre

dim xc%,yc%
xc%=int(width(1)/2)
yc%=int(height(1)/2)

rem on place les 4 coins du rectangle

dim xhd%,xhg%,xbg%,xbd%
dim yhd%,yhg%,ybg%,ybd%

xhd%=xc%+int(LargRect%/2)
yhd%=yc%-int(HautRect%/2)
xhg%=xc%-int(LargRect%/2)
yhg%=yc%-int(HautRect%/2)
xbg%=xhg%
ybg%=yc%+int(HautRect%/2)
xbd%=xhd%
ybd%=ybg%

rem on place les points pour voir

2d_point xc%,yc%
2d_point xhd%,yhd%
2d_point xhg%,yhg%
2d_point xbg%,ybg%
2d_point xbd%,ybd%

rem et on trace

2d_line xhd%,yhd%,xhg%,yhg%
2d_line xhg%,yhg%,xbg%,ybg%
2d_line xbg%,ybg%,xbd%,ybd%
2d_line xbd%,ybd%,xhd%,yhd%

rem silence on tourne

dim x1,y1,x2,y2,x3,y3,x4,y4
rem ce sont les xhd%, yhd% etc. transformés par rotation

dim Ang,pi:pi= 4* ATN(1)
Ang=15
Ang=Ang * 2 * pi/360

dim mathg,mathd,matbg,matbd
rem ce sont les coordonnées de la matrice, Néo !

for Ang=5 to 15

mathg=cos(Ang)
mathd=sin(Ang)
matbg=0-sin(Ang)
matbd=cos(Ang)

x1=(mathg*xhd%)+(matbg*yhd%):y1=(mathd*xhd%)+(matbd*yhd%)
x2=(mathg*xhg%)+(matbg*yhg%):y2=(mathd*xhg%)+(matbd*yhg%)
x3=(mathg*xbg%)+(matbg*ybg%):y3=(mathd*xbg%)+(matbd*ybg%)
x4=(mathg*xbd%)+(matbg*ybd%):y4=(mathd*xbd%)+(matbd*ybd%)

2d_line x1,y1,x2,y2
2d_line x2,y2,x3,y3
2d_line x3,y3,x4,y4
2d_line x4,y4,x1,y1

next Ang

Où c'est-t-y que j'ai m... é, dites-moi ?
Revenir en haut Aller en bas
http://gaeldwest.wordpress.com
Klaus

Klaus


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

N'est pas Néo qui veut Empty
MessageSujet: Re: N'est pas Néo qui veut   N'est pas Néo qui veut EmptyMer 13 Mar 2013 - 10:44

Tu as mélangé les notions de degrés et radians. Tu veux déterminer ton angle en degrés, et tu passe cette valeur aux fonctions trigonométriques. Or, celles-ci n'acceptent que les valeurs en radians. Le radian d'un angle se calcule par:
radian = degré * pi / 180

Donc, voici ton code adapté à cela (j'ai marqué les modifs faites, et j'ai désactivé les lignes inutiles):
Code:

caption 0, "TANK move 0.0"
rem 320 240

rem Affichage des éléments

top 0,(screen_y-height(0))/2
left 0,(screen_x-width(0))/2
'
picture 1:full_space 1:2d_target_is 1
color 1,50,130,13
'
rem 'Dimensions du rectangle
dim LargRect%,HautRect%
LargRect%=64:HautRect%=32

rem Calcul du 'centre de la fenêtre

dim xc%,yc%
xc%=int(width(1)/2)
yc%=int(height(1)/2)

rem on place les 4 coins du rectangle

dim xhd%,xhg%,xbg%,xbd%
dim yhd%,yhg%,ybg%,ybd%

xhd%=xc%+int(LargRect%/2)
yhd%=yc%-int(HautRect%/2)
xhg%=xc%-int(LargRect%/2)
yhg%=yc%-int(HautRect%/2)
xbg%=xhg%
ybg%=yc%+int(HautRect%/2)
xbd%=xhd%
ybd%=ybg%

rem on place les points pour voir

2d_point xc%,yc%
2d_point xhd%,yhd%
2d_point xhg%,yhg%
2d_point xbg%,ybg%
2d_point xbd%,ybd%

rem et on trace

2d_line xhd%,yhd%,xhg%,yhg%
2d_line xhg%,yhg%,xbg%,ybg%
2d_line xbg%,ybg%,xbd%,ybd%
2d_line xbd%,ybd%,xhd%,yhd%

rem silence on tourne

dim x1,y1,x2,y2,x3,y3,x4,y4
rem ce sont les xhd%, yhd% etc. transformés par rotation

dim Ang,pi:pi= 4* ATN(1)
' Ang=15
' Ang=Ang * 2 * pi/360

dim mathg,mathd,matbg,matbd
rem ce sont les coordonnées de la matrice, Néo !

dim angrad  : ' <======= variable pour contenir l'angle en radians

for Ang=5 to 15

angrad = ang * pi/180  : ' <======= calculer l'angle en radians

mathg=cos(Angrad)  : ' <=======  utiliser l'angle en radians
mathd=sin(Angrad)    : ' <=======  utiliser l'angle en radians
matbg=0-sin(Angrad) : ' <=======  utiliser l'angle en radians
matbd=cos(Angrad)  : ' <=======  utiliser l'angle en radians

x1=(mathg*xhd%)+(matbg*yhd%):y1=(mathd*xhd%)+(matbd*yhd%)
x2=(mathg*xhg%)+(matbg*yhg%):y2=(mathd*xhg%)+(matbd*yhg%)
x3=(mathg*xbg%)+(matbg*ybg%):y3=(mathd*xbg%)+(matbd*ybg%)
x4=(mathg*xbd%)+(matbg*ybd%):y4=(mathd*xbd%)+(matbd*ybd%)

2d_line x1,y1,x2,y2
2d_line x2,y2,x3,y3
2d_line x3,y3,x4,y4
2d_line x4,y4,x1,y1

next Ang


Petite remarque: la prochaine fois, lorsque tu posteras un code, entoure-le des balises (code)...(/code). Attention: utilise les parenthèses carrées (alt-( et alt-) at lieu des parenthèses rondes, bien sûr) ou utilise la bouton "<>" dans la barre d'outils de la fenêtre de conception du post !

Bonne chance !


Dernière édition par Klaus le Mer 13 Mar 2013 - 14:05, édité 2 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


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

N'est pas Néo qui veut Empty
MessageSujet: Re: N'est pas Néo qui veut   N'est pas Néo qui veut EmptyMer 13 Mar 2013 - 12:43

Je poste juste une modif, je ne suis pas sur d'avoir compris, mais bon sur ma pause repas, je fais vite.
Klaus, tu rajoutes la variables qui va bien pour l'angle en radian, mais tu ne l'utilise pas (ou alors ça m'a échappé ...)
Je pense que tu voulais faire un truc du genre:
Code:
caption 0, "TANK move 0.0"

' Affichage des éléments

top 0,(screen_y-height(0))/2 : left 0,(screen_x-width(0))/2
picture 1:full_space 1:2d_target_is 1 : color 1,50,130,13
'
rem 'Dimensions du rectangle
dim LargRect%,HautRect% : LargRect%=64:HautRect%=32

' Calcul du centre de la fenêtre

dim xc%,yc% : xc%=int(width(1)/2) : yc%=int(height(1)/2)

' 0n place les 4 coins du rectangle

dim xhd%,xhg%,xbg%,xbd%,yhd%,yhg%,ybg%,ybd%

xhd%=xc%+int(LargRect%/2) : yhd%=yc%-int(HautRect%/2)
xhg%=xc%-int(LargRect%/2) : yhg%=yc%-int(HautRect%/2)
xbg%=xhg% : ybg%=yc%+int(HautRect%/2)
xbd%=xhd% : ybd%=ybg%

rem silence on tourne

dim x1,y1,x2,y2,x3,y3,x4,y4
rem ce sont les xhd%, yhd% etc. transformés par rotation

dim Ang,pi:pi= 4* ATN(1)
dim mathg,mathd,matbg,matbd, angrad

' Coordonnées de la matrice, Néo !

for Ang= -30 to 40 step 2

  angrad = ang * pi/180
  mathg=cos(Angrad) : mathd=sin(Angrad) : matbg=0-sin(Angrad) : matbd=cos(Angrad)
  x1=(mathg*xhd%)+(matbg*yhd%):y1=(mathd*xhd%)+(matbd*yhd%)
  x2=(mathg*xhg%)+(matbg*yhg%):y2=(mathd*xhg%)+(matbd*yhg%)
  x3=(mathg*xbg%)+(matbg*ybg%):y3=(mathd*xbg%)+(matbd*ybg%)
  x4=(mathg*xbd%)+(matbg*ybd%):y4=(mathd*xbd%)+(matbd*ybd%)
  2d_line x1,y1,x2,y2 : 2d_line x2,y2,x3,y3 : 2d_line x3,y3,x4,y4 : 2d_line x4,y4,x1,y1

next Ang
Revenir en haut Aller en bas
mindstorm

mindstorm


Nombre de messages : 685
Age : 55
Localisation : charente
Date d'inscription : 13/02/2013

N'est pas Néo qui veut Empty
MessageSujet: Re: N'est pas Néo qui veut   N'est pas Néo qui veut EmptyMer 13 Mar 2013 - 12:59

bonjour a tous juste une petite pierre a l edifice.il faut veiller a choisir le point de rotation qui n est pas forcement un des quatres angle faite l essai avec une feuille de papier c est plus facile.
Revenir en haut Aller en bas
Klaus

Klaus


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

N'est pas Néo qui veut Empty
MessageSujet: Re: N'est pas Néo qui veut   N'est pas Néo qui veut EmptyMer 13 Mar 2013 - 14:06

Tu as raison, Jicehel ! Quel étourdi je fais ! J'ai corrigé dans le source que j'ai posté...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
mindstorm

mindstorm


Nombre de messages : 685
Age : 55
Localisation : charente
Date d'inscription : 13/02/2013

N'est pas Néo qui veut Empty
MessageSujet: Re: N'est pas Néo qui veut   N'est pas Néo qui veut EmptyMer 13 Mar 2013 - 18:52

bonsoir a tous
je viens de recuperer mon ordinateur et je confirme, la rotation ce fait sur le point 0,0 alors qu il faudrai quelle se situ au milieu des deux coin bas.
la solution est de faire un changement de repaire de 0,0 vers Xr,Yr
malheureusement je ne sait pas le faire avec les matrices, il y aura surement un Panoramicien bienveillant de passage
Very Happy
Revenir en haut Aller en bas
Klaus

Klaus


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

N'est pas Néo qui veut Empty
MessageSujet: Re: N'est pas Néo qui veut   N'est pas Néo qui veut EmptyMer 13 Mar 2013 - 19:18

C'est simple:
1. avant d'effectuer la rotation, tu soustraits les coordonnées x et y du point de rotation de tous les points. Conséquence: tu obtiens des coordonnées temporaires avec le point de rotation en (0,0).
2. tu effectues ta rotation normalement
3. tu additionnes les coordonnées réelles du point de rotation à tous les points. Conséquence: le point de rotation se retrouvra à nouveau à sa place, et les autres points auront leur place définitive.

Cela s'appelle:
1. une translation de (x0,y0) en (0,0)
2. une rotation autour de (0,0)
3. une translation de (0,0) en (x0,x0)

Simple, non ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
mindstorm

mindstorm


Nombre de messages : 685
Age : 55
Localisation : charente
Date d'inscription : 13/02/2013

N'est pas Néo qui veut Empty
MessageSujet: Re: N'est pas Néo qui veut   N'est pas Néo qui veut EmptyMer 13 Mar 2013 - 23:36

sunny
merci karl pour tes lumieres
Basketball
a toi la balle froggy one
bon courage
Revenir en haut Aller en bas
Froggy One

Froggy One


Nombre de messages : 598
Date d'inscription : 06/01/2012

N'est pas Néo qui veut Empty
MessageSujet: Néo et des bas   N'est pas Néo qui veut EmptyJeu 14 Mar 2013 - 14:14

Merci à tous, j'étais parti sur une autre piste mais l'idée de Klaus est à essayer. Je m'y mets dès que j'ai un peu plus de temps libre...
Revenir en haut Aller en bas
http://gaeldwest.wordpress.com
Froggy One

Froggy One


Nombre de messages : 598
Date d'inscription : 06/01/2012

N'est pas Néo qui veut Empty
MessageSujet: Youpi   N'est pas Néo qui veut EmptyJeu 14 Mar 2013 - 14:45

Cela fonctionne très bien effectivement avec l'astuce de Klaus. Bon, j'y retourne, merci encore !
Revenir en haut Aller en bas
http://gaeldwest.wordpress.com
Contenu sponsorisé





N'est pas Néo qui veut Empty
MessageSujet: Re: N'est pas Néo qui veut   N'est pas Néo qui veut Empty

Revenir en haut Aller en bas
 
N'est pas Néo qui veut
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» PANORAMIC et informatique de gestion (les tableaux)
» un picture qui ne veut pas grandir^^
» un texte qui veut rester sur un fond gris.
» GestCompte
» Timer qui ne veut pas faire son boulot

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: