获取两个标题之间的差异

2024-02-23

我有这个方法来计算 2 个 0-360 罗盘方向之间的差异。

尽管这可以计算出我的绝对偏差(例如,始终为正输出)有多远,但我无法弄清楚需要做什么才能将符号引入到输出中。

理想情况下,如果从初始航向到最终航向的最短距离是顺时针旋转,我希望error为了有一个正号,如果标题之间的最短距离涉及逆时针旋转,我想要error有负号。

所需输入/输出的一些示例

initial -- final -- error

0 ...................... 30 ................. 30

30 ...................... 0 ................. -30

第360章 1..1

1 ...................... 360 ............ -1

Code:

    /// <summary>
    /// Calculate the error from a given initial heading to a final heading
    /// </summary>
    /// <param name="inital"></param>
    /// <param name="final"></param>
    /// <returns></returns>
    private double GetHeadingError(double initial, double final)
    {
        double directionA = final - initial;
        double directionB = 360 - (final + initial);
        double error = 0;

        if (Math.Abs(directionA) < Math.Abs(directionB))
        {
            error = directionA;
        }
        else
        {
            error = directionB;
        }

        return error;
    }

Edit:添加了检查差异何时恰好为 180 度的功能。以前,根据最终值是大于还是小于初始值,返回 180 或 -180。我对其进行了修改,使其在两种情况下都返回正 180。


所以这是我的尝试......

private static double GetHeadingError(double initial, double final)
        {
            if (initial > 360 || initial < 0 || final > 360 || final < 0)
            {
                //throw some error
            }

            var diff = final - initial;
            var absDiff = Math.Abs(diff);

            if (absDiff <= 180)
            {
                //Edit 1:27pm
                return absDiff == 180 ? absDiff : diff;
            }

            else if (final > initial)
            {
                return absDiff - 360;
            }

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

获取两个标题之间的差异 的相关文章

  • 无法使用 strptime() 获取秒数

    我收到 YYYY MM DDThh mm ss S Z hh mm 这种格式的日期时间 我正在尝试使用复制该值strptime如下所示 struct tm time 0 char pEnd strptime datetime Y m dT
  • UTF8/UTF16 和 Base64 在编码方面有什么区别

    In c 我们可以使用下面的类来进行编码 System Text Encoding UTF8 System Text Encoding UTF16 System Text Encoding ASCII 为什么没有System Text En
  • 创建 DirectoryEntry 实例以供测试使用

    我正在尝试创建 DirectoryEntry 的实例 以便可以使用它来测试将传递 DirectoryEntry 的一些代码 然而 尽管进行了很多尝试 我还是找不到实例化 DE 并初始化它的 PropertyCollection 的方法 我有
  • 模板类的不明确多重继承

    我有一个真实的情况 可以总结为以下示例 template lt typename ListenerType gt struct Notifier void add listener ListenerType struct TimeListe
  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • 如何在C++中实现模板类协变?

    是否可以以这样一种方式实现类模板 如果模板参数相关 一个对象可以转换为另一个对象 这是一个展示这个想法的例子 当然它不会编译 struct Base struct Derived Base template
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 为什么禁止在 constexpr 函数中使用 goto?

    C 14 对你能做什么和不能做什么有规则constexpr功能 其中一些 没有asm 没有静态变量 看起来相当合理 但标准也不允许goto in constexpr功能 即使它允许其他控制流机制 这种区别背后的原因是什么 我以为我们已经过去
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz

随机推荐

  • 为什么我无法索引 ExpandoObject?

    今天研究 C 动态时 有件事让我感到惊讶 我从来没有经常使用它们 但最近我一直在尝试 Nancy Web 框架 我发现我不能这样做 dynamic expando new ExpandoObject expando name John Co
  • JavaScript:如何动态地将 Flash 文件 (SWF) 添加到 DOM,以便 IE 加载它

    我的页面需要根据 XML 文件中的数据描述动态加载内容 SWF 是可以动态加载的项目之一 我的代码可以通过 http 和文件协议在 Firefox 中正确加载和启动电影 在 Chrome 中通过 http 协议正确加载和启动电影 我需要它在
  • webpack+angular2 错误:未捕获 ReferenceError:__decorate 未定义

    chrome 控制台错误 Uncaught ReferenceError decorate 未定义 这是代码https github com Dreampie angular2 demo https github com Dreampie
  • Javascript函数发布并调用php脚本

    在 html 中 我有几个按钮 它们是为数据库中具有特定状态的每个对象自动创建的 每个按钮都有自己的 id echo
  • 将 Visual Studio 资源文件放置在“资源”以外的文件夹中?

    我有一个名为rs resx 在 Visual Studio 设计器中 我可以通过单击 添加资源 并指定图像文件的路径来将图像添加到我的资源文件中 添加图像后 图像文件本身也会复制到我的 Visual Studio 解决方案中名为的文件夹中R
  • WPF:将列表绑定到列表框

    我有一堂课 public class A INotifyPropertyChanged public List b bList get set public void AddB B b bList Add b NotifyPropertyC
  • 如何保存Animation.Artist动画?

    我有个问题 我的程序运行良好 但是当我尝试保存绘制的动画时 编译器响应错误 代码 import matplotlib pyplot as plt import matplotlib image as mpimg import matplot
  • VoiceOver 导航控制器中后退按钮的辅助功能提示

    有没有办法为后退按钮设置accessibilityHint 我想先读一下画外音 后退按钮 以及此提示之后 例如 双击返回选择建筑屏幕 我正在尝试这样做 但它不起作用 在 viewDidLoad 中 super viewDidLoad bac
  • PHPMailer 地址无效

    我想发送一封邮件PHPMailer https github com PHPMailer PHPMailer 我使用此代码 但出现此错误 无效地址 电子邮件受保护 cdn cgi l email protection 我在 StackOve
  • 如何禁用量角器中的动画?

    我在谷歌上找到了一些答案 但它们似乎不适用于我的项目 一些答案谈到了向其添加一些代码conf js file s onPrepare 函数 但我的项目中没有该文件 我有一个名为protractor config js 默认情况下位于 Ang
  • hg 克隆时出现“流意外结束”错误

    我正在尝试通过 hg 从 bitbucket 克隆一个位存储库 但我不断收到此错误 abort stream ended unexpectedly got 404093 bytes expected 8706452 mac user hg
  • 在 Xamarin 中自动将 aps 环境从开发环境转换为生产环境

    在我的 Xamarin iOS 项目中 Entitlements plist 有aps environment set to development 用于开发测试目的 我正在使用适用于 App Store 的 Visual Studio T
  • 如何使面板充满屏幕直至页脚?

    我希望我的面板占据所有屏幕 直到页脚 即使面板是空的 如果面板已满 我想滚动查看内容 但页脚应始终在页面底部可见 你有主意吗 这是代码 list mobile footer position absolute bottom 0 right
  • 自动运行php脚本

    我有一个 php 脚本 应该每天自动运行 由于 php 脚本是根据请求运行的 我该怎么做 还有其他方法使用 cronjob 任务吗 两种选择 使用crontab恶魔 雇用一名工人并让他每 24 小时在浏览器中打开一次脚本 这是你的选择 要使
  • django模板中父子关系的树形结构

    我如何在 django 模板中实现树结构而不使用 django mptt 我有模型 class Person TimeStampedModel name models CharField max length 32 parent model
  • 如何在Android应用程序中点击后隐藏通知

    这是在服务开始时发出通知的代码 NotificationCompat Builder mbuild new NotificationCompat Builder getApplicationContext Intent in new Int
  • 如何注册应用程序以在 iPad 中打开我的应用程序中的 pdf 文件

    我想从 pdf 页面在我的应用程序中打开 pdf 文件 但我没有在我的应用程序中打开 pdf 的任何选项 这是我的 info plist 文件
  • 为什么 git稀疏结帐 会导致致命错误?

    这是我的命令git我正在 Windows 中运行 以稀疏存储库中的签出文件夹 git clone verbose filter blob none no checkout depth 1 sparse https user email pr
  • \x1a 字符的含义是什么

    什么是 x1a字符的含义以及为什么mysql real escape string逃避吗 从文档中 mysql real escape string 调用 MySQL 的库函数 mysql real escape string 该函数在以下
  • 获取两个标题之间的差异

    我有这个方法来计算 2 个 0 360 罗盘方向之间的差异 尽管这可以计算出我的绝对偏差 例如 始终为正输出 有多远 但我无法弄清楚需要做什么才能将符号引入到输出中 理想情况下 如果从初始航向到最终航向的最短距离是顺时针旋转 我希望erro