le bar du forum
Re: le bar du forum
Punaise c'est fou, moins de 10$! http://www.ebay.com/itm/New-Audiophonic ... 1880352983
- thierryvalk
- Administrateur du site
- Messages : 3771
- Enregistré le : jeu. 9 juil. 2015 20:08
- Localisation : Belgique
trigono
Je me permets de soumettre un petit exercice de trigonométrie sans rapport avec l’audio.
Voici un dessin :
Il s’agit d’un PCB avec 2 mires rondes M1 et M2 et un composant C1 qui lui n’est pas rond.
On connait XY de M1, M2 et C1 avec son angle d’orientation.
Une caméra va donner M1’ et M2’ en X et Y.
De là il faut déterminer C1’ le plus simplement mais avec une certaine précision par rapport aux axes x et y ainsi que la correction de son orientation.
Tout en sachant que les coordonnées de M1’ et M2’ ne seront pas 100% exactes vu les tolérances du PCB mais surtout de la caméra.
Pour pimenter, en fait le rectangle rouge peut être en miroir selon Y, X ou les 2.
C’est pas très compliqué on soustrait de la largeur ou longueur, mais donc le point O1 est une origine qui n’est pas nécessairement à 0.
Voici un dessin :
Il s’agit d’un PCB avec 2 mires rondes M1 et M2 et un composant C1 qui lui n’est pas rond.
On connait XY de M1, M2 et C1 avec son angle d’orientation.
Une caméra va donner M1’ et M2’ en X et Y.
De là il faut déterminer C1’ le plus simplement mais avec une certaine précision par rapport aux axes x et y ainsi que la correction de son orientation.
Tout en sachant que les coordonnées de M1’ et M2’ ne seront pas 100% exactes vu les tolérances du PCB mais surtout de la caméra.
Pour pimenter, en fait le rectangle rouge peut être en miroir selon Y, X ou les 2.
C’est pas très compliqué on soustrait de la largeur ou longueur, mais donc le point O1 est une origine qui n’est pas nécessairement à 0.
- alka
- Administrateur du site
- Messages : 3098
- Enregistré le : mer. 15 juil. 2015 15:18
- Localisation : 92
- Contact :
Re: le bar du forum
t'aime bien nous prendre la tete avec des problemes de trigo
ramenons ça a des problemes connus : rotation dans le plan + translation
La formule de rotation dans le plan d'un point (x,y) d'un angle "a" p/r à un point D(xd,yd) donne le point (x',y')
x'=(x-xd)*Cosinus(a) - (y-yd)*Sinus(a) + xd
y'=(x-xd)*Sinus(a) + (y-yd)*Cosinus(a) + yd
Tu connais l'angle "a" soit par mesure, soit en déduisant des coordonnées de M1' et M2'
Tournons dabord le pcb autour de M2, ce qui déplace C1 en Cr(xcr,ycr)
xCr=(xc1-xm2)*Cosinus(a) - (yc1-ym2)*Sinus(a) + xm2
yCr=(xc1-xm2)*Sinus(a) + (yc1-ym2)*Cosinus(a) + ym2
Puis on translate de M2 en M2'
xc1' = XCr + (xm2'-xm2)
yc1' = YCr + (yM2'-yM2)
du coup je sais pas si tu voulais C1' en fonction de C1 ou l'inverse...
psa: au cas où, dans ce calcul, tangeante(a) = opposé/adjacent = (yM1'-yM2')/(xM1'-xM2')
ps2 : pourquoi donc le point le plus proche de l'origine est nommé 2 et l'autre 1 ???

ramenons ça a des problemes connus : rotation dans le plan + translation
La formule de rotation dans le plan d'un point (x,y) d'un angle "a" p/r à un point D(xd,yd) donne le point (x',y')
x'=(x-xd)*Cosinus(a) - (y-yd)*Sinus(a) + xd
y'=(x-xd)*Sinus(a) + (y-yd)*Cosinus(a) + yd
Tu connais l'angle "a" soit par mesure, soit en déduisant des coordonnées de M1' et M2'
Tournons dabord le pcb autour de M2, ce qui déplace C1 en Cr(xcr,ycr)
xCr=(xc1-xm2)*Cosinus(a) - (yc1-ym2)*Sinus(a) + xm2
yCr=(xc1-xm2)*Sinus(a) + (yc1-ym2)*Cosinus(a) + ym2
Puis on translate de M2 en M2'
xc1' = XCr + (xm2'-xm2)
yc1' = YCr + (yM2'-yM2)
du coup je sais pas si tu voulais C1' en fonction de C1 ou l'inverse...
psa: au cas où, dans ce calcul, tangeante(a) = opposé/adjacent = (yM1'-yM2')/(xM1'-xM2')
ps2 : pourquoi donc le point le plus proche de l'origine est nommé 2 et l'autre 1 ???
- thierryvalk
- Administrateur du site
- Messages : 3771
- Enregistré le : jeu. 9 juil. 2015 20:08
- Localisation : Belgique
Re: le bar du forum
Merci pour ces réponses, c'est bien c1' que je cherche.
Justement, l'origine du PCB peut être n'importe quel coin. (puis pour le moment je n'utilise qu'une seule mire, M1' , le PCB étant considéré comme // à l'axe X ce qui donne une imprécision au système)
D'où ma question, ca marche à tous le coups ? Vu que tu prend comme axe de rotation M2. Mais M2 peut se trouver à n'importe quel endroit du PCB.
Et question 2, M1' et M2' sont mesurées, il y a les imprécisions. Est il possible de faire une "moyenne" des 2 pour limiter ces imprécisions ?
ps2 : pourquoi donc le point le plus proche de l'origine est nommé 2 et l'autre 1 ???
Justement, l'origine du PCB peut être n'importe quel coin. (puis pour le moment je n'utilise qu'une seule mire, M1' , le PCB étant considéré comme // à l'axe X ce qui donne une imprécision au système)
D'où ma question, ca marche à tous le coups ? Vu que tu prend comme axe de rotation M2. Mais M2 peut se trouver à n'importe quel endroit du PCB.
Et question 2, M1' et M2' sont mesurées, il y a les imprécisions. Est il possible de faire une "moyenne" des 2 pour limiter ces imprécisions ?
Re: le bar du forum
A mon avis, le plus simple pour avoir l'angle de rotation entre les deux pcbs, peu importe l'orientation du premier pcb, c'est de calculer l'angle entre les vecteurs M2M1 et M2'M1' en calculant le produit scalaire, mais ça ne résoudra pas le problème de la précision de la caméra..
- alka
- Administrateur du site
- Messages : 3098
- Enregistré le : mer. 15 juil. 2015 15:18
- Localisation : 92
- Contact :
Re: le bar du forum
thierryvalk a écrit :Merci pour ces réponses, c'est bien c1' que je cherche.ps2 : pourquoi donc le point le plus proche de l'origine est nommé 2 et l'autre 1 ???
Justement, l'origine du PCB peut être n'importe quel coin. (puis pour le moment je n'utilise qu'une seule mire, M1' , le PCB étant considéré comme // à l'axe X ce qui donne une imprécision au système)
D'où ma question, ca marche à tous le coups ? Vu que tu prend comme axe de rotation M2. Mais M2 peut se trouver à n'importe quel endroit du PCB.
Et question 2, M1' et M2' sont mesurées, il y a les imprécisions. Est il possible de faire une "moyenne" des 2 pour limiter ces imprécisions ?
Pour la numérotation, je parlais juste sur le dessin. En général, on numérote les points a partir de l'origine qui est en bas a gauche.
les formules sont indépendantes de la place respective de [M1, M2] et [M'1, M'2]. Pas de raison que ça marche pas.
En revanche tu parles de l'origine du pcb. Le point O1 n'intervient nulle part. Je suppose juste que tu sais distinguer M1 de M2. Si tu sais pas distinguer et que la caméra risque de prendre l'un pour l'autre c'est plus compliqué.
Pour la précision, je sais pas trop. Tout va etre imprécis du même % d'erreur.
- thierryvalk
- Administrateur du site
- Messages : 3771
- Enregistré le : jeu. 9 juil. 2015 20:08
- Localisation : Belgique
Re: le bar du forum
Oui, je sais distinguer M1 de M2, le dessin donne des erreurs bien plus grande qu'en réalité, de l'ordre de +- 2mm.
Vais coder et tester.
Vais coder et tester.
- alka
- Administrateur du site
- Messages : 3098
- Enregistré le : mer. 15 juil. 2015 15:18
- Localisation : 92
- Contact :
Re: le bar du forum
juste une chose : le calcul de l'angle "a" par arctan donne l'angle a 180° près.
si le pcb est complètement retourné, il va manquer un demi-tour.
si ((yM1'-yM2') < 0) alors ajouter 180° a l'angle trouvé par arctan.
A vérifier car pas sur si ça suffit a tous les coups.
si le pcb est complètement retourné, il va manquer un demi-tour.
si ((yM1'-yM2') < 0) alors ajouter 180° a l'angle trouvé par arctan.
A vérifier car pas sur si ça suffit a tous les coups.
- thierryvalk
- Administrateur du site
- Messages : 3771
- Enregistré le : jeu. 9 juil. 2015 20:08
- Localisation : Belgique
Re: le bar du forum
Ca fonctionne presque, en X semble ok mais pas en Y.
Mais, je vais revoir cela au calme car il y a un peu de travail de conversion.
En fait ma camera me donne M1'-M1, mais surtout que toute les données sont référencée à O1 et non 0,0.
Mais, je vais revoir cela au calme car il y a un peu de travail de conversion.
En fait ma camera me donne M1'-M1, mais surtout que toute les données sont référencée à O1 et non 0,0.
- alka
- Administrateur du site
- Messages : 3098
- Enregistré le : mer. 15 juil. 2015 15:18
- Localisation : 92
- Contact :
Re: le bar du forum
thierryvalk a écrit : toute les données sont référencée à O1 et non 0,0.
si tous les (x,y) sont p/r a 01, les formules rotation + translation restent bonnes et rien a changer.
(faut aussi revérifier mes calculs car les x,y,M,1,2 et ' s'emmelent un peu

le dessin donne des erreurs bien plus grande qu'en réalité, de l'ordre de +- 2mm
la correction d'angle sera de quelques degrés seulement si je comprend bien, ce qui évite de se poser la question sur le résultat de arctan
- thierryvalk
- Administrateur du site
- Messages : 3771
- Enregistré le : jeu. 9 juil. 2015 20:08
- Localisation : Belgique
Re: le bar du forum
(faut aussi revérifier mes calculs car les x,y,M,1,2 et ' s'emmelent un peu)
Oui, surtout que dans le soft les noms sont différents.
J'ai tout fait par rapport à l'origine du PCB et le rajoute à la fin.
Je pense avoir une erreur dans la calcul de l'angle.
Voici les données :
Code : Tout sélectionner
O 499 62.66
M1 102.62 66.5
M2 8.14 9.64
Miroir y 72
C1 71.03 53.42
M1' -0.34 -0.34
M2' -0.25 -0.16
A 0.02
Cr 70.87 19.63
Fin 569.63 82.13
- alka
- Administrateur du site
- Messages : 3098
- Enregistré le : mer. 15 juil. 2015 15:18
- Localisation : 92
- Contact :
Re: le bar du forum
ton M1' et M2' ont des coordonnées négatives tous les deux alors que M1 et M2 positifs
ca voudrait dire que la carte est tournée de plus de 180°. Etrange.
quelquechose m'échappe dans les coordonnées
on peut peut etre repartir de zero avec les données et memes noms que toi pour ne pas se tromper. Tu refais un dessin ?
ca voudrait dire que la carte est tournée de plus de 180°. Etrange.
quelquechose m'échappe dans les coordonnées
on peut peut etre repartir de zero avec les données et memes noms que toi pour ne pas se tromper. Tu refais un dessin ?
- thierryvalk
- Administrateur du site
- Messages : 3771
- Enregistré le : jeu. 9 juil. 2015 20:08
- Localisation : Belgique
Re: le bar du forum
Comme expliqué, M1' et M2' sont les erreurs de positions, pour les calculs j'y ai donc rajouté M1 et M2.
PC fermé, backup de fin d'année.
Le principe est bon, faut juste que je retranscrive le tout sur un papier avant de coder.
J'ai un doute quand aux degrés ou radians par contre.
Mais le principe est bon ça va fonctionner.
PC fermé, backup de fin d'année.
Le principe est bon, faut juste que je retranscrive le tout sur un papier avant de coder.
J'ai un doute quand aux degrés ou radians par contre.
Mais le principe est bon ça va fonctionner.

- alka
- Administrateur du site
- Messages : 3098
- Enregistré le : mer. 15 juil. 2015 15:18
- Localisation : 92
- Contact :
Re: le bar du forum
t'es prudent de faire un backup de fin d'année !
bonnes vacances, on reprend ça en 2016
bonnes vacances, on reprend ça en 2016

- alka
- Administrateur du site
- Messages : 3098
- Enregistré le : mer. 15 juil. 2015 15:18
- Localisation : 92
- Contact :
Re: le bar du forum
bon on va pas laisser un pb de trigo nous gacher le réveillon
en réfléchissant mieux, j'ai percuté que je m'ai gouré dans l'épisode précédent pour l'angle.
redessiné pour mieux voir

Pour passer du rectangle rouge au bleu, on décompose en :
- translate de M2' à M2 ce qui donne le rectangle pointillé (M1' translaté en M1", M2' translaté en M2"=M2)
- rotation de l'angle alpha autour de M2 ce qui ramène M1'' en M1 (et le rectangle pointillé sur le bleu).
Connaissant M1", on peut calculer l'angle de rotation alpha:
Gamma = arctan((y1"-y2)/(x1"-x2))
Beta = arctan((y1-y2)/(x1-x2))
Alpha = Gamma - Beta
les formules dans un tableur pour vérifier : ca marche


en réfléchissant mieux, j'ai percuté que je m'ai gouré dans l'épisode précédent pour l'angle.
redessiné pour mieux voir

Pour passer du rectangle rouge au bleu, on décompose en :
- translate de M2' à M2 ce qui donne le rectangle pointillé (M1' translaté en M1", M2' translaté en M2"=M2)
- rotation de l'angle alpha autour de M2 ce qui ramène M1'' en M1 (et le rectangle pointillé sur le bleu).
Connaissant M1", on peut calculer l'angle de rotation alpha:
Gamma = arctan((y1"-y2)/(x1"-x2))
Beta = arctan((y1-y2)/(x1-x2))
Alpha = Gamma - Beta
les formules dans un tableur pour vérifier : ca marche


- thierryvalk
- Administrateur du site
- Messages : 3771
- Enregistré le : jeu. 9 juil. 2015 20:08
- Localisation : Belgique
Re: le bar du forum
Super, et je pense avoir presque compris.
M1" est bien calculé selon la mesure de M2' ?
M1" est bien calculé selon la mesure de M2' ?
- alka
- Administrateur du site
- Messages : 3098
- Enregistré le : mer. 15 juil. 2015 15:18
- Localisation : 92
- Contact :
Re: le bar du forum
crotte le sujet a changé de page... pas facile de regarder l'explication et le dessin en meme temps
oui
pour imager : on translate dabord le rectangle rouge pour que M2' soit sur M2. Ca donne le rectangle rouge pointillés et amène M1' en M1".
Ensuite on fait tourner autour de M2 de l'angle aplha pour arriver sur le bleu.
La translation c'est facile, tu as les coordonnées de M2' et M2
Pour la rotation, la difficulté était de calculer l'angle correctement. M1" aide pour ça.
Il y a surement d'autres moyens de faire.
les formules de translation et rotation sont celles de la page précédente et sont ok. c'était l'angle qui n'était pas le bon.
thierryvalk a écrit :Super, et je pense avoir presque compris.
M1" est bien calculé selon la mesure de M2' ?
oui
pour imager : on translate dabord le rectangle rouge pour que M2' soit sur M2. Ca donne le rectangle rouge pointillés et amène M1' en M1".
Ensuite on fait tourner autour de M2 de l'angle aplha pour arriver sur le bleu.
La translation c'est facile, tu as les coordonnées de M2' et M2
Pour la rotation, la difficulté était de calculer l'angle correctement. M1" aide pour ça.
Il y a surement d'autres moyens de faire.
les formules de translation et rotation sont celles de la page précédente et sont ok. c'était l'angle qui n'était pas le bon.
- thierryvalk
- Administrateur du site
- Messages : 3771
- Enregistré le : jeu. 9 juil. 2015 20:08
- Localisation : Belgique
Re: le bar du forum
Ok, merci, je vais tester.
Retourner vers « DSPiy général »
Qui est en ligne
Utilisateurs parcourant ce forum : Bing [Bot] et 8 invités