作者geminicstar (小散)
看板MATLAB
标题[问题]原点不再[0,0] 求夹角
时间Thu Dec 8 19:29:43 2011
如题!!
我现在原点设在[85,58]
我想取的二维中的任两点夹角要怎样求呢??
我想了好几天一直弄不出来XD
对了~矩阵大小为170*116
[补充] 我後来这样写~请大家帮我看这样是对的吗?
imgsize1=size(re);
for i5=1:imgsize1(1)
for j5=1:imgsize1(2)
if i5<=85
a1=(i5.^2+85.^2).^(1/2);
b1=(j5.^2+116.^2).^(1/2);
ab1=(i5.*j5)+(85.*116);
c1=ab1/a1*b1;
cita1(i5,j5)=acos(c1);
if (0.7071 <=cita1(i5,j5)<= 0.0174)
re1(i5,j5)=1;
elseif (1 <=cita1(i5,j5)<= 0.7193)
re1(i5,j5)=2;
elseif (0.7071 <=cita1(i5,j5)<= 1)
re1(i5,j5)=3;
elseif (0 <=cita1(i5,j5)<= 0.6946)
re1(i5,j5)=4;
end
else % ------ 上下区隔 ------
a2=(i5.^2+86.^2).^(1/2);
b2=(j5.^2+116.^2).^(1/2);
ab2=(i5.*j5)+(86.*116);
c2=ab2/a2*b2;
cita2(i5,j5)=acos(c2);
if (-0.7071 <=cita2(i5,j5)<= -0.0174)
re1(i5,j5)=5;
elseif (-1 <=cita2(i5,j5)<= -0.7193)
re1(i5,j5)=6;
elseif (-0.7071 <=cita2(i5,j5)<= -0.9998)
re1(i5,j5)=7;
elseif (0 <=cita2(i5,j5)<= -0.6946)
re1(i5,j5)=8;
end
end
end
end
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.170.214.206
1F:推 Gwaewluin:用两向量内积求夹角 12/08 19:31
2F:→ geminicstar:不管原点不是在[0,0]也可以吗 12/08 19:44
※ 编辑: geminicstar 来自: 118.170.214.206 (12/08 19:45)
3F:推 evovss48:yes~ 向量只在乎大小方向 可写个function 12/08 21:53
4F:→ evovss48:theta=acosd(dot(A,B)/norm(A)/norm(B)); 12/08 21:54
5F:推 evovss48:用双for 第一个for的向量A=(元素-85) 第二的B=(元素-58) 12/08 21:58
6F:推 evovss48:拍谢 应该是A=一for元素-(85,58) B=二for元素-(85,58) 12/08 22:07
7F:推 jatj:把原点移到0不就好了... 12/09 15:00
8F:→ geminicstar:matlab (0,0)在左上角~还是有方法可以做到? 12/09 19:18
9F:推 alamabarry:平移 12/10 13:04
10F:→ geminicstar:平移会出现负呢~ 12/10 20:09
11F:推 alamabarry:那是你算的问题~~先拿支笔算算看 弄清楚演算法吧 12/11 00:14
12F:→ geminicstar:不好意思!还是不太懂~可以跟我讲比较详细的描述吗? 12/11 17:04