我编写了一个Matlab代码,它允许定义直线点的哪一边。它在很多情况下都能正常工作,但我发现有一种特殊情况是很奇怪的。以下是代码:
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)结果如下:
红色代表“左”位置,“洋红色”代表右边位置,“黑色”代表线上的位置。你可以看到蓝线以及相对位置,我正在试图估计。正如您所看到的,结果是为另一条线绘制的。
怎么了?
例如,在实现我所查看的代码时,如下所示:
发布于 2016-03-28 04:49:34
你的公式有个错误:
polylineY(2) - polylineX(1)应该是
polylineY(2) - polylineY(1)计算正确的行列式。
https://stackoverflow.com/questions/36255979
复制相似问题