【问题标题】:Defining which side of a line point is. Special case [closed]定义线点的哪一侧。特殊情况[关闭]
【发布时间】:2016-03-28 04:28:07
【问题描述】:

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

【问题讨论】:

    标签: matlab math position line


    【解决方案1】:

    你的公式有误:

    polylineY(2) - polylineX(1)
    

    应该是

    polylineY(2) - polylineY(1)
    

    计算正确的行列式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-15
      • 1970-01-01
      • 1970-01-01
      • 2016-07-16
      • 1970-01-01
      • 2016-10-23
      • 2014-11-03
      • 2012-12-17
      相关资源
      最近更新 更多