[問題]原點不再[0,0] 求夾角

看板MATLAB作者 (小散)時間14年前 (2011/12/08 19:29), 編輯推噓7(705)
留言12則, 5人參與, 最新討論串1/3 (看更多)
如題!! 我現在原點設在[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

12/08 19:31, , 1F
用兩向量內積求夾角
12/08 19:31, 1F

12/08 19:44, , 2F
不管原點不是在[0,0]也可以嗎
12/08 19:44, 2F
※ 編輯: geminicstar 來自: 118.170.214.206 (12/08 19:45)

12/08 21:53, , 3F
yes~ 向量只在乎大小方向 可寫個function
12/08 21:53, 3F

12/08 21:54, , 4F
theta=acosd(dot(A,B)/norm(A)/norm(B));
12/08 21:54, 4F

12/08 21:58, , 5F
用雙for 第一個for的向量A=(元素-85) 第二的B=(元素-58)
12/08 21:58, 5F

12/08 22:07, , 6F
拍謝 應該是A=一for元素-(85,58) B=二for元素-(85,58)
12/08 22:07, 6F

12/09 15:00, , 7F
把原點移到0不就好了...
12/09 15:00, 7F

12/09 19:18, , 8F
matlab (0,0)在左上角~還是有方法可以做到?
12/09 19:18, 8F

12/10 13:04, , 9F
平移
12/10 13:04, 9F

12/10 20:09, , 10F
平移會出現負呢~
12/10 20:09, 10F

12/11 00:14, , 11F
那是你算的問題~~先拿支筆算算看 弄清楚演算法吧
12/11 00:14, 11F

12/11 17:04, , 12F
不好意思!還是不太懂~可以跟我講比較詳細的描述嗎?
12/11 17:04, 12F
文章代碼(AID): #1Eu9-h9l (MATLAB)
文章代碼(AID): #1Eu9-h9l (MATLAB)