2012-07-29 29 views
2

我有一堆Line2D,我需要在单个图形上下文中执行一些计算。例如,我只需要看看哪些相交,哪些重叠等。图形永远不需要显示,只需在后台运行即可。对此最好的方法是什么?在Java中为背景计算创建图形上下文

回答

1

如果他们永远不需要显示,那么你不需要创建一个图形上下文。只需构造具有所需坐标的Line2D.Double(或Line2D.Float)对象,然后根据需要调用intersectsLine(Line2D)方法。

例如:

Line2D.Double firstLine = new Line2D.Double(0.0, 0.0, 1.0, 1.0); 
Line2D.Double secondLine = new Line2D.Double(0.5, 0.0, 0.5, 1.0); 
boolean intersectionOccurs = firstLine.intersectsLine(secondLine); 

如果我的心智图生成器正在哪个应该intersectionOccurs给予如此。

0

除非图形与某些显示在同一程序中的东西直接相关,否则这可能不是一个好方法。哪些绘图操作是神秘的,未记录的,并且在大多数情况下不能保证从一个环境到另一个环境保持一致 。

例如,数学上相交的两条线可能彼此穿过 而不共享任何像素。绘制三角形可产生几个不连贯的斑点,而不是一个连续的斑点。

+0

你可以在此扩大?我只在这里使用简单的2D几何体,所以我不明白两个Line2D如果相交或重叠可能不共享像素。 – Marty 2012-07-30 18:51:33

+0

单像素宽线形成阶梯图案。构建阶梯不共享像素的相交线很容易。在另一方面,如果线条“胖”而不是单个像素,那么数学上不相交的线可以共享一些像素。 – ddyer 2012-07-30 19:53:21