1

bonjour a tous

j"aimerais faire une rotation d'un point A autour d'un point B, mais je ne trouve pas mon bonheur sad sad

quequ'un pourrais m'eclairer avec un petit exemple ?

merci d'avance wink
avatar
Menuisier of the Dead bientôt sur GBA !!!! :D

Projet en cours:
-Menuisier Of The Dead

2

xna = ((xa-xb)*cos + (ya-yb)*sin) + xb
yna = ((xb-xa)*sin + (ya-yb)*cos) + yb
Ancien pseudo : lolo

3

merci beaucoup wink

mais visiblement le point toune en ovale autour de l'autre sad
avatar
Menuisier of the Dead bientôt sur GBA !!!! :D

Projet en cours:
-Menuisier Of The Dead

4

5

non plus tongue

la ca tourne plus du tout grin

j'essaie d'autre combinaison wink
avatar
Menuisier of the Dead bientôt sur GBA !!!! :D

Projet en cours:
-Menuisier Of The Dead

6

xna = r*cos + xb
yna = r*sin + yb

où r est le rayon de ton cercle ^^

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

7

peut etre tout simplement ton axe Y n'est pas a la meme échelle que X ?
Auteur de Mode7 Engine pour ti68k
Auteur de F-ZERO for TI68k
Membre de Orage Studio
Mon site perso : http://www.tigen.org/lionela/
Le gite de mes parents à coté de Narbonne :
http://chaletdenis.free.fr/

8

Les formules de Spipu sont bien les bonnes smile

8757.png
avatar

9

Pollux (./6) :
xna = r*cos + xb
yna = r*sin + yb

où r est le rayon de ton cercle ^^


salut happy

comment tu fait pour calculer r quand tes deux point sont en "diagonale" ?



merci a tous pour vos reponses, ca fait plaisir ^^'
avatar
Menuisier of the Dead bientôt sur GBA !!!! :D

Projet en cours:
-Menuisier Of The Dead

10

Ce que donne Pollux, ce n'est pas vraiment une rotation. Il place le point A avec des coordonnées polaires par rapport à B.
Si tu veux une rotation, alors il faut additionner l'angle de la rotation à celui que tu as avant la rotation.

r est la distance entre A et B donc il faut utiliser le théorème de Pythagore.
avatar

11

[cross] si tu as un point de départ connu, il faut prendre la méthode de Spipu smile

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

12

./3 > si le point tourne en ovale c'est sans doute que les pixels ne sont pas carrés ?
dans ce cas il faut appliquer un facteur d'échelle à l'une des coordonnées pour rectifier, a priori happy
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

13

Sally (./12) :
./3 > si le point tourne en ovale c'est sans doute que les pixels ne sont pas carrés ?

Typique de certains "mauvais" écrans 16/9e 16/10e qui n'ont pas la résolution de leurs dimensions et qui trichent sur le pitch horizontal.
C'est aussi le cas sur les moniteurs Amigas si je ne m'abuse (ça a d'ailleurs posé certains soucis ^^)
avatar

14

Mais c'est en Basic qu'ils peuvent ne pas être carrés, non ?
sawamura, tu programmes en C ou en Basic ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

15

Ah merde, j'avais pas vu que j'étais sur le forum TI triso désolé
avatar

16

17

oui mais tu peux redéfinir les axes du repère en basic ^^ (mais pê que ta remarque était ironique)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

18

Oui PtOn utilises les paramètres de la window contrairement à PxlOn.
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

19

je code sur psp, en C wink

et mon "plan' de travail respecte bien "un pixel de l'ecran pour un pixel de l'image"

le probleme c'est qu'avec la methode de spipu, mon point tourne autour de l'autre, mais en ovale, et en diagonale wink
(je sais pas si je m'explique bien en fait cheeky)

tempx = ((decor[i].xp-xp1)*cos + (decor[i].yp-yp1)*sin) + xp1 ;
tempy = ((xp1-decor[i].xp)*sin + (decor[i].yp-yp1)*cos) + yp1 ;
decor[i].xp = tempx;
decor[i].yp = tempy;
avatar
Menuisier of the Dead bientôt sur GBA !!!! :D

Projet en cours:
-Menuisier Of The Dead

20

Je pense que ton problème, c'est un problème d'arrondi. Si on fait à chaque fois la rotation (xa,ya)->(xna,yna), on accumule les erreurs d'arrondi. Il faut garder le (xa,ya) d'origine constant, faire varier l'angle de rotation et recalculer (xna,yna) à partir du (xa,ya) d'origine à chaque fois, comme ça on ne perd pas en précision sans arrêt.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

21

bon, c'est la fete cheeky

maintenant j'ai une erreur a la compilation sad a cause de ce bout de code
"invalid operands to binary *" sadsad


avatar
Menuisier of the Dead bientôt sur GBA !!!! :D

Projet en cours:
-Menuisier Of The Dead

22

pb d'arrondit, de unsigned et autre
tout convertir en float, ca sera mieux
Ancien pseudo : lolo

23

de plus, sur psp, il y a direct la gestion des rotations...
Ancien pseudo : lolo

24

sawamura (./21) :
"invalid operands to binary *" sadsad

Bah ça veut dire ce que ça veut dire, tu es en train de multiplier des trucs qui ne sont pas multipliables (enfin, au moins un des 2 facteurs est mauvais), genre des structures, vérifie tes opérandes.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

25

Le top reste une table précalculée de cos et sin en Fixed Point. Et si il y a beaucoup de transformations à faire alors il faut utiliser les matrices.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

26

Les matrices ca revient exactement au meme...

27

Ce n'est qu'une écriture différente, les calculs restent les mêmes. C'est ça ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

28

basiquement ouais.

29

Et la meilleure notation pour les rotations en 2D, ce sont les complexes, pas les matrices!
Dans une matrice de rotation 2D, tu as besoin de 4 nombres, dont 2 sont toujours égaux et 2 toujours opposés. Avec les complexes, tu n'as pas cette redondance.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

30

Oui enfin la notation n'a pas d'importance. En pratique, on stocke juste les coordonnées cartésiennes des points et l'angle de rotation. Quelque soit la représentation, on retombera toujours sur 2 sinus et 2 cosinus pour la calcul.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.