Ich habe einen Matlab-Code geschrieben, der es erlaubt zu definieren, welche Seite eines Linienpunktes ist. Es funktioniert in vielen Fällen gut, aber ich habe einen Spezialfall gefunden, wenn es komisch funktioniert. Hier ist der Code:Definieren der Seite eines Linienpunkts. Sonderfall
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)
Hier ist das Ergebnis:
Rote Farbe ist für 'linke' Position 'Magenta' Farbe ist für die rechte Position, 'schwarz' Farbe ist für die Position auf der Linie. Sie können die blaue Linie sowie die relative Position sehen, die ich zu schätzen versuche. Wie Sie sehen können, wird das Ergebnis wie für eine andere Linie gezeichnet.
Was ist los?
Wenn Sie den Code Implementierung Ich sah zum Beispiel hier: