Bagaimana cara memeriksa (dalam MATLAB) apakah dua segmen garis berhingga, L1 (digambar antara titik (x1,y1) dan (x2,y2)) dan L2 (digambar antara titik (x3,y3) dan (x4,y4)), saling bersinggungan? Harap diperhatikan bahwa titik potong tidak diperlukan, Hanya jawaban boolean (ya atau tidak).
Bagaimana cara memeriksa dua garis berpotongan atau tidak?
comment
Bagaimana poin-poin tersebut direpresentasikan? Apakah diberikan sebagai x,y?
- person David.Jones   schedule 13.01.2015
comment
@rayryeng: Pertanyaan di atas (sudah terjawab) adalah mencari titik potong (x,y) dua garis. Tapi pertanyaan saya adalah memeriksa apakah dua garis berpotongan atau tidak (jawaban boolean saja ya atau tidak). Saya mencoba yang terbaik pada S.O., tetapi tidak menemukan duplikatnya? Harap hapus tag duplikat, jika Anda setuju.
- person erbal   schedule 14.01.2015
comment
@DavidJones: Baru saja mengedit pertanyaannya.
- person erbal   schedule 14.01.2015
comment
@ user11659 - Saya setuju juga. Saya salah menafsirkan pertanyaan Anda. Telah dibuka kembali!
- person rayryeng   schedule 15.01.2015
comment
@ user11659 - Periksa postingan ini: blogs.mathworks.com/loren/2011/08/29/intersecting-lines/
- person rayryeng   schedule 15.01.2015
comment
@rayryeng: Ini bagus. Namun menemukan jawabannya di tempat lain.
- person erbal   schedule 16.01.2015
Jawaban (1)
Saya menemukan jawaban (kedua terakhir) oleh Roger Stafford di MatlabCentral. Ini dia:
Dua ruas garis L1 dan L2 akan berpotongan jika dan hanya jika det([1,1,1;x1,x2,x3;y1,y2,y3])*det([1,1,1;x1,x2,x4 ;y1,y2,y4]) ‹= 0 dan det([1,1,1;x1,x3,x4;y1,y3,y4])*det([1,1,1;x2,x3,x4; y2,y3,y4]) ‹= 0, pengkodean MATLAB adalah:
x=[x1 x2 x3 x4];
y=[y1 y2 y3 y4];
dt1=det([1,1,1;x(1),x(2),x(3);y(1),y(2),y(3)])*det([1,1,1;x(1),x(2),x(4);y(1),y(2),y(4)]);
dt2=det([1,1,1;x(1),x(3),x(4);y(1),y(3),y(4)])*det([1,1,1;x(2),x(3),x(4);y(2),y(3),y(4)]);
if(dt1<=0 & dt2<=0)
intrsct=1 %If lines intesect
else
intrsct=0
end
person
erbal
schedule
16.01.2015