问题标签 [acceleration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
962 浏览

javascript - 限制 2D 宇宙飞船的速度

所以就像其他学习编程语言的人一样,我给自己做了一个宇宙飞船游戏项目。到目前为止,我已经拥有了视差星以及我对宇宙飞船游戏所期待的所有美好事物。这艘船停留在游戏画面的中央,可以 360 度旋转,可以推力和滑行,并且通常像外太空中的物体一样正常运行。但是,我遇到了一个小问题,即限制船速。

这艘船有一个 dx 和 dy 值(它通过我的 update() 函数将其转换为星星,因此它们进行实际移动),它根据它所面对的角度在 x 或 y 轴上施加推力。我给船一个最大速度(比如说5)和一个加速度(每帧0.1)。推进时,船会像我预期的那样加速。推进器始终处于 100% 状态,没有油门控制,因为我使用的是数字输入设备(箭头键)。我检查由船的当前 dx 和 dy 组成的三角形的斜边以确定它的当前速度,我还跟踪它的行进角度(用于以后的 AI;武器开火;当我按下向下箭头时, ship 使用这个值来知道它需要旋转到什么角度才能面对它当前的轨迹——一种帮助你正确刹车的自动驾驶仪)。

这艘船有这些变量,这些变量会在必要时更新(这是一个简短的列表,因为其余的东西并不直接相关):

我使用这个函数根据 face_angle 检查我的 dx 和 dy 的加速度:

我像这样更新每一帧加速度的速度:

我已经尝试使用多种不同类型的检查来限制速度,并且我已经尝试过:

我试过这个:

第一个版本根据需要限制了速度,但是我要么完全无法进一步修改我的加速度,要么当我试图通过面向相反方向并推进来反转航向时,我的速度立即跳到相反方向的 max_speed(因为 max_speed是根据船舶当前的 face_angle 不断计算的)。如果我将该计算更改为 move_angle,那么当船开始并且不移动时我会遇到问题。

如果我碰巧在速度回到阈值以下之前停止推进,第二个版本就会出现问题;我转身和推力,相反,我的推力是负的,这导致我在我行进的方向上加速得更远,与我所面对的方向完全相反。

理想情况下,我希望能够将推力限制在任何方向的某个值(例如 5),并且当我将方向改变几度时,船会在几秒钟后朝那个方向行驶推力,当我转身和推力时,我希望船像预期的那样减速。

如果有人玩过 Escape Velocity 游戏,那就是我正在努力实现的那种运动和控制系统——如果你愿意的话,这就是我的“黄金标准”。

在http://adrian.thomas-prestemon.com/game/v3/上查看我当前的工作代码

可以在http://adrian.thomas-prestemon.com/game/v3/js/ships.js找到处理此问题的特定 .js 文件。请原谅注释掉的代码和东西的混乱。一个星期以来,我一直在研究这个整体问题的特定部分。

我已经检查了其他多种在线可用的解决方案,与我的设计最相似的解决方案使用了我上面提供的第一个“if”示例,这对我不起作用。我还查看了以下 StackOverflow 问答:

2D 宇宙飞船运动数学

宇宙飞船的二维轨迹规划与物理

对推力从当前速度矢量到目标矢量的平滑变化进行编程

所有这些解决方案看起来都非常棒,但对于我的目的来说,它们似乎都有点复杂。我不打算像第一个示例那样实施任何类型的重力系统,而另外两个虽然相关,但似乎没有为我的具体问题提供任何直接有用的东西。

任何人都可以提供的任何基本伪代码和/或其他类型的帮助——例如直接向我指出可以回答我的问题的其他东西,我可能错过了——将不胜感激。我正在寻找适用于我当前设置的解决方案,但我绝对愿意稍微改变我的船的运动代码的功能,如果它能让这个 max_speed 检查更容易。

感谢您花时间阅读所有这些内容。:)

更新:

我已经对我的代码进行了一些修改,并且我的工作比以前好得多。它并不完美,但需要更多的实验、调整和调试。:)

0 投票
2 回答
554 浏览

opengl - 哪些几何计算可以使用 OpenGL 加速

我需要加速一些使用密集计算的程序,这些程序需要从立方体、球体和类似物之间的交点进行表面计算。使用 CUDA,我需要指定我需要的所有公式,当然,以便分析计算与交叉路口相关的信息。但是因为我只需要一个很好的近似结果表面,我读到了 OpenGL 可以计算或估计这样的表面。我想知道您是否可以给我您的意见或向我指出相关的参考资料

0 投票
1 回答
10410 浏览

javascript - 鼠标移动时滚动窗口

大家好

我的意思是当鼠标移向窗口边缘(x 或 y 或两者)时,我希望页面滚动,当鼠标停止移动时,我希望页面停止滚动。

有许多示例说明如何使用 onClick 事件或窗口边缘的滚动区域进行滚动,但基于鼠标光标的移动的例子不多。

任何帮助将非常感激。

0 投票
1 回答
530 浏览

ios - 如何通过 UIAcceleration 获得速度?

你知道应用程序“运动尺”吗?它可用于通过移动 iPhone 来获取对象的长度。

移动 iPhone 时如何从 UIAcceleration 获得速度?

0 投票
1 回答
937 浏览

wpf - 如何加速 WPF 淡入/淡出动画

我在淡入/淡出时通过改变窗口的不透明度来实现灯箱效果。当我最大化我的窗口时,这个效果有很大的延迟,或者当我使用持续时间属性时,不透明度的变化并不平滑。

我管理这个例如。像这里:

请告诉我,如果您知道,这种效果默认情况下是否适用于 GPU?如果没有,我可以以某种方式管理这个吗?

0 投票
1 回答
506 浏览

iphone - 加速环境中的设备运动

我写了一个显示俯仰和滚动姿态的应用程序(一个玻璃驾驶舱应用程序)。当我旋转或倾斜 iPhone/iPad 时,姿态会准确显示。当我在飞机上飞行并旋转或倾斜设备时,它也会准确显示。现在,当我将设备靠在面板上并滚动飞机时,姿态并没有准确地改变——它根本没有移动。这对我来说是一种奇怪的行为,我想知道它是否与飞机的加速度影响设备中陀螺仪的输出有关。

任何见解都值得赞赏。

0 投票
1 回答
227 浏览

lua - 来自 XNA,什么是 Corona 的“更新”机制(GameTime、gameTime)?

我正在尝试掌握 Corona SDK 的窍门,我对 Lua 语言了解不多,因为我来自 C# 和 XNA 背景。我的问题是,当触摸屏幕上的触摸箭头时,我想对对象进行一些加速。

在 XNA 中,您的变量更改和它的代码将在更新部分完成,但我不完全确定如何在 Corona 中完成。目前,箭头只是使用此代码以恒定速度移动。

任何正确方向的帮助或指示将不胜感激。

0 投票
1 回答
1575 浏览

android - Android:滚动条加速器?

我正在编写一个包含很多长列表的 Android 应用程序,我需要以某种方式加速滚动。例如,Android 联系人应用程序使用字母列表来允许快速滚动到列表中的某个位置……但这并不是我想要的。我已经看到其他应用程序使用在您开始滚动时出现的手柄(或桨),并允许您轻松地将滚动条拖动到特定位置,这对我来说可能是一个更好的解决方案。

我想知道是否有人对上述任何一种方法有任何信息,或者关于如何加速滚动长列表(长意味着 500-750 个项目)的任何其他建议。

谢谢,哈利

0 投票
1 回答
322 浏览

time - Android java开发时间加速到

如何计算加速到100kmh的时间?好吧,当 !location.hasSpeed() 为 true 时,我注册了一个位置侦听器,将位置时间存储到变量中。在这种情况下,当速度达到给定速度 100 公里/小时(27.77 米/秒)时,我从位置的速度中减去,结果除以 1000。

这是“伪代码”

0 投票
1 回答
551 浏览

javascript - 如何使用 javascript 构建加速滚动效果?

我是 javascript 的新手,你们很多人都知道,我发现我学到的所有东西的实际应用都在逃避我。如果您只是给我代码,那可能对我没有帮助;我需要分解滚动页面的工作方式和原因。

这个想法是从第一页开始。所以我需要一个从第一页开始的功能。有一个向上、向下、向左和向右的箭头。单击它们将使您平滑滚动到指示的方向。

这是一个非常简单的想法,即拥有一个比屏幕区域更大的页面,可以通过滚动进行导航,尽管这种方式可以确保您一次只能看到一个屏幕。

我对我需要的东西有一个想法,但我不确定。

我需要确定将滚动到的页面每个部分的大小。有了这个,我确定滚动的距离和方向。

然后我需要构建在适当方向滚动的实际功能。

伪代码

然后我不知何故需要停止该功能。由于每个箭头都会获得一个 onClick 事件处理程序(我认为这是正确的术语),因此我可以构建 4 个函数。一种用于向右、向左等滚动,并将它们与适当的箭头一起使用。

但是我该怎么做,我是否走在正确的轨道上?