How does vrrotvec calculate rotation?
    9 views (last 30 days)
  
       Show older comments
    
    Michael McGeehan
 on 17 Nov 2021
  
    
    
    
    
    Edited: James Tursa
      
      
 on 12 May 2023
            Can anybody describe the math behind vrrotvec? The documentation for this function is very sparse and I would like to know how the rotational transformation is being calculated for my own confiendence in my code. 
Thanks!
0 Comments
Accepted Answer
  James Tursa
      
      
 on 17 Nov 2021
        It is a simple algorithm that uses the cross product for the axis (normalized), and the dot product is used to calculate the angle. I.e., vrrotvec(x,y) is equivalent to the following (but with error checking etc.)
rotation axis = cross(x,y)/norm(cross(x,y))
rotation angle = acos(dot(x,y)/(norm(x)*norm(y)))
then these are concatenated into a 4-element vector
3 Comments
  Vignesh Radhakrishnan
 on 21 Apr 2023
				Can I get the point y again from x using the inverse of the output of vrrotvec or vrrotvec2mat?
  James Tursa
      
      
 on 12 May 2023
				
      Edited: James Tursa
      
      
 on 12 May 2023
  
			Do you mean like this?
x = rand(3,1); x = x/norm(x)
y = rand(3,1); y = y/norm(y)
r = vrrotvec(x,y)
m = vrrotvec2mat(r)
m * x
norm(ans-y)
More Answers (0)
See Also
Categories
				Find more on Trigonometry in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

