Intersection moyenne de n lignes

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
Alexsky
Messages: 3
Enregistré le: 25 Nov 2013, 22:27

Intersection moyenne de n lignes

par Alexsky » 25 Nov 2013, 22:42

Bonjour à tous !

Dans le cadre de mon stage de R&D, je dois calculer le centre de rotation du genou sur le plateau tibial... En réalité le problème se décompose très simplement de manière mathématique : on admet l'existence de n couples de points dans le plan, le centre de rotation est tout simplement le point d'intersection de ces lignes.
Or, même si la théorie reste simple, la pratique est complètement différente : comment calculer un point "moyen" d'intersection ?

J'ai trouvé, en fouillant un peu la documentation sur ce problème, une formule assez jolie mais hélas sans démonstration... (Ref : The knee joint center of rotation is predominantly on the lateral side during normal walking -- Seungbum Koo, Thomas P. Andriacchi -- Journal of Biomechanics 41 (2008) p. 1269–1273)
Si on considère que chacune des droites s'écrivent dans le plan cartésien ai*x+bi*y+ci=0 (pour i allant de 1 à n), on définit les matrices A et C comme ceci :

A = a1 b1 C = c1
a2 b2 c2
... .... ....
an b2 cn

Alors X, la matrice colonne des coordonnées du centre de rotation est égale à

X = (A^t*A)^-1 * (A^t * C)

J'ai alors vérifié sur Matlab avec des données que l'on m'a fournit... Pas très concluant...
J'ai ensuite décidé de calculer une bête moyenne des points d'intersections, mais deux par deux (càd ligne 1 avec ligne 2, ligne 2 avec ligne 3 etc.). Pas top top...

Pouvez-vous me donner quelques pistes afin de trouver un calcul plus efficace ?

Merci beaucoup !


Alexsky



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

par fatal_error » 25 Nov 2013, 22:57

slt,

j'ai pas lu ton article mais si tu dis
Or, même si la théorie reste simple, la pratique est complètement différente : comment calculer un point "moyen" d'intersection ?


J'ai envie de décomposer le problème comme suit:
Chacun de tes couples donne une droite.
pour n couples, tu as n droite.
Code: Tout sélectionner
nombrePointsSomme=0
sommePointMilieu=[0 0 0]
pour i=1 à n
 premiereDroite=droites(i)
 pour j=i+1 à n
   secondeDroite=droites(j)
   pointMilieu = calculerPointMillieu(premiereDroite,secondeDroite)
   sommePointMilieu+=pointMilieu
   nombrePointsSommes++
 finpour
finpour
pointMilieuMoyen=sommePointMilieu/nombrePointsSomme;


avec calculerPointMilieu(premiereDroite,secondeDroite) qui est le plus dur du boulot à faire...
trouver le point Pp de premiereDroite et Sp de secondeDroite, telle que la distance PpSp soit la plus petite parmi n'importe quel autre couple de point (P_i,S_i)

pour ce dernier calcul, je proposerais de considérer l'eq paramétrée des droites.
P(t_1): A+vt_1 (P pour premiere droite)
Q(t_2): B+ut_2 (Q pour seconde droite)
et chercher
la vie est une fête :)

Avatar de l’utilisateur
Ben314
Le Ben
Messages: 21709
Enregistré le: 11 Nov 2009, 21:53

par Ben314 » 25 Nov 2013, 23:30

Bonsoir,
Perso, ce qui me vient à l'esprit, c'est de chercher le point M le "plus proche possible" de toutes les droites.
Et, comme très souvent, vu que la formule donnant la distance d'un point à une droite contient une valeur absolue (chiante à manipuler), je ne prendrait pas les distance de M aux différentes droites, mais le carré de cette distance (pas de valeur absolu).

Donc en résumé, je chercherais le point M:(x,y) qui minimise la somme des carrés des distance de M aux différentes droites, c'est à dire qui minimise
Si on développe les carrés, ça fait un truc du style et pour le minimiser, il faut rendre les dérivées en x et en y nulles (ce qui fait un petit système de 2 équations à 2 inconnues)
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 12:39

par Dlzlogic » 26 Nov 2013, 00:23

Bonsoir Ben314,
Là on est d'accord.

Alexsky
Messages: 3
Enregistré le: 25 Nov 2013, 22:27

par Alexsky » 26 Nov 2013, 00:43

Merci beaucoup à tous !

Je vais essayer de programmer vos deux solutions et les comparer avec mes données.

Encore merci !

Alexsky

Avatar de l’utilisateur
Ben314
Le Ben
Messages: 21709
Enregistré le: 11 Nov 2009, 21:53

par Ben314 » 26 Nov 2013, 00:47

P.S. En regardant d'un peu plus prés ta formule X = (A^t*A)^-1 * (A^t * C)
ben il me semble bien que c'est justement ça qui va minimiser la somme des carrés a condition d'avoir commencé par diviser les ai, bi et ci par racines(ai²+bi²) pour "homogénéiser" les équations.

Tu as bien divisé les coeffs. de tes équations par les racine(ai²+bi²) lors de ton test avec mathlab ?
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 12:39

par Dlzlogic » 26 Nov 2013, 11:43

Bonjour,
En relisant l'énoncé, il me semble plutôt que le problème consiste à trouver le centre des cercles concentriques tangents à vos droites.
Donc, à mon avis, il y a 4 inconnues R1, R2, XC, YC.

Alexsky
Messages: 3
Enregistré le: 25 Nov 2013, 22:27

par Alexsky » 26 Nov 2013, 16:03

Bonjour à tous !

J'ai eu mon lab meeting ce matin, a priori la solution proposée par Ben314 semble être plus accessible en terme de faisabilité (je dois réaliser le code assez rapidement...).

Je dois donc développer ce calcul de centre de rotation sur JointView, logiciel permettant d'avoir des données cinématiques et cinétiques de l'articulation du genou (on utilise enfaite différentes images aux rayons X de patients ayant une prothèse totale du genou à différents angles de flexion, puis on calibre une modélisation de prothèse afin d'avoir ces données). Ce logiciel se base sur un précédent logiciel écrit en PV-Wave (kneetrack) qui permet justement de calculer ce COR. Après étude du code, il s'avère qu'il utilise une formule plutôt étrange (une sorte de distance minimale). Mon équipe m'a suggéré de contacter directement un des développeurs du logiciel (Scott Banks, Orthopaedic Research Laboratory, Good Samaritan Medical Center, Florida).

Je vous tiens au courant sur l'avancé de ce projet.

Merci à tous encore une fois

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 28 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