How to obtain the three angles (xy, yz, xz planes) of one vector relative to other vector?
    조회 수: 13 (최근 30일)
  
       이전 댓글 표시
    
I need to find the angles between two vectors (v1=p1-p2; v2=p2-p3) defined by three points (p1, p2 and p3). The problem is that I can only get one angle, and I need the three angles that represents the position of the second vector in respect to the first. In other words I need to calculate the angle in sagittal perspective, frontal perspective and tranverse perspective. These two vectors represents two segments of the body and I need to see the position of the distal segment relative to the proximal one.
This is a code that I have until now.
   p1=[-83.3958   12.4263   36.4348];
   p2=[-86.9626   21.0892   23.2980];
   p3=[ -274.7046   58.9844 -171.2332];
   v1   = p2-p1;
   v2   = p3-p2;
   angle = rad2deg(atan2(norm(cross(v1,v2)),dot(v1,v2)));
I see in other forums, but none have a explain how to calculate the three angles of one vector relative to a another. Thanks in advance.
댓글 수: 0
채택된 답변
  David Sanchez
      
 2013년 12월 19일
        I think you should project the vectors onto each plane consecutively and calculate then the angle formed by the projections:
   p1=[-83.3958   12.4263   36.4348];
   p2=[-86.9626   21.0892   23.2980];
   p3=[ -274.7046   58.9844 -171.2332];
   v1   = p2-p1;
   v2   = p3-p2;
   v_1 = [v1(1) v1(2)];
   v_2 = [v2(1) v2(2)];
   ang1 = acos(dot(v_1,v_2)/(norm(v_1)*norm(v_2)));
   v_1 = [v1(2) v1(3)];
   v_2 = [v2(2) v2(3)];
   ang2 = acos(dot(v_1,v_2)/(norm(v_1)*norm(v_2)));
   v_1 = [v1(1) v1(3)];
   v_2 = [v2(1) v1(3)];
   ang3 = acos(dot(v_1,v_2)/(norm(v_1)*norm(v_2)));
댓글 수: 0
추가 답변 (1개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기
			
	제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!