【发布时间】:2014-07-28 03:10:28
【问题描述】:
我定义了一个Polygon。我想将其他Lines 与该多边形的Edges (此处为白色矩形)相交并修剪列表,以便线条的端点限制在多边形的内部。
目前,我将每条青色线与多边形的边缘相交,这给了我交点。但问题是我不知道如何修剪它们。我知道我需要将每条相交线(青色线)的X1、Y1、X2和Y2更改为交点。但我不知道该怎么做。
让我这样解释。一条青色线与多边形的一条边相交,现在我需要将青色线的端点移动到交叉点以模拟修剪对吗? 哪个端点我需要移动?我有点迷路了。
public class Polygon
{
public List<Line>() Edges;
}
public class Line
{
public double X1;
public double X2;
public double Y1;
public double Y2;
}
var listOfIntersectingLines = new List<Line>() {L1, L2, ... };
var ListOfLinesLimitedToPolygon = ?
【问题讨论】:
-
多边形可以凹吗?
-
@Kicsi 不,它总是凸的。
-
如何计算交点?是语言特性吗?如果您尝试将一条线与一个部分相交,并且交点在该部分之外,该函数会返回什么?
-
不,我已经编写了自己的函数,我将每条线与多边形的边(线)相交。
-
最后一个问题:青色线的一端是否有可能在修剪之前位于多边形内部?
标签: algorithm geometry line polygon intersection