C#线性插值,三角插值

插值是计算两点间中间点的过程,如线性插值用于计算位置随时间变化的连续轨迹,公式为v=start+(end-start)*(t/duration)。三角插值则在三维空间中应用,通过计算重心坐标来平滑估计某点的属性,例如预测气温。该方法涉及到三角形面积的计算和权重分配。
摘要由CSDN通过智能技术生成

什么是插值?

在这里插入图片描述
是什么?很简单! 已知两点,推断中间的每一点的过程。

有什么用? 很简单!位置从30到40耗时3秒求每一时刻的位置!

1.线性插值

设v是结果,start是开始,end是结尾,t是过去的时间,duration是总时间

v = start + (end - start) * (t / duration)

		public static float Lerp(float start, float end, float step)
        {
            return start + step * (end - start);
        }

2.三角插值

不要害怕,很简单,举个例子
在这里插入图片描述
已知 ABC三点的气温,平滑的求红色点的预测气温
在这里插入图片描述
求出这个点与ABC构成的三个三角形的面积,以及三角形ABC的面积。

gamma = Power C = (中心点和AB两点的三角形面积 / 大三角形面积)
beta = Power B = (中心点和AC两点的三角形面积 / 大三角形面积)
alpha = Power A = (中心点和BC两点的三角形面积 / 大三角形面积)

预测温度 = A权 * A温度 + B权 * B温度 + C权 * C温度

 public static float Interpolate(Vector2 a, Vector2 b, Vector2 c, float tpA, float tpB, float tpC, Vector2 pos)
{
            float area = CalculateTriangleArea(a, b, c);
            // 计算点相对于三个顶点的重心坐标
            float alpha = CalculateTriangleArea(pos, b, c) / area;
            float beta = CalculateTriangleArea(a, pos, c) / area;
            float gamma = CalculateTriangleArea(a, b, pos) / area;
            // 使用重心坐标进行颜色插值
            float temp = alpha * tpA + beta * tpB + gamma * tpC;
            return temp;
}
 		/// <summary>
        /// 计算三角形面积
        /// </summary>
        /// <param name="p1">点A坐标</param>
        /// <param name="p2">点B坐标</param>
        /// <param name="p3">点C坐标</param>
        /// <returns></returns>
        public static float CalculateTriangleArea(Vector2 p1, Vector2 p2, Vector2 p3)
        {
            return Math.Abs((p1.x * (p2.y - p3.y) + p2.x * (p3.y - p1.y) + p3.x * (p1.y - p2.y)) / 2f);
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YUE ZHEN PENG

码字不易,如果你想请我喝杯果汁

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值