TRANSLATION ET ROTATION D'UN POINT DE L'ÉCRAN EN QUELQUES LIGNES
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 2008
-
3 mars 2006 à 21:17
legaultp
Messages postés7Date d'inscriptionmercredi 25 février 2009StatutMembreDernière intervention 8 avril 2009
-
8 avril 2009 à 19:48
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
legaultp
Messages postés7Date d'inscriptionmercredi 25 février 2009StatutMembreDernière intervention 8 avril 2009 8 avril 2009 à 19:48
Pour ce qui est de l'optimisation, il est vrai que c'est plus court à écrire toutefois, au niveau de la rapidité, je crois que le if est une solution plus rapide!
katsankat
Messages postés571Date d'inscriptionvendredi 30 décembre 2005StatutMembreDernière intervention12 juillet 20123 5 mars 2006 à 18:39
Salut les amis :)
Je parle au conditionnel, mais le tuto n'est pas gravé dans le marbre.
L'idéal aurait été une fonction qui retourne le couple de coordonnées modifié.
Le tout avec des variables déclarées en long puisque tu dessines sur l' écran. Aussi je les aurais nommées x1 y1 x2 y2 c'est plus parlant.
Public X, Y, H, V, A, S As Double
... Déclare 5 Variant et un double. Pendant l' exécution, regarder la fenêtre affichage de variables locales pour vérifier (placer un point d' arrêt et faire un tour dans le menu Affichage).
Sub Trigo(X, Y, H, V, A, S)
Idem: la procédure prend 6 variant en arguments.
Comme c'est du niveau 1 il faudrait faire 3 fonctions; une translation, une rotation, et un mix. Le nom "Trigo" n'évoque rien de particulier.
Aussi une image utilisant un petit picture1.circle ou me.circle aurait aidé "les débutants qui haissent les maths". Ou avec la méthode line(), ya des choses très intéressantes à faire.
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 4 mars 2006 à 14:14
"L'origine (0,0) est le coin supérieur haut de l'écran" !!!
Généralement (car dépendant du contrôle ActiveX utilisé!!!) haut gauche de la zone de dessin.
Coté maths, ok, pourquoi pas... Encore qu'il manque cruellement d'explications !!!
Coté code, je ne vois pas l'intérêt !!! Par exemple, tu ne spécifies pas ByVal et ByRef dans ta fonction alors que, justement, si les valeurs sont renvoyées par les variables X et Y il est important de préciser ByRef ne serait-ce pour le codeur qui va utiliser ton code (et qui n'a pas forcément le temps de piger comment tu transmets les valeurs). Mais perso, j'aurais codé un type perso style Coordonnees contenant X et Y !
Bref, perso j'aurais préféré que tu nous fasses un tuto sur la trigo plutôt que de nous pondre des "formules" sans explications ni code réellement (pardonne moi l'expression) "constructif".
Bon, le prends pas mal hein, c'est pas méchant, c'est juste mon avis (un peu "dur" j'en conviens)... Mais c'est quand même une bonne première contribution : continu comme ça :D
Sinon, coté maths, y'a quand même un truc que je pige pas!
Tu m'excuses si je suis à coté de la plaque mais pourquoi ne pas se contenter de faire une truc du genre :
X = PtCentreX + R * Cos(Angle)
Y = PtCentreY + R * Sin(Angle)
Bon, allé, encore une dernière critique (critiques qui ne sont jamais ni positives ni négatives mais toujours constructives!), pourquoi ne pas avoir inclus la possibilité d'utiliser soit les degrés, soit les radians (voire les Grades ;) ?
Enjoy ^^
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 3 mars 2006 à 21:17
Optimisation : Dans l'expression ci-dessous, le test S=0 peut être enlevé.
En effet, la gestion du changement + - peut se faire en utilisant les puissances de -1
(-1)^0 = 1
(-1)^1 = -1
# If S = 0 Then
# XR = XT * Cos(A) + YT * Sin(A)
# YR = -XT * Sin(A) + YT * Cos(A)
# Else
# XR = XT * Cos(A) - YT * Sin(A)
# YR = XT * Sin(A) + YT * Cos(A)
# End If
8 avril 2009 à 19:48
5 mars 2006 à 18:39
Je parle au conditionnel, mais le tuto n'est pas gravé dans le marbre.
L'idéal aurait été une fonction qui retourne le couple de coordonnées modifié.
Le tout avec des variables déclarées en long puisque tu dessines sur l' écran. Aussi je les aurais nommées x1 y1 x2 y2 c'est plus parlant.
Public X, Y, H, V, A, S As Double
... Déclare 5 Variant et un double. Pendant l' exécution, regarder la fenêtre affichage de variables locales pour vérifier (placer un point d' arrêt et faire un tour dans le menu Affichage).
Sub Trigo(X, Y, H, V, A, S)
Idem: la procédure prend 6 variant en arguments.
Comme c'est du niveau 1 il faudrait faire 3 fonctions; une translation, une rotation, et un mix. Le nom "Trigo" n'évoque rien de particulier.
Aussi une image utilisant un petit picture1.circle ou me.circle aurait aidé "les débutants qui haissent les maths". Ou avec la méthode line(), ya des choses très intéressantes à faire.
4 mars 2006 à 14:14
Généralement (car dépendant du contrôle ActiveX utilisé!!!) haut gauche de la zone de dessin.
Coté maths, ok, pourquoi pas... Encore qu'il manque cruellement d'explications !!!
Coté code, je ne vois pas l'intérêt !!! Par exemple, tu ne spécifies pas ByVal et ByRef dans ta fonction alors que, justement, si les valeurs sont renvoyées par les variables X et Y il est important de préciser ByRef ne serait-ce pour le codeur qui va utiliser ton code (et qui n'a pas forcément le temps de piger comment tu transmets les valeurs). Mais perso, j'aurais codé un type perso style Coordonnees contenant X et Y !
Bref, perso j'aurais préféré que tu nous fasses un tuto sur la trigo plutôt que de nous pondre des "formules" sans explications ni code réellement (pardonne moi l'expression) "constructif".
Bon, le prends pas mal hein, c'est pas méchant, c'est juste mon avis (un peu "dur" j'en conviens)... Mais c'est quand même une bonne première contribution : continu comme ça :D
Sinon, coté maths, y'a quand même un truc que je pige pas!
Tu m'excuses si je suis à coté de la plaque mais pourquoi ne pas se contenter de faire une truc du genre :
X = PtCentreX + R * Cos(Angle)
Y = PtCentreY + R * Sin(Angle)
Bon, allé, encore une dernière critique (critiques qui ne sont jamais ni positives ni négatives mais toujours constructives!), pourquoi ne pas avoir inclus la possibilité d'utiliser soit les degrés, soit les radians (voire les Grades ;) ?
Enjoy ^^
3 mars 2006 à 21:17
En effet, la gestion du changement + - peut se faire en utilisant les puissances de -1
(-1)^0 = 1
(-1)^1 = -1
# If S = 0 Then
# XR = XT * Cos(A) + YT * Sin(A)
# YR = -XT * Sin(A) + YT * Cos(A)
# Else
# XR = XT * Cos(A) - YT * Sin(A)
# YR = XT * Sin(A) + YT * Cos(A)
# End If
se remplace, en deux lignes, par :
XR = XT * Cos(A) + ((-1)^S)*YT * Sin(A)
YR = -((-1)^S)*XT * Sin(A) + YT * Cos(A)