浮点线性插值

2024-04-13

在两个变量之间进行线性插值a and b给定一个分数f,我目前正在使用这段代码:

float lerp(float a, float b, float f) 
{
    return (a * (1.0 - f)) + (b * f);
}

我认为可能有一种更有效的方法。我使用的是没有 FPU 的微控制器,因此浮点运算是在软件中完成的。它们相当快,但加法或乘法仍然需要大约 100 个周期。

有什么建议么?

注:为了使上面代码中的方程清晰起见,我们可以省略指定1.0作为显式浮点文字。


正如 Jason C 在评论中指出的那样,您发布的版本很可能是最佳选择,因为它在边缘情况附近具有卓越的精度:

float lerp(float a, float b, float f)
{
    return a * (1.0 - f) + (b * f);
}

如果我们暂时忽略精度,我们可以将表达式简化如下:

    a(1 − f) × (ba)
 = aaf + bf
 = a + f(ba)

这意味着我们可以这样写:

float lerp(float a, float b, float f)
{
    return a + f * (b - a);
}

在此版本中,我们取消了一次乘法,但失去了一些精度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浮点线性插值 的相关文章

随机推荐

  • ASP.NET MVC - 模型绑定一组动态生成的复选框 - 如何

    我正在尝试对一组动态生成的复选框进行模型绑定 以便在控制器操作中处理它们 但无法进行模型绑定 这是场景 我的 ViewModel 类 DocumentAddEditModel 包含一个字典 Dictionary 其中每个条目的字符串是每个复
  • Python opencv 检测棋盘

    我正在尝试获取棋盘图案的角点 并认为我可以将 openCV 与cv2 findChessboardCorners 但是 我找不到传递给该函数的良好参数 以便它成功检测棋盘 我认为该图像适合此功能 如果不是 我不知道我应该做什么预处理 这是我
  • 简单的 MySQL 语法错误 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在运行以下代码 但找不到错误是什么 谁能建议我应该检查什么 result mysql query SELECT FROM ta
  • Elastic Beanstalk 运行部署后脚本

    我的 Node js 应用程序由两部分组成 一个 Express 后端和一个 React 前端 我在这个结构中有两个 package json 文件 package json app package json 我想要做的是在我的前端文件夹应
  • 在标题中添加图像标题和/或描述

    是否可以操纵图像标题的输出内容以这种方式 不仅在每个图像下输出标题 而且还输出图像标题和 或描述 在媒体库中定义 可能通过functions php 是的 可以操纵the content 您想要做的最简单的方法是在您的functions p
  • NSUserDefaults 和 Lion 下的沙箱

    根据 Apple 的要求 将我的项目之一移至支持沙箱 我像这样使用 UserDefaults NSUserDefaults standardUserDefaults setObject myNumber forKey myNumberKey
  • 使用 XSLT 将 XML 转换为 JSON

    我想使用 XSLT 将一些 XML 转换为 JSON XML 如下所示
  • InnoDB导致MySQL无法重启

    我无法重新启动 MySQL 或从 InnoDB 表 恢复 MySQL 我有一个使用 Ubuntu 16 04 的 WSL 由于 未知 的意外 早上我无法访问 MySQL 尝试重新启动它 所有错误 尝试了有关 InnoDB 和日志 文件的所有
  • 告诉 git 不要合并二进制文件而是选择

    当二进制文件 swf jar 和 flv 在本地更改时 我尝试引入更改 git 会尝试合并它们并报告冲突 然后 我分支到一个临时分支 并提交本地更改的二进制文件 并在拉取后使用递归策略将它们合并回来 太多工作 有没有办法告诉 git 不要尝
  • 什么是 Ruby on Rails Action 电缆适配器?

    通过 RoR 动作电缆导轨查看http edgeguides rubyonrails org action cable overview html subscription adapter http edgeguides rubyonrai
  • h5py 是否将整个文件读入内存?

    h5py是否将整个文件读取到内存中 如果是这样 如果我有一个非常非常大的文件怎么办 如果不是的话 我每次要单个数据就从硬盘取数据会不会很慢 我怎样才能让它更快 h5py是否将整个文件读取到内存中 不 不是的 特别是 切片 dataset 5
  • 使用 CMake 在主项目之前强制构建外部项目(使用 buildtools)

    我想在开始构建我的主项目之前构建 gsl 我将以下行添加到 rootCMakeLists txt file cmake minimum required VERSION 2 8 project moose include CheckIncl
  • 在pytorch张量中过滤数据

    我有一个张量X like 0 1 0 5 1 0 0 1 2 0 我想实现一个名为的函数filter positive 它可以将正数据过滤成新的张量并返回原始张量的索引 例如 new tensor index filter positive
  • 如何查找联系人图像支持的最大图像尺寸?

    背景 从 jelly bean 4 1 开始 android 现在支持联系人图像720x720 http developer android com about versions jelly bean html android 41 之前
  • 如何在 json 模式中创建模式引用的嵌套列表(数组)

    我正在尝试构建一个架构 其中包含我想要强制架构的项目列表 基本上这是我想要根据架构验证的数据 data VIN 123 timestamp xxxx model jeep inspections door badge expected ye
  • R 中的负向前瞻未按预期运行

    我正在尝试替换以以下开头的字符串中的实例abc在我正在 R 中使用的文本中 输出文本在 HTML 中经过几次突出显示 因此我需要替换以忽略 HTML 插入符内的文本 以下内容似乎在 Python 中有效 但我在 R 中的正则表达式上没有得到
  • 如何在 SwiftUI 中以编程方式编辑 TextField 的边框颜色?

    这是代码片段 TextField Email text self email padding overlay RoundedRectangle cornerRadius 1 stroke Color black lineWidth 1 Se
  • Django 用交集计数注释查询集

    Djangonauts 我需要挖掘你们的大脑 简而言之 我有以下三个模型 class Location models Model name models CharField max length 100 class Profile mode
  • 如何将 window-1251(俄语西里尔字母)MySql 数据库转换为 UTF-8

    我有一个俄罗斯网站的数据库 其编码为 windows 1251 换句话说 来自 phpmyadmin 的字母如下所示 换句话说就是难以辨认的字符 为了正确显示内容 必须在 php ini 中添加此代码 header Content Type
  • 浮点线性插值

    在两个变量之间进行线性插值a and b给定一个分数f 我目前正在使用这段代码 float lerp float a float b float f return a 1 0 f b f 我认为可能有一种更有效的方法 我使用的是没有 FPU