1
私はMatlabコードを書いており、ラインポイントのどちら側にあるかを定義することができます。それは多くの場合、正常に動作しますが、私はそれが奇妙に動作する1つの特別なケースを見つけました。ここでラインポイントのどの辺を定義するか。特別なケース
clear all
close all
clc
polylineX = [9 15];
polylineY = [7 6];
hold on
for i = 1:27
for j = 1:32
point(1) = j-10;
point(2) = i-101;
pos = sign((polylineX(2) - polylineX(1)) * (point(2) - polylineY(1)) -...
(polylineY(2) - polylineX(1)) * (point(1) - polylineX(1)));
if pos == 1
plot(point(1),point(2),'r.','MarkerSize',5)
elseif pos == -1
plot(point(1),point(2),'m.','MarkerSize',5)
elseif pos == 0
plot(point(1),point(2),'k.','MarkerSize',5)
end;
pause(0.00000001);
end;
end;
plot(polylineX,polylineY)
結果である:ここでコードが
赤色が「左」の位置、のためのものである「マゼンタ」色が「黒」色のためのものである、右の位置のためのものですライン上の位置。あなたは、私が見積もろうとしている相対的な位置と青い線を見ることができます。あなたが見ることができるように、結果は別の行のように描かれます。
どういうところが間違っていますか?
ここでは、例えば、私は見てコードを実装: