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
» Gestion d'un système client-serveur.
N'est pas Néo qui veut Emptypar Pedro Aujourd'hui à 7:20

» item_index(résolu)
N'est pas Néo qui veut Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
N'est pas Néo qui veut Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
N'est pas Néo qui veut Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
N'est pas Néo qui veut Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
N'est pas Néo qui veut Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
N'est pas Néo qui veut Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
N'est pas Néo qui veut Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
N'est pas Néo qui veut Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
N'est pas Néo qui veut Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
N'est pas Néo qui veut Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
N'est pas Néo qui veut Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
N'est pas Néo qui veut Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
N'est pas Néo qui veut Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
N'est pas Néo qui veut Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -39%
Pack Home Cinéma Magnat Monitor : Ampli DENON ...
Voir le deal
1190 €

 

 N'est pas Néo qui veut

Aller en bas 
4 participants
AuteurMessage
Froggy One

Froggy One


Nombre de messages : 586
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 : 12298
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 : 51
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 : 12298
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 : 12298
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 : 586
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 : 586
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)
» Timer qui ne veut pas faire son boulot
» un texte qui veut rester sur un fond gris.
» un picture qui ne veut pas grandir^^
» Jack ! ca veut dire quoi...

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: