定义线点的哪一侧。特例

时间:2016-03-28 04:28:08

标签: matlab math position line

我编写了一个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)

结果如下:

Result of the program

红色用于“左”'位置,'洋红色'颜色适合正确的位置,黑色'颜色是在线上的位置。您可以看到蓝线以及我想要估算的相对位置。正如您所看到的,结果被绘制为另一条线。

出了什么问题?

实现我看过的代码时,例如:

  1. Calculate on which side of a line a point is

  2. How to tell whether a point is to the right or left side of a line

1 个答案:

答案 0 :(得分:1)

你的公式有误:

polylineY(2) - polylineX(1)

应该是

polylineY(2) - polylineY(1)

计算正确的行列式。