2016-09-15 2 views
0

Je veux déterminer si un point d'un autre point sur un cercle dans la section de gauche ou dans la section de droite. (left & juste juste une question d'interprétation de signe). Pour cela j'ai calculé le produit croisé de ces deux points pour créer le vecteur normal. Donc le problème auquel je suis confronté est de savoir comment je peux interpréter la normale comme un scalaire qui a un signe qui indique si c'est dans la moitié droite ou gauche du cercle.déterminer si un point est à gauche ou à droite d'un autre point sur un cercle dans l'espace 3D?

J'ai créé un gif comme pour l'illustration (C » est juste le point animé C):

enter image description here

Mon idée était d'ajouter toutes les valeurs dans le vecteur v Par exemple:.

v = (0.16, 0.1, -0.2) 
vSum = v.x + v.y + v.z = 0.06 

result = sign(vSum) = 1 

o = (-0.16, -0.1, 0.2) 
oSum = o.x + o.y + o.z = -0.06 

result = sign(oSum) = -1 

Malheureusement, cela ne fonctionne que si le cercle est statique et ne tourne pas. Si la rotation du signe change, mon résultat est retourné, ce qui conduit à des sites gauche et droit inversés. Et le produit scalaire ne donne que des valeurs positives, mais c'est une valeur qui ne change pas pendant la rotation du cercle. Peut-être que c'est quelque chose qui peut m'aider?

+0

Commençons par une question: Qu'est-ce que exactement est la gauche et la moitié droite du cercle? Vous dites que la gauche et la droite sont l'interprétation des signes et ensuite vous vous interrogez sur la rotation. Alors, pouvez-vous définir gauche et droite en termes mathématiques? – Aziuth

+0

avec l'interprétation de signe que je veux dire comme - = gauche et + = droite ne corrompt pas la grille ou le système de coordonnées. – Sens4

Répondre

0

Je suppose, votre produit croix est la suivante:

c = cross(p - circle center, reference - circle center) 

Ensuite, vous pouvez prendre le produit scalaire avec le cercle normal pour obtenir le signe:

sign(dot(c, circle normal))