unity 曲线可视化图表制作(lineRenderer + 贝塞尔曲线)

在这里插入图片描述
需求要实现一个动态变化的曲线
思路:
分为两部分:画线和平滑曲线

首先解决画线问题:
1.lineRenderer
2.texture的setpixel
肯定选已经做好的轮子1啦

平滑曲线思路:
1.抛物线
2.贝塞尔曲线
抛物线做连续的曲线太抽象了 肯定选贝塞尔曲线
先了解一下贝塞尔曲线
一次贝塞尔

在这里插入图片描述

对应代码就是一个简单的插值

Vector2 a, Vector2 b, float time
var p0 = Vector2.Lerp(a, b, time);

二次贝塞尔
在这里插入图片描述
在这里插入图片描述

public static Vector2 EvaluateQuadratic(Vector2 a, Vector2 b, Vector2 c, float time)
        {
            var p0 = Vector2.Lerp(a, b, time);
            var p1 = Vector2.Lerp(b, c, time);
            return Vector2.Lerp(p0, p1, time);
        }

三次贝塞尔
在这里插入图片描述

  public static Vector2 EvaluateCubic(Vector2 a, Vector2 b, Vector2 c, Vector2 d, float time)
        {
            var p0 = EvaluateQuadratic(a, b, c, time);
            var p1 = EvaluateQuadratic(b, c, d, time);
            return Vector2.Lerp(p0, p1, time);
        }

了解了三次贝塞尔曲线 发现是由四个点组成的贝塞尔曲线
其中P0和P3是贝塞尔曲线必经过的点的 这样就能画出来自己想要的“一段”曲线了

但想要画连续的曲线怎么办呢 首先我们给定一个我们想要的出生点X 然后初始化出来四个点 就是一段曲线 你想怎么给都行 反正这初始化的四个点就能组成一段3次贝塞尔曲线 大概就是左右上下各给一个点 初始化完成了 如果想加进来一个点组成连续的曲线
首先 新的曲线
起始点3 为前一段曲线的尾端点
点4 由前一段曲线的2-3切线延申出来相同距离的点4
点5 等于点4和点6的中点
点6 就是你新给到的点

以此类推可以一直新建平滑的曲线
在这里插入图片描述

参考
GitHub
bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值