求圆上任意弧的长度

2024-02-10

我有一个有趣的(无论如何对我来说)问题。我正在 OpenServo.org for V4 上工作,我正在尝试确定行进弧的长度及其方向。

我有一个磁性编码器,可以返回从 0 到 4095 的轴位置。

伺服系统有两个逻辑终点,称为 MAX 和 MIN,它们在软件中设置,可以随时更改,并且轴必须在 MAX 和 MIN 位置之间旋转(即行进)一圈弧。例如,在图片中,蓝色弧线有效,但红色弧线不适用于 MIN 和 MAX 之间(包括 MIN 和 MAX)之间的所有行程。

我正在尝试制定一个仅使用整数数学的简单算法,该算法可以告诉我可以在圆周上任何位置的任意两点 A 和 B 之间的距离,以 MIN 和 MAX 为界,并且 A 作为当前位置,B 为目标位置,或者B是当前位置,A是目标(用B到A的负距离表示)。请注意,我允许旅行的一侧是已知的,它是“红色”或“蓝色”。

问题是当 ARC 中存在 4095/0 时,计算就会变得有点有趣。


您需要调整所有坐标,使它们位于限制点的同一侧。由于它是一个循环系统,您可以添加 4096 而不会影响绝对位置。

lowest = min(MIN, MAX);
if (A < lowest)
    A += 4096;
if (B < lowest)
    B += 4096;
distance = B - A;  /* or abs(B - A) */

在您的示例中,A 不会调整,但 B 会调整为 5156。差异将为正 1116。

在第二个示例中,A=3000 和 B=2500,它们都高于 2000,因此都不需要调整。差异为-500。

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

求圆上任意弧的长度 的相关文章

随机推荐

  • 为什么根窗口小部件与窗口的大小不同?

    我正在尝试使用自定义小部件GridLayout 但结果总是在角落里出现一个很小的网格 而不是在整个窗口中扩展的网格 示例代码 import kivy kivy require 1 5 1 from kivy app import App f
  • 到大端还是小端? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ReactDOM.render 放在 React 中的什么位置

    这里是入门 https facebook github io react docs getting started htmlReact的例子 在例子中 下面的代码片段是单独的main js file ReactDOM render h1 H
  • 从委托访问列表视图 currentIndex

    我有一个QMLListView委托从另一个文件加载其组件的地方 单击委托项目时 我想更新ListView CurrentIndex and highlight所选项目 当我明确设置时它有效id of the ListView 但是因为我想使
  • Scala 2.13 视图与 LazyList

    我正在将一个项目从 Scala 2 12 1 迁移到 2 13 6 并发现SeqView flatMap现在返回一个View 其中没有distinct方法 因此 我有一段代码不再编译 val nodes debts view flatMap
  • 如何以正确的类型安全方式迭代记录键?

    让我们针对一些属性构建一个示例记录 type HumanProp weight height age type Human Record
  • 如何获取光标下的单词?

    假设有一个mousestop事件附加到整个文档 找出确切事件的最佳方法是什么word当鼠标停止移动时 在光标下方 如果有任何文本 我可以从事件处理程序获取底层 jQuery 元素 document elementFromPoint e cl
  • MATLAB:在子图中绘制/保存网格函数的 X-Y 视图

    正如标题所示 我试图将网格函数的 2 变量切片 例如 作为 jpg 保存为子图 我想使用 m 文件来执行此操作 因为我有很多要生成的图 我已经弄清楚如何在他们自己的图形上绘制视图 但我无法让它们正确地绘制为图形中的子图 为了说明我的意思 以
  • 绘制包含 80% (x, y) 点的圆

    我有一个二维数组 x y 的点 我想绘制一个包含该点 80 的圆 并且我想知道所得圆的半径 有没有办法用 python 来做到这一点 我一直在寻找一种方法来做到这一点 但没有成功 我很抱歉没有尝试 但我完全迷失了在不给圆半径的情况下取 80
  • 进程何时处理信号

    我想知道linux进程什么时候处理信号 假设进程已经安装了信号的信号处理程序 我想知道进程的正常执行流程何时会被中断并调用信号处理程序 根据http www tldp org LDP tlk ipc ipc html http www tl
  • 访问实例变量的语法? (目标-C)

    在 Objective C 中访问实例变量的正确语法是什么 假设我们有这个变量 interface thisInterface UIViewController NSMutableString aString property nonato
  • 与D3的关系图

    如何使用 D3 创建以下图表 我不知道这种类型的可视化的名称 我能找到的最接近的是 力导向 图 图例 填充的节点是人 非填充的节点是属性 例如最喜欢的颜色 这是我的版本 http jsfiddle net doraeimo JEcdS em
  • Python win32com“参数数量无效”

    我正在尝试使用 win32com 使用以下代码将多个 xlsx 文件转换为 xls import win32com client f r input xlsx xl win32com client gencache EnsureDispat
  • iOS 应用程序上的自定义字体 - 在模拟器中工作但不适用于 iPad

    在这里遇到一个奇怪的问题 我正在为我的学校项目 非商业 开发一个游戏 并且我正在使用自定义字体黑法院 http www dafont com black chancery font 根据 GNU GPL 免费 我遵循了多个来源的说明 其中包
  • Word 2016 for Mac 中的 CreateObject(“Excel.Application”)

    我有 Word 2016 VBA 代码来读取 Excel 文档中的数据 这适用于 Windows 平台 Windows 7 和 Windows 10 在 Mac 上 它失败了CreateObject Excel Application 操作
  • 子查询和相关子查询的区别

    下面的 SQL 查询是普通查询还是相关子查询 SELECT UserID FirstName LastName DOB GFName GLName LoginName LoginEffectiveDate LoginExpiryDate P
  • SqlBulkCopy,用引号引起来的字符串变量

    当尝试批量复制到 ASP NET MVC 项目中的 SQL Server 数据库时 我收到此错误 数据源中 String 类型的给定值无法转换为指定目标列的 nvarchar 类型 我查看了类似的问题 发现 1 帮助我查明了我的问题 c 无
  • Service Worker 不会缓存 Manifest start_url

    我正在使用 Lighthouse 来审核我的网络应用程序 我正在克服失败 但我坚持这一点 失败 Service Worker 未缓存 Manifest start url In my manifest json I have start u
  • 获取 RGB 颜色并使用 iPhone 上的 UIColor 对其进行标准化

    我正在寻找一种直接的方法来从 RGB 转换颜色 从 Photoshop 等工具中获取它 然后将其转换为 UIColor 由于 UIColor 对每个颜色空间使用 0 0 到 1 0 的标准化色域 因此我不确定这是如何完成的 感谢您的解决方案
  • 求圆上任意弧的长度

    我有一个有趣的 无论如何对我来说 问题 我正在 OpenServo org for V4 上工作 我正在尝试确定行进弧的长度及其方向 我有一个磁性编码器 可以返回从 0 到 4095 的轴位置 伺服系统有两个逻辑终点 称为 MAX 和 MI