Rotation d'un point

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
Helba
Messages: 5
Enregistré le: 09 Jan 2013, 17:18

rotation d'un point

par Helba » 10 Jan 2013, 08:23

Bon je poste ici je suis plus au lycée , mais mon problème est a mon avis de niveau lycée.
Je vais expliquer mon problème donc je veux faire une rotation en x,y en rajoutant un angle mais sans utiliser acos c'est possible ?
En tous cas je voudrais faire le moins de calcul possible , (c'est pour un programme et racine carré et acos sont trop long ).

J'utilise le théorème al-kashi pour connaitre angle
a = racinecarre(x²)
b = racinecarre(x² + y²)
c = racinecarre( (a-x)² + (y²) )
d = a² + b² - c²

ici je rajoute angle
ang = acos( d/(2*a*b)) + angle

et je fais la rotation
x = b*cos(ang)
y = b*sin(ang)

Ce calcul marche mais trop long.
J'avais pensé a faire ceci en 'additionnant' les cos et sin mais ça marche pas trop.

J'utilise pythagore la ^^'
h = racinecarre(x² + y²)
a = 1 - (x / h)
b = 0 - (y / h)
a = cos(angle) - a
b = sin(angle) - b

x = h* a
y = h* b

Voila si y a un problème de compréhension dites le moi , mais mon niveau en math est très faible.
voila merci avance =)



Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 10 Jan 2013, 08:36

hello,

pourrais-tu nommer ce que sont chacune de tes lettres?
On fait des maths, pas de l'info, donc a = cos(angle) - a, c'est probablement faux.

peux-tu aussi expliquer ce qui te permet de decreter tes egalites, et rajouter des doncs lorsque tu deduis des egalites.

Enfin, qu'appeles-tu trop long:fais-tu beaucoup de rotation de points?, la precision est-elle un must?
la vie est une fête :)

Helba
Messages: 5
Enregistré le: 09 Jan 2013, 17:18

par Helba » 10 Jan 2013, 08:49

oh ok désolé =P
donc a,b,c,d,ang,angle(et h pour l'autre) sont des variables.
x et y des coordonnées (et des variable aussi)
donc pour les variable si je dis
a = 1
a fait 1
et si je continue
a = a +5
a fait 6

Enfin, qu'appeles-tu trop long:fais-tu beaucoup de rotation de points?, la precision est-elle un must?

long parce que je fais bcp de rotation de point (un personnage 3D avec 10000 triangle et qui possède a peu 30000 points).
précision au moins de 10 puissance -6


La deuxième partie est fausse vu que cela ne marche pas

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 10 Jan 2013, 09:12

ca va je sais ce qu'est une affectation.

La question c'est : c'est quoi a (idem les autres variables)
c'est le cote d'un triangle, le prix d'un pain au chocolat?

J'apprecie que tu poses la demarche que tu as effectuee, mais si on ne sait pas pourquoi tu ecris a=sqrt(machin), on va pas pouvoir t'aider.

PS: concernant la rotation, si elles ont toutes le meme centre et meme axe, on devrait s'en sortir assez bien.
la vie est une fête :)

Helba
Messages: 5
Enregistré le: 09 Jan 2013, 17:18

par Helba » 10 Jan 2013, 09:42

Oh ok ^^'
donc a ,b,c c'est le coter des triangles.
voila une image qui permettra de comment j'ai raisonner : http://img15.hostingpics.net/pics/929605Sanstitre.png

alors je voulais que a soit tjs positive donc
a = sqrt(x²)
b je le connais pas mais on peut faire Pythagore donc
b = sqrt(x² + y²)
pareil pour c

en gros si je prend les valeur de mon exemple ça donne
x = -2
y = -5
a = sqrt((-2)²)
b = sqrt ( (-2)² + 5²)
c = sqrt( (2 - -2)² + 5²)
c = sqrt(41)
d = (-2)² + (5²) - (sqrt(41))²

http://fr.wikipedia.org/wiki/Th%C3%A9or%C3%A8me_d%27Al-Kashi
on est d'accort que pour connaitre angle (angle Y) on fait :
ang = acos( d/(2*a*b))


j'ai rajouter angle parce que c'est le but de la rotation (si angle = 0 , le point bougerai pas)
ang = acos( d/(2*a*b)) +angle

la nouvelle position des points
x = b*cos(ang)
y = b*sin(ang)

PS: concernant la rotation, si elles ont toutes le meme centre et meme axe, on devrait s'en sortir assez bien.

de quoi de tous mes points ? non pas tous le meme centre mais c'est pas un souci

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 10 Jan 2013, 10:21

j'ai rajouter angle parce que c'est le but de la rotation (si angle = 0 , le point bougerai pas)
ang = acos( d/(2*a*b)) +angle


Si on nomme le triangle ABC, A(0,0)
a=AB => B(2,0)
b=AC => C(-2,5)
c=BC

quelle transformation cherches-tu a faire?
que le nouveau B (nomme B') soit aligne sur [AC)?

De quel angle tu desires faire ta rotation (je presume de centre A)
la vie est une fête :)

Helba
Messages: 5
Enregistré le: 09 Jan 2013, 17:18

par Helba » 10 Jan 2013, 10:42

fatal_error a écrit:Si on nomme le triangle ABC, A(0,0)
a=AB => B(2,0)
b=AC => C(-2,5)
c=BC

quelle transformation cherches-tu a faire?
que le nouveau B (nomme B') soit aligne sur [AC)?

De quel angle tu desires faire ta rotation (je présume de centre A)

Je que j'essaye de faire est qu'on a un point et qu'on fasse une rotation (enfin le premier algo marche mais trop lourd) , a partir du centre 0,0.
Dsl de pas répondre plus que ça je ne comprend c que t'as écris(oui j'ai un niveau faible en math et clairement pas habituer au langage mathématique).

on gros on oubliant je que j'ai écrit , je veux faire cela
http://img15.hostingpics.net/pics/706053Sanstitre.png
on a un point en x,y en fait + PI/4 on a x',y' (j'ai mis des valeur pour exemple).

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 10 Jan 2013, 11:05

Pour ton point P(x,y) et son image P'(x',y') apres rotation de centre O(0,0) d'angle A tu as:

P'=MP
avec M=[cos(A) -sin(A);sin(A) cos(A)]
je stocke a=cos(A), b=sin(A), il vient:
x' = ax-by
y' = bx+ay

application: A=PI/4, x=0.54, y=0.84
a=cos(A)=0.707
b=sin(A)=0.707
x'=0.707*0.54 - 0.707*0.84 = -0.21
y'= 0.707*0.54 + 0.707*0.84 = 0.97566

Maintenant, as-tu plusieurs points sur lesquels appliquer cette meme rotation de centre (0,0) et d'angle pi/4? (car si c'est le cas, tu ne calcules cos(A) et sin(A) qu'une seule fois)
la vie est une fête :)

Helba
Messages: 5
Enregistré le: 09 Jan 2013, 17:18

par Helba » 10 Jan 2013, 11:40

Oh je vois maintenant je comprend mieux , on m'avait passait cet algo ,mais il marchait pas , (je viens de debug je comprend mon ancienne erreur).
Comme quoi faut pas utiliser des calcul qu'on comprend pas.

fatal_error a écrit:Maintenant, as-tu plusieurs points sur lesquels appliquer cette meme rotation de centre (0,0) et d'angle pi/4? (car si c'est le cas, tu ne calcules cos(A) et sin(A) qu'une seule fois)

Ah oui effectivement ça évite les calcule inutile et augmente optimisation des calculs.


Bon on tous cas merci beaucoup =D

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 60 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite