Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB:确定多边形是否相交的方法_Matlab_Intersection - Fatal编程技术网

MATLAB:确定多边形是否相交的方法

MATLAB:确定多边形是否相交的方法,matlab,intersection,Matlab,Intersection,这是我确定多边形是否相交的方法 找到多边形每一侧的方程,同时求解另一侧的方程,以确定它们在何处相交,在何处相交 %m=[vector of gradients] c=[vector of y intersects]. y = (m_n)x + (c_n) x = (y-c) ./ (m-2) %(don't include first value for m and c) y = m.*x + c (我想你需要一个循环?) 然后,如果它们相交,这将被输入到一个矩阵中 intersects

这是我确定多边形是否相交的方法

  • 找到多边形每一侧的方程,同时求解另一侧的方程,以确定它们在何处相交,在何处相交

    %m=[vector of gradients] c=[vector of y intersects]. 
    y = (m_n)x + (c_n)
    x = (y-c) ./ (m-2) %(don't include first value for m and c)
    y = m.*x + c
    
  • (我想你需要一个循环?)

  • 然后,如果它们相交,这将被输入到一个矩阵中

    intersects = [x_1 y_1;...;x_n y_n] %(x_1 = 1st insect on x plane)
    
  • 如果与包含的值相交

    disp('This polygon is complex')
    
  • 然后将多边形分解为后续部分,并使用新点计算每个部分的面积

  • 有人能告诉我这是否合理吗

    这是否有效:

    for i=1:length(m)
        x{i} = (m(i)- c)./ (m-c(i));
        y{i} = m.*x{i}+c;
    end
    

    为什么不使用
    polyxpoly
    ?我需要证明我已经开发出了自己的方法。你的方法听起来很合理,但有几个警告。1) 您可能只需要对照不是相邻边的边检查每条边(平行相邻边是一种奇怪的特例)。2) 所有非平行线相交。确保交点实际上在边上,而不是在无限直线上的其他地方。如果我有一个梯度向量:m=[]和一个y截距向量:c=[]。那么,我将如何同时解决彼此之间的矛盾呢。在底部检查我的问题@道格,我想你差不多明白了。看起来您应该亲自尝试,并在此时调试自己的代码。