Create new vector 10 degrees away from other vector

Hi! I am trying to create an algoritm that calculates a new vector c when the angle between vector a and b is more than 10 degrees. I want the vector c to be exactly 10 degrees away from vector a. Any ideas how to script this?

local a =,lastTarget).LookVector
local b =,target).LookVector
local angle = math.acos(a:Dot(b)/(a.Magnitude*b.Magnitude))
if math.deg(angle) > 10 then 
	local c = -- ???


Also, when using math.acos() I only get positive angles. How would I obtain negative angles as well? :slight_smile:

If you take the cross product of a and b, you will get a vector which you can then rotate a about (by 10 degrees).

1 Like

You mean to rotate the cross product 10 degrees relative to a? Could you show me how to do that? :slight_smile:

No, a:Cross(b) will give you the vector to rotate a about. You can Rodrigues’ rotation formula to rotate the vector a about the vector a:Cross(b). (Following the variable names: e = a:Cross(b).Unit, v = a)

1 Like

I wrote up an example here: local v1 =, 3, 5)local v2 =, 3, 5)local e = - where the red part represents v1 and the green part represents v2


Thank you so much for spending so much time on this! It took me some time to understand it, but it solved my problem! :slight_smile: