在Java中,如何将Line2D与区域相交?

在Java中,如何将Line2D与区域相交?,java,geometry,line,shape,Java,Geometry,Line,Shape,我有一个Line2D和一个Area对象,我想要相交的Line2D。结果也可以是通用路径。我该怎么做?您可以在类区域中使用该方法。Line2D可以被矩形2D代替。第二次机会: 构建line2D,它是一个形状 在其周围构建一个区域(使用新区域(line2d)) 取第一个区域,用从线路上获得的第二个区域呼叫 您的第一个区域现在是第一个区域的交点 取最左边、最上面、最下面、最右边的坐标 将它们转换为line2d 给您。选项1,用三角形近似线条2D: Polygon Polygon=新多边形(新int

我有一个Line2D和一个Area对象,我想要相交的Line2D。结果也可以是通用路径。我该怎么做?

您可以在类区域中使用该方法。Line2D可以被矩形2D代替。

第二次机会:

  • 构建line2D,它是一个形状
  • 在其周围构建一个区域(使用新区域(line2d))
  • 取第一个区域,用从线路上获得的第二个区域呼叫
  • 您的第一个区域现在是第一个区域的交点
  • 取最左边、最上面、最下面、最右边的坐标
  • 将它们转换为line2d

给您。

选项1,用三角形近似线条2D:

Polygon Polygon=新多边形(新int[]{x1,x2,x2},新int[]{y1,y2+e,y2-e},3);
面积三角形=新面积(多边形);
三角形。相交(面积);//射线与面积的交点
回来!triangle.isEmpty();//如果相交,则返回true
选项2,改为使用几何体类

private final GeometryFactory GeometryFactory=new GeometryFactory();
专用ShapeReader ShapeReader=新ShapeReader(geometryFactory);
路径2d.Double thePath=新路径2d.Double(区域);
Geometry=shapeReader.read(thePath.getPathIterator(null));
坐标[]坐标=新坐标[]{新坐标(x1,y1),新坐标(x2,y2)};
LineString centerRay=geometryFactory.createLineString(坐标);
返回几何体。相交(中心线);//如果相交,则返回true

?那怎么办?我可以想出一堆不起作用的例子。创建一个与Line2D尺寸相同的矩形2D。创建您的区域,调用与rectanlg2d相交。例如:旋转线如何?此方法仅返回布尔值。如果您的意思是“然后相交”(区域rhs),则您将收到一个区域。但这是一个区域,而不是一条线或一条路径。但我需要一个线路的起点和终点。哦。。所以你会从线性插值中得到一些乐趣。面积是否至少为正方形?新建面积(line2d)创建一个空白区域。但是你的回答给了我一些提示。我会测试它。如果你得到了它,我很想知道答案。我会尝试在JavaAPI中找到新的区域构造函数。它在哪里?没有这样的构造函数!