- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用一个程序在二维 map 上模拟飞机。我很难找到转向的方向以击中目标方位。
double maxHeadingChange = 10; //Maximum heading change per 100 ms
double targetHeading = 0;
double differenceHeading = Math.Abs(targetHeading - heading);
//if we need to turn clockwise
if (targetHeading > 340 || targetHeading < 30)
{
if (heading < 180)
{
if (differenceHeading > maxHeadingChange)
heading -= maxHeadingChange;
else
heading -= differenceHeading;
}
else
{
if (differenceHeading > maxHeadingChange)
heading -= maxHeadingChange;
else
heading -= differenceHeading;
}
}
else if (targetHeading > heading)
{
if (targetHeading - heading < maxHeadingChange)
heading = targetHeading;
else
heading += maxHeadingChange;
}
else
{
if (heading - targetHeading < maxHeadingChange)
heading = targetHeading;
else
heading -= maxHeadingChange;
}
//MessageBox.Show(headingDifference + "");
//just for now
//heading = targetHeading;
if(heading > 359)
heading = 0;
if(heading < 0)
heading += 360;
你可以看到我正在尝试做的是获得转向的方向,然后如果转向量大于最大转向量,则转向最大转向量。
问题是,当物体的航向约为 10 度并且目标为 354 度时,它会发现它应该顺时针转动以击中该目标,因为这将减去航向以击中较小的目标航向。问题是,一旦目标航向超过 0 并进入更高的航向范围,它就会顺时针反转。这导致对象转向其航向(逆时针旋转,或减少度数),并在它通过 0 时突然反转转向。
我需要找到一种更有效的方法来获得以度数为单位的转弯量(我不能简单地将 heading
设置为 targetHeading
因为最大的模拟turn amount) 以便它检测到从当前航向 10* 打到 350* 航向,继续减去航向。
抱歉,解释得太长了。
[编辑]: 可能的解决方案 1
double maxHeadingChange = 10; //Maximum heading change per 100 ms
double targetHeading = 0;
double differenceHeading = Math.Abs(targetHeading - heading);
//if we need to turn clockwise
if(getTurnDir(heading, targetHeading))
{
//Turn right
if(differenceHeading > maxHeadingChange)
heading -= maxHeadingChange;
else
heading -= differenceHeading;
}
else
{
if (differenceHeading > maxHeadingChange)
heading += maxHeadingChange;
else
heading += differenceHeading;
}
//MessageBox.Show(headingDifference + "");
//just for now
//heading = targetHeading;
if(heading > 359)
heading = 0;
if(heading < 0)
heading += 360;
double hdgDiff(double h1, double h2)
{ // angle between two headings
double diff = h1 - h2 + 3600 % 360;
return diff <= 180 ? diff : 360 - diff;
}
bool getTurnDir(double hdg, double newHdg)
{ // should a new heading turn left or right?
if (newHdg > hdg)
return newHdg - hdg > 180;
return hdg - newHdg > 180;
}
最佳答案
double hdgDiff (double h1, double h2) { // angle between two headings
const double diff = fmod(h1 - h2 + 3600, 360);
return diff <= 180 ? diff : 360 - diff;
}
bool isTurnCCW(double hdg, double newHdg) { // should a new heading turn left ie. CCW?
const double diff = newHdg - hdg; // CCW = counter-clockwise ie. left
return diff > 0 ? diff > 180 : diff >= -180;
}
关于c# - 目标航向的转向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12869557/
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
如何让我的节点始终朝着它所面对的方向前进? float tilt = _motionManager.accelerometerData.acceleration.x; [_player runActi
我继承了一个基于 Java、基于 Web 的 7 年前的产品,其中包含大约 75 万行代码。正如预期的那样,考虑到它的年龄,它不是基于 Maven 的结构,. Maven 用于构建和发布应用程序。但是
既然新版本的 eclipse 已经发布了,我应该立即转向吗?如果我的插件在 Galileo 中工作,它也能在 indigo 中工作吗? 最佳答案 如果不尝试或研究特定插件提供商关于 Indigo 兼容
我有一个使用 html、css 和 jQuery 制作的静态应用程序。我现在将其导入到 Angular 2 中,但遇到了日期问题: // GET DATE let d = new Date(); le
我在 C# 中为我的 unity 项目创建了一个植绒算法。我试着关注 this example ,但问题是把所有东西放在一起,我无法推断。以下代码是我希望拥有一个领导者跟随植绒系统的一部分。 我在基本
我有一张这样的 table Index | FeatureType | FeatureExists 1 | BR | 0 1 | EI
我有一个拥有大约 60,000 名付费客户的网站,其中 3000 名使用 Windows XP + IE 8。我想要一个可以为我的所有客户提供服务的证书(或多证书解决方案)。问题是 SHA-1 已被弃
我正在尝试找出如何以不同的方式执行我的 JavaScript 回调。 我目前的回调风格,将回调传递给函数,函数调用回调。例如: 函数调用 doSomething(function(data){
我有一个适用于 Android 2.1 的应用程序,我想为 Android 2.2+ 的设备添加移动到 SD 的支持。 我添加了代码: 但是如果我让我的项目保持在sdk level 7以上,我会出
此代码附在相机上: transform.position += Input.GetAxis("Vertical") * transform.forward * mod; transform.posit
jQuery 是 javaScript 的框架。但是,我能够很好地使用 javaScript 进行编码。我不知道如何在 jQuery 中(重新)编码它! 从头开始学习 jQuery 是唯一的方法还是我
我将一些旧代码从另一个库移至 jQuery,并在此过程中破坏了一些其他代码。我认为 jQuery 实现其 .html 函数的方式让我很伤心。 以下部分是使用以下语法通过 AJAX 调用和成功函数生成的
我在网上搜索了一些不错的代码,突然间我碰到了一个,但是它已经在 Eclipse 中工作了,因为我没有 Eclipse(而且我也不打算安装它)我可以在我的 VS10 上正确编译它。问题是所有链接器引用都
我是 Scrum 团队的一名测试人员,试图自动化我们的测试回归集。 我们的前端是用 Java Angular 开发的,我们使用 Tosca 测试套件来自动化我们的测试集。我遇到的问题如下: 使用 To
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
SVG 图标与字体图标相比有一些优势:它们可以缩放以适应可变大小的容器元素,并且理论上您可以更改各个路径的颜色。我也喜欢我可以在 Inkscape 中轻松制作它们的事实:P 但我如何在 CSS 文件中
关于将 iOS 应用程序迁移到 Swift 3.0 的过程。我终于摆脱了(所有)语法错误。 不过,我似乎还有一个很大的问题。 以下是我在构建项目时在 Xcode 中得到的最终错误消息: 这里太长了,所
自从我开始编码以来,我就是一名 .NET 开发人员。我想学习 Win32 编程。需要关于从哪里开始的建议。学习 Win32 编程的最佳资源/书籍是什么。我知道一点“大学 C++”。 最佳答案 毫无疑问
在windows上用了10多年,如何迁移到*nix平台?哪种口味更容易处理,让我更舒服,然后也许我可以切换到更标准的 *nix 口味?我已经推迟了一段时间了。帮助我进行额外的推送。 最佳答案 Linu
我是一名优秀的程序员,十分优秀!