对球面线性插值的理解

news2024/10/9 10:26:55

【前言】

线性插值是点A到点B间距离的均匀变化,球面线性插值是点A到点B的角度均匀变化,前者应用范围很广,后者主要应用平滑旋转

【球面线性插值求解】

球面线性插值(Spherical linear interpolation,Slerp)也可以写成如下形式:

Y = a(t)Y0 + b(t)Y1 

需要求解的是a(t),b(t)

以Vector3为例:此时将点看作向量,已经有两个向量A和B(已知向量方向和长度),求新的向量C的方向和长度,其中C和A形成的角度是线性变化的。

先求方向:先将向量单位化

 图中v0和v1表示AB向量,v2垂直v0,r是待求的向量方向,θ是r的旋转角度,可得:

r = v0cosθ + v2sinθ.

这里只有v2未知,设v1在v0的投影向量为v3,那么v3 = (v1*v0)*v0,v2 = Normalize(v1 - (v0 · v1)v0)

再求长度:

上述求得的向量长度为1,新向量的长度是多少呢?可以根据自己的需求来设置。常用的有两种方式

一是:向量C所在的点在AB所在的直线上

二是:向量C的长度为向量A和B的长度的线性插值

后者即为Unity中的Vector3.Slerp

采用后者求长度的代码为:

Vector3 Slerp(Vector3 start, Vector3 end, float percent)
    {
        Vector3 startNormal = start.normalized;
        Vector3 endNormal = end.normalized;
        float dot = Vector3.Dot(startNormal, endNormal);
        Mathf.Clamp(dot, -1.0f, 1.0f);
        float theta = Mathf.Acos(dot) * percent;
        Vector3 RelativeVec = endNormal - startNormal * dot;
        RelativeVec.Normalize();
        Vector3 result = (startNormal * Mathf.Cos(theta) + RelativeVec * Mathf.Sin(theta));
        float length = start.magnitude * (1- percent) + end.magnitude *  percent;
        return length * result;
    }

 【四元数的球面线性插值】

我们知道四元数也可以表示方向,即旋转角度。也可以用四元数做球面线性插值,使得角度的均匀变化。其结果为:

推到过程见链接。

【Nlerp】

Vector3.Slerp的计算涉及三角函数和求长度,耗时较长,当向量的长度为1时可以采用近似的方式实现球面线性插值,这就是Nlerp,多应用与动画。

Vector3 NLerp(Vector3 start, Vector3 end, float percent)
    {
        return Vector3.Lerp(start, end, percent).normalized;
    }

【参考】

Math Magician – Lerp, Slerp, and Nlerp – Keith M. Programming

四元数的球面线性插值(slerp) - 知乎

https://www.cnblogs.com/21207-iHome/p/6952004.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/623091.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

权限系统设计方案

1 为什么需要权限管理 日常工作中权限的问题时时刻刻伴随着我们,程序员新入职一家公司需要找人开通各种权限,比如网络连接的权限、编码下载提交的权限、监控平台登录的权限、运营平台查数据的权限等等。 在很多时候我们会觉得这么多繁杂的申请给工作带…

知识变现海哥:知识博主私域卖课三大途径

哈喽,大家好,我是海哥,知识付费变现创业教练,教育公司培训总监,从事知识付费变现咨询10年,已助力3000人实现知识付费变现。 私域这里主要指的就是微信,这里跟大家介绍三种私域卖课的方式。 1 朋…

Nsis简单打包Unity window程序

制作步骤 1.Unity发布一个window exe程序 2. 创建一个脚本,Test.nsi,放置在发布文件中 3. 编写命令,使用Nsis进行编译运行(脚本拖拽到Nsis编译器中,自动运行) 4. 编译成功,发布文件夹内生成一个SetUp.exe安装程序 5.…

一文理解数据倾斜

什么是数据倾斜 并行处理数据集的某个task处理的数据明显多于其他task。 发生数据倾斜的原因 一个词概括:shuffle 在Shuffle的过程中,同样一个Key一般都会交给一个Task去处理,如果某个key特别多,如上图中task3的key有80亿,这样就会造成别的task很快算完,而task3却一直在…

项目管理专业人员能力评价等级证书(CSPM)是什么?

2021年10月,中共中央、国务院发布的《国家标准化发展纲要》明确提出构建多层次从业人员培养培训体系,开展专业人才培养培训和国家质量基础设施综合教育。建立健全人才的职业能力评价和激励机制。由中国标准化协会(CAS)组织开展的项…

判断两个矩形是否相交(Rect Intersection)

0x00 Preface 最近在开发一个2D组态图形组件的过程中,里面的数学模块,涉及到两个矩形是否相交的判断。 这个问题很多年前就写过,算是个小的算法吧。 网络上搜索一下,有很多思路,有一些思路要基于多种组合的判断&…

618有哪些数码好物值得买?2023年618数码好物必买清单

618作为年中大促节点,很多的产品会迎来历史最低价,正是入手数码产品的最佳时间点。很多人在选择物品时难免会产生618有哪些数码好物值得买的疑惑?为此,我也整理了一份618数码好物清单,都是一些实用性很强的数码好物,希…

【2023年高考作文】七套卷子全汇总及AI一分钟版本作答

2023年高考作文-全国甲卷 科技与时间 当今社会,科技已经成为人们生活的必需品。它给我们带来了很多便利与机遇,让我们能够更好地掌控时间。然而,我们回顾一下自己的生活,会发现我们似乎已经依赖了科技,甚至成为了时间…

django-vue-admin开源项目环境调试(靠谱)

一、源码地址 注意,一定要使用这个地址。(使用其他地址下载下来的感觉代码缺失,踩了大坑) django-vue-admin: 基于RBAC模型的权限控制的一整套基础开发平台,前后端分离,后端采用 djangodjango-rest-frame…

消防应急照明和疏散指示系统在某洁净医药的设计与应用

【摘要】:A100型消防应急照明和疏散指示系统具有集中控制,灵活度高和可靠性强等特点。系统采用17寸工业平板电脑,采用Windonws7系统,可支持联动报警、系统监控、故障报警、自检、备电、记录存储与查询、导光流、权限控制等多项功能…

30、js - Promise

一、Promise的3种状态: 1、作用:了解Promise对象如何关联的处理函数,以及代码执行顺序 2、一个Promise对象,必然处于以下几个状态之一: pending:初始状态,页面一旦调用Promise对象,Promise对象就…

Hive中的DDL操作

文章目录 Hive中的DDL操作一、数据库(database)相关操作1. 创建数据库1)语法2)案例 2. 查询数据库1)展示所有数据库2)查看数据库信息 3. 修改数据库1)语法2)案例 4. 删除数据库1&…

需求三重境

需求的三点-痛点、痒点、爽点 我早前也做过产品经理,做产品经理经常需要分析需求,而KANO模型是其中的一个模型。如果要进一步解读痛点、痒点、爽点,或者可以尝试从KANO模型的角度分析。 所谓的KANO模型,是东京理工大学教授狩野纪…

接口测试 —— 接口和接口文档概念

1、接口的概念 接口又叫API,全称application programming interface:应用程序接口(规范),也就是我们经常会听说Web接口,APP接口。 详细说明: APP是一种基于C/S架构的应用程序,如抖音…

阿里高工珍藏版“亿级高并发系统设计手册(2023版)”面面俱到,太全了

高并发 俗话说:罗马不是一天建成的,系统的设计当然也是如此。 从原来谁都不看好的淘宝到现在的电商巨头,展现的不仅仅是一家互联网巨头的兴起,也是国内互联网行业迎来井喷式发展的历程,网络信号从 2G 发展到现在的 5…

苹果服务端通知v2处理(AppStore Server Notifications V2)

苹果服务端通知v2处理 关键词: App Store Server Notifications V2、Python源码、苹果订阅、JWS、x5c、JSON WEB TOKEN 背景 最近要接入苹果订阅功能,调研后发现订阅生命周期内的状态变更是通过苹果服务端通知返回的(什么时候普通内购也能加上减少掉单的概率)&am…

邮件营销技巧!不想被打入冷宫?这五点让你的邮件不再进垃圾箱

邮件营销凭借其低成本、高效率的优势渐渐地在各个行业开始崭露头角。它既适用于外贸行业来拓展客户、又适用于金融行业来和客户保持联系。除此之外,企业还可以用邮件营销来通知活动信息、产品上新信息等等。 不过,很多人在进行邮件营销的时候经常会遇到“…

说点理论-什么叫TED背景

TED背景的概念 指technology, entertainment, design在英语中的缩写,即技术、娱乐、设计的3个首字母缩定。 TED背景的投影最小为4米*4米,大的有IMAX宽影幕布来打投影。给人感觉为:非常技术、非常高大上、非常专业、非常Fashion。 因此,头部一些公司会专门对于非常重要类…

【STM32】STM32G4系列片内模拟器件-比较器的使用

STM32G4系列片内模拟器件-比较器的使用 1.前言2.CubeMX配置3.HAL库函数 1.前言 STM32G4系列内置了片内模拟比较器,为电机控制、电源监测等方面的应用提供了很大的便利。要使用片内比较器,只需使用STM32CubeMX进行简单配置即可。 2.CubeMX配置 首先&am…

不敲一个代码,10分钟做出数据可视化大屏,还不快来学?

大屏幕实时数据可视化解决方案? 简道云去年举办过一场“最美仪表盘”评选活动,在活动中我们收到了很多精美炫酷的仪表盘,而且这所有的数据可视化仪表盘都是“从业务中来”,“到业务中去”的。 下面举几个例子展示下: 所用工具…