用Java中的一条线切割多边形

时间:2011-05-07 16:23:16

标签: java geometry

你能用Java共享一些代码来用线或路径剪切多边形吗?

1 个答案:

答案 0 :(得分:1)

在为Android开发某种“页面卷曲”实现时,我正在解决这类问题。虽然代码不一定(我稍后会添加链接),因为可以想象的可读,这里简要介绍了我开始的想法。这可能延伸到路径,但我只处理一条线。

  1. 您有一组呈现多边形的顶点。
  2. 给定一条切割线,你有一个斜坡。
  3. 选择该剪切线上的任意点。
  4. 基于信息2.和3.翻译原始顶点,使您从该线中选择的点成为原点。然后旋转顶点,使切割线变为垂直。如果您更喜欢在y轴上进行测试,则为横向。
  5. 在上一次转换之后,您有一个设置,其中您的原始剪切线在x = 0时为y轴。
  6. 此时计算交叉点相对容易,因为你要做的就是检查创建一条线的两个顶点是否在y轴的两侧。即,另一个具有正x,另一个具有负一个。如果该线穿过x = 0,则计算精确点并不是很困难。它有x = 0,你必须找到y。
  7. 对您之前,之后做过的交叉点进行精确变换,并且在原始多边形上有一个切割点。
  8. 对于多边形计算交叉点的方法肯定比较复杂,但鉴于我正在使用的项目的性质 - 我真的很喜欢有一个更简化的环境。还有一点点盐,因为我没有在任何地方找到这个,但更多的是我自己想出来的想法。

    And the code as promised