I have a polygon like this:

enter image description here

I basically want to find the angles $\alpha$, inside the polygon, between the vectors. I'm using the determinant to calculate the angle alpha:

$det(\vec V2, \vec V2 ) = ||V2|| * ||V1|| * \sin \theta $

So $\theta$ will be the arcsin. But my problem is that in this particular case, the angle that is calculated is not $\alpha$ but it's 180- $\alpha$ and I don't understand why.

This is my code in C:

TSMV_Point2D vecteur1, vecteur2;
vecteur1.x = p1.x - pC.x;
vecteur1.y = p1.y - pC.y;
vecteur2.x = p2.x - pC.x;
vecteur2.y = p2.y - pC.y;

float determinant = vecteur2.x * vecteur1.y - (vecteur1.x * vecteur2.y);
float normeVec1 = sqrt(vecteur1.x * vecteur1.x + vecteur1.y * vecteur1.y);
float normeVec2 = sqrt(vecteur2.x * vecteur2.x + vecteur2.y * vecteur2.y);

float division = determinant / (normeVec1 * normeVec2);
float angle = asin(division) * 180 / M_PI;

Can someone help me understand?

  • $\begingroup$ I put the "Hello" in front of the paragraph but whenever I edit it, my Hello keeps been deleted. $\endgroup$ – user3314570 Jun 19 '14 at 11:46

Because the formula you have is not correct. The dot product of two vectors equals the product of the norms of the vectors times cosine of the angle.

$$\mathbf{V_1} \cdot \mathbf{V_2}=||\mathbf{V_1}||\cdot ||\mathbf{V_2}|| \cdot \cos\theta$$

  • 1
    $\begingroup$ I am not using the dot product but the determinant. But I understood why it's not the right angle, it's because the arcsin function is only betwen $-\pi/2 \pi/2$ $\endgroup$ – user3314570 Jun 19 '14 at 13:07
  • $\begingroup$ That's why people usually use dot product to calculate the angle between two vectors. Arccos gives value between $0$ and $\pi$. $\endgroup$ – Badoe Jun 19 '14 at 13:14
  • $\begingroup$ Also, two vectors with angle $\alpha$ and two vectors with angle $\pi-\alpha$ will give you the same sine value. How do you determine if the angle is $\alpha$ or $\pi - \alpha$? $\endgroup$ – Badoe Jun 19 '14 at 13:23

Well, usually angles between two vectors are considered to be lying in $[0,\pi]$ and so choosing a formula with $\arccos$ in it is a better choice, as @Badoe mentioned.

However, in your particular case, keep in mind that $\arcsin$ is defined over $\left[-\frac{\pi}{2},\frac{\pi}{2}\right]$, so, it is very possible that the angle you would like to get is actually larger than $90^\circ$ and, hence, $\arcsin$ moves is back into $\left[-\frac{\pi}{2},\frac{\pi}{2}\right]$, resulting to giving you the complementary angle of what you've been looking for.

But, the above is just a speculation, it would be more helpful if someone could enlight us on how is $\arcsin$ implemented in $C$. Till then, you can always use the formula: $$\theta=\arccos\frac{\vec{v}\cdot\vec{u}}{\lVert \vec{v}\rVert\lVert \vec{u}\rVert}$$


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.