iphone - 将点数组转换为三角形带的快速方法?

标签 iphone objective-c opengl line points

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

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

我想我可以一次“放大”或“收缩”所有点以形成具有某种宽度的曲线。

最佳答案

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

基于点的有序列表,您可以使用这些点绘制折线。如果您想要一 strip 有 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] 的直线的垂线。

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

关于iphone - 将点数组转换为三角形带的快速方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1967812/

相关文章:

opengl - 在 GLSL 片段着色器中,如何访问特定 mipmap 级别的 texel?

ios - iOS 支持哪些 Microsoft SharePoint 身份验证模式

iphone - 2 个 GPS 坐标之间的角度

objective-c - subview 和按钮

ios - 迁移,但仍然在 'RLMException' 上崩溃,原因 : 'Migration is required

ios - Xcode AVCapturesession 扫描特定帧中的条码(rectOfInterest 不工作)

c++ - 如果没有显卡,谁来运行 OpenGL 着色器

c++ - 渲染调用对性能的影响

iphone - 模仿照片应用程序的平移行为(速度)

objective-c - 如何使用 NSLog 从 NSManagedObject 打印 NSInteger 值