
贝塞尔
供CET开发者使用。这是贝塞尔曲线(单段及多段贝塞尔曲线)的实现。
查看大图我终于把我的贝塞尔曲线实现移植到了Lua 这里的内容足够多,我觉得比起在cet-snippets频道上传一个压缩文件,不如制作一个小型演示模组更好。
日志查看器在这里
贝塞尔曲线的实现其实很简单,
但如果你想将多个贝塞尔曲线段连接起来,
就会变得更加复杂。
对于一条贝塞尔曲线,你有两个端点和N个控制点(通常为一或两个)。 曲线会穿过端点,但绝不会触及控制点(除非所有点都在同一直线上,但那样的话还有什么意义呢)
如果你有两个贝塞尔曲线段,当控制点与该中间端点共线时,可以使路径在中间端点处平滑过渡
其中一个辅助函数是根据端点数组和百分比(用于控制曲率)返回贝塞尔曲线段的数组。
还有一些辅助函数,可以沿着路径(路径可以是开放的或闭合的)按固定的百分比间隔返回一系列采样点
v5: 有一个边缘情况最终被执行了,它使用了C#版本的变量名而非Lua版本的名称 v4: 函数调用中的参数被交换了(count, segments)。 这种调用通常不会发生,属于那些边缘情况的清理工作之一。 v3: 有一个名为Quaternion_FromAxisRadians的函数,它是游戏实现的封装。 实际上,轴需要是一个单位向量。 遇到了一个异常情况,其中某个相对于其他部分极小的片段导致该片段没有采样点(现在已正确跳过该片段) 我继续添加了AnimationCurve类(正在我的另一个mod中开发它) v2: 从 C# 移植时,有一个 [0] 本应是 [1] 在 GetSegments 中,它会比较线段长度和角度,并稍微更好地调整沿百分比 制作了两个版本的 GetBezierPoints_Segments
- 均匀分布版本的点均匀分布,对于平滑曲线效果良好,但对于收缩曲线效果不佳
- 标准根据相对片段长度更好地调整计数
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。