Jump to content
  • Advertisement
Sign in to follow this  

Angle between two vectors - the law of cosines - derivation problem

This topic is 2808 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello math community,

i am studying for math at the moment and I am stuck a bit with the derivation of the law of cosines. First of all, sorry if i mention some things wrong, I study in german so it could be that we name some things different. :-)

My problem is that i don't know how to go on after a certain step. It would be cool if you could point me in the right direction .


Derive the law of cosines from a triangle made of 2 vectors

a = { ax, ay az }
b = { bx, by, bz }

c = b - a

All lengths are unknown and arbitrary.

So, we are looking for c, alpha, beta & gamma

alpha is between c and b
beta is between c and a
gamma is between a and b

the longest side is c which can be separated into p and q which will give me two right angled triangles.

From this information i can easily get

cos alpha = p / b -> p = b * cos alpha

cos beta = q / a -> q = a * cos beta

c = p + q

c = b * cos alpha + a * cos beta

so far so good ^-^

In the book is written that I shall do the same for the sides a and b. And that is were i get stuck. All the time i am calculating the same stuff on and on again but i am not able to go one step further. It seems that i am missing some variable or s.th.

Lets say the opposite leg of alpha is h

so b = sqrt ( p * p + h * h )

p = cos alpha * b

h = ??? <- how

i ??

The goal is to get

c*c = a*a + b*b - 2ab*cos gamma

Share this post

Link to post
Share on other sites
I'm not sure if this is correct, so please double-check:
b = sqrt(p*p + h*h)
b^2 = p^2 + h^2
b^2 - p^2 = h^2
h = sqrt(b^2 - p^2)
h = sqrt(b^2 - (cos(alpha) * b)^2)
h = b * sqrt(1 - (cos(alpha))^2)
h = b * sqrt((sin(alpha))^2)
h = b * sin(alpha)

Share this post

Link to post
Share on other sites
Since you are working with vectors perhaps you should take a look at using the dot product, i.e. a.b = |a||b| cos(theta)

Share this post

Link to post
Share on other sites
Hey , thanks for both answers..

I had as well the solution with h = b * sin alpha but the challenge is to do it without the sin :-)

Also no dot products ...:-(

But thanks a lot for your answers!!!!

Share this post

Link to post
Share on other sites
:-) yeah but sometimes its hard to filter out the right information.. i was a bit stuck in my head .. now its pretty easy of course.. i was confused because of the book..

thanks a lot though

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!