2

我有一个 CGPoints 数组(带有两个浮点数的基本结构:x 和 y)。我想使用 OpenGL ES 使用这些点绘制纹理曲线。我只需要两点就可以做到这一点,但是当我需要从几个点划出一条线时会变得更加困难。

目前我水平画一条线,根据给定的点计算它的角度,然后旋转它。我不认为对曲线中的所有线都这样做是一个好主意。可能有更快的方法。

我在想我可以一次“放大”或“缩小”所有点以制作具有某种宽度的曲线。

4

1 回答 1

1

我不肯定你想要完成什么,但考虑一下:

基于点的有序列表,您可以使用这些点绘制多段线。如果您想要一条带有 2D 纹理的折线,您可以绘制一系列四边形(当然,每个四边形使用两个三角形)。您可以使用类似于 catmul-rom 样条生成的想法来生成这些四边形。

考虑一系列点 p[i-1]、p[i]、p[i+1]。现在,对于每个 i,您可以沿着垂直于连接 p[i-1] 和 p[i+1] 的线找到两个点,每个点距 p[i] 一个 epsilon 距离。您可以通过各种方式确定为端点生成的两个点,例如使用从 p[0] 到 p[1] 的直线的垂线。

我不确定这是否会比您的方法更快,但您应该缓存结果。如果您计划每帧都这样做,则可能需要另一种类型的解决方案来解决您的问题。

于 2009-12-30T06:43:54.413 回答