如何计算 VU 仪表刻度的对数标签?

2024-04-16

我使用画布编写一个仪表小部件,需要计算刻度的标签值。没问题,除非我尝试重新创建 VU 表的刻度。我知道它是对数的,但在这种类型的仪表上,这些值不是 10 的幂。

see: https://en.wikipedia.org/wiki/VU_meter https://en.wikipedia.org/wiki/VU_meter

我的函数给出了比例的最小值和最大值。对于正常尺度,还给出了值之间的步长。例如,给定 -20 和 30,步长为 10,它将生成标签:

-20 -10 0 10 20 30

对于给定 -20 和 6 的 VU 表,我需要生成标签:

-20 -10 -5 -3 0 3 6

而且,这些值之间的比例间距并不相同。

我并不是要求提供实际的代码示例,而是要求有关如何最好地实现这一点的想法。

我应该编写函数,使参数之一是标签列表,然后将它们绘制在对数刻度上吗?这似乎无法正常工作,因为数字最终没有出现在正确的位置,如上图正确的 VU 表所示。

是否有一些专门针对 dB 级别的公式,而不是简单的对数函数?

再次强调,我并不是要求提供代码示例,只是为了帮助您理解最佳使用方法。

Thanks!


我想你有一个值到像素的函数。你需要写的是inverse的功能。

当你有反函数时,你只需将屏幕区域分成 N 个相等的部分(在图中你有 6 个区域)。一个区域的宽度为 X 像素。现在您可以使用反函数来获取该像素位置的值。

这不会是一个整数,它会类似于 3.434 或 11.34 - 你需要一个更漂亮的函数来生成最接近的“漂亮”数字(假设只是去掉小数点后的部分)。

现在,您获取漂亮的值并使用原始函数计算它的像素位置。

一些代码:

function value2px(value, valueMin, valueMax, pxMin, pxMax) {
    var valueWidth = sigLog(valueMax) - sigLog(valueMin);
    var pixelWidth = pxMax - pxMin;
    var ratio = pixelWidth / valueWidth;

    return ratio * (sigLog(value) - sigLog(valueMin)) + pxMin;
}

function px2value(px, valueMin, valueMax, pxMin, pxMax) {
    var valueWidth = sigLog(valueMax) - sigLog(valueMin);
    var pixelWidth = pxMax - pxMin;
    var ratio = pixelWidth / valueWidth;

    return sigExp((px - pxMin) / ratio + sigLog(valueMin));
}

和演示:http://jsfiddle.net/ambcwoLg/1/ http://jsfiddle.net/ambcwoLg/1/

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

如何计算 VU 仪表刻度的对数标签? 的相关文章

  • 使用 javascript 获取选择标签的名称

    我在任何地方都没有找到这个问题 所以我将其发布在这里 我有一堆选择标签 部分使用 VBScript 命名 我希望能够获取从 javascript 中的 onchange 事件调用的选择标签的名称 这是代码
  • Moment.js 在 Firefox 中返回 NaN,但在 Chrome 中不返回 NaN

    我有以下代码行 moment 11 10 2013 09 03 AM diff moment minutes 在 Chrome 30 0 1599 101 中 以下行返回一个数字 它每分钟都会更改 因此确切的值不相关 在 Firefox 2
  • 转义双引号 JavaScript

    我试图在 iPhone 上查看时运行某种图像格式 在其他情况下运行一些 Flash 视频 var uagent navigator userAgent toLowerCase if uagent search iphone gt 1 doc
  • 计算链接上的点击次数(不带 onclick)[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有诸如此类的链接 a href h
  • Javascript:如何简化具有多个 OR 条件的 if 语句?

    很抱歉 如果我在写这篇文章时犯了错误 我是新来的 不知道这是如何工作的 希望我能尽快学会 我也是 JavaScript 新手 所以问题是 我有这个代码 elements js文件 我无法让它工作 放这个有用吗 if codePrompt c
  • 如何观察Firebase存储上传事件

    我有一个将照片上传到 Firebase 存储的 iOS 应用程序 以及一个连接到同一个 Firebase 的 Web 应用程序 有没有办法从网络上观察存储的变化 当上传照片时 只有iOS设备本身可以访问UploadTask 并且我没有看到o
  • 将数组传递给 include() javascript

    我试图找出一个字符串是否包含存储在数组中的多个字符串 includes 所以我尝试过 let string hello james console log string includes hello james 但它被返回为false 当我
  • javascript RegExp 的奇怪行为:相同的正则表达式产生不同的结果[重复]

    这个问题在这里已经有答案了 可能的重复 为什么 Javascript 中带有全局标志的 RegExp 会给出错误的结果 https stackoverflow com questions 1520800 why regexp with gl
  • 将数据发送到 parse.com 并更新 Angular $scope

    我正在将数据发送到 parse com 上的类 我想运行此函数并更新 scope无需重新加载视图 创建一个Programme运行下面的函数工作正常 但是有时在创建新程序后不会更新视图 并且需要刷新页面 当调用整个函数时 如底部所示 getP
  • 我应该担心“窗口未定义”JSLint 严格模式错误吗?

    这不会在严格模式下通过 JSLint use strict function w w alert w window 来自 jslint com 的错误如下所示 第 4 行第 3 行字符出现问题 window 未定义 window 隐含全局
  • Cloudflare Worker 缓存 API 出现问题

    我现在花了无数的时间尝试让缓存 API 来缓存一个简单的请求 我让它在中间工作过一次 但忘记向缓存键添加一些内容 现在它不再工作了 不用说 cache put 没有指定请求是否实际被缓存的返回值并不完全有帮助 我只能进行反复试验 有人可以给
  • 我将与 ng-include 一起使用什么文件路径?

    我的角度项目的路径是这样的 web server py flask server program app static app js controllers js etc templates index html home html 索引
  • TinyMCE 选择文本并使用 javascript 激活链接对话

    我正在尝试编写一个自动化 使用黄瓜 水豚 硒 测试 它将在tinymce框中选择一些文本 单击链接按钮 然后打开链接选择页面 但链接按钮仅在选择某些文本时才变为活动状态 所以第一轮 tinyMCE activeEditor selectio
  • Vue Chart.js - 数据变化时图表不更新

    我正在使用 Vue js 和 Chart js 绘制一些图表 每次我调用该函数时generateChart 图表不会自动更新 当我在 Vue Devtools 中检查数据时 它们是正确的 但图表没有反映数据 但是 当我调整窗口大小时 图表确
  • 在 div 内对齐 2 个图像,一张向右,另一张向左

    我的网页中有 2 张图片 我希望一张图像左对齐 另一张图像右端对齐 The JsFiddle http jsfiddle net NbekW 这是我的 HTML div class header img src Home files ima
  • 针对较小屏幕的拆分表行

    我有一个固定宽度为 960px 有 5 列的表格 当我在移动设备中查看时 我想制作第 3 4 5 列 看起来就像在下一行 有什么方法可以让 CSS 打断一行 使其看起来像这样 但是 还保留原来的HTML代码吗 您可以使用 FlexBox f
  • 为什么 JavaScript 在不同浏览器中不一致?

    在花了无数个小时修复 JS 以使其跨浏览器兼容 主要是 IE 之后 我一直在思考以下问题 Why不是 JavaScript持续的跨浏览器 我的意思是 为什么 JS 不能像 Java 和 Flash 那样好呢 相反 我们必须求助于 jQuer
  • 是否包括触摸事件客户端X/Y 滚动?

    我正在尝试获取相对于的触摸坐标viewport来自触摸事件的浏览器 例如触摸启动 我尝试从 clientX Y 属性获取它们 但两者实际上都返回包括滚动在内的值 这是违反规范的 因为它说 clientX Y 应该返回坐标而不滚动 我尝试添加
  • Java 将函数添加到 json 对象而不使用引号。

    我正在用 java 构建一个 json 对象 我需要将一个函数传递到我的 javascript 中并使用 jquery isFunction 对其进行验证 我遇到的问题是我必须将 json 对象中的函数设置为字符串 但 json 对象将周围
  • JS 中的展开/休息运算符如何工作? [复制]

    这个问题在这里已经有答案了 我正在努力完全理解扩展 休息运算符在 JS 中的工作原理 我已经阅读了 MDN 文档 但我仍然不完全清楚 我在下面提供了一个示例 我在其中使用了它并且它按预期工作 const users name Samir a

随机推荐