在为Android开发某种“页面卷曲”实现时,我正在解决这类问题。虽然代码不一定(我稍后会添加链接),因为可以想象的可读,这里简要介绍了我开始的想法。这可能延伸到路径,但我只处理一条线。
- 您有一组呈现多边形的顶点。
- 给定一条切割线,你有一个斜坡。
- 选择该剪切线上的任意点。
- 基于信息2.和3.翻译原始顶点,使您从该线中选择的点成为原点。然后旋转顶点,使切割线变为垂直。如果您更喜欢在y轴上进行测试,则为横向。
- 在上一次转换之后,您有一个设置,其中您的原始剪切线在x = 0时为y轴。
- 此时计算交叉点相对容易,因为你要做的就是检查创建一条线的两个顶点是否在y轴的两侧。即,另一个具有正x,另一个具有负一个。如果该线穿过x = 0,则计算精确点并不是很困难。它有x = 0,你必须找到y。
- 对您之前,之后做过的交叉点进行精确变换,并且在原始多边形上有一个切割点。
醇>
对于多边形计算交叉点的方法肯定比较复杂,但鉴于我正在使用的项目的性质 - 我真的很喜欢有一个更简化的环境。还有一点点盐,因为我没有在任何地方找到这个,但更多的是我自己想出来的想法。
And the code as promised