如何计算弹跳角?

2023-11-23

我玩了一段时间,但我就是想不通。

我做了一个发射导弹的坦克,当导弹击中墙壁时,我希望它们弹开,但我希望它们弹回正确的角度。

现在我没有任何障碍物,导弹一超出范围就会弹开viewportRectangle I made.

我正在寻找的解决方案相当先进吗?

有没有一种相对简单的方法可以实现呢?


您可能会认为,由于墙壁与坐标轴对齐,因此编写特殊情况代码是有意义的(对于垂直墙壁,否定速度的 x 坐标;对于水平墙壁,否定速度的 y 坐标) )。然而,一旦你让游戏在垂直和水平墙壁上运行良好,你可能会想到的下一件事是,“任意角度的墙壁怎么样?”因此,值得从一开始就考虑一般情况。

在一般情况下,假设你的导弹有速度v并撞到表面法线的墙壁n.

Missile with vector v about to obliquely hit a wall with surface normal n.

Split v成组件u垂直于墙壁并且w与它平行。

Right-angled triangle with hypotenuse for v, short side u parallel to wall and long side w parallel to wall.

Where:

u = (v · n / n · n) n
w = vu

Here, v · n is the 点积向量的v and n。有关如何计算它的说明,请参阅链接。点积n · n计算为法向量长度的平方;如果你总是保持法线的形式单位向量 then n · n= 1 并且可以省略除法。

弹跳后,平行于墙壁的运动分量受到摩擦力的影响f,垂直于壁的分量受到弹性的影响,可以以 a 的形式给出恢复系数 r.

所以碰撞后的速度为v′ = f wr u。在完全弹性、无摩擦的碰撞中,v′ = wu;也就是说,运动反映了碰撞点的法线,如比尔回答中给出的图表所示。

这种方法在三个维度上也同样有效。

(显然,这是一个非常简化的弹跳概念;它没有考虑角动量或变形。但对于许多类型的视频游戏来说,这种简化是完全足够的。)

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

如何计算弹跳角? 的相关文章

  • 运行应用程序时.NET 3.5 JIT 不工作

    以下代码在 Visual Studio 内部运行该版本和在 Visual Studio 外部运行该版本时提供不同的输出 我正在使用 Visual Studio 2008 并面向 NET 3 5 我也尝试过 NET 3 5 SP1 在 Vis
  • Task.Factory.StartNew 或 Parallel.ForEach 对于许多长时间运行的任务? [复制]

    这个问题在这里已经有答案了 可能的重复 Parallel ForEach 与 Task Factory StartNew https stackoverflow com questions 5009181 parallel foreach
  • 获取 TextBox 中的文本行数

    我试图通过标签显示文本框中的文本行数 但是 问题是如果最后一行为空 标签必须显示没有空行的行号 例如 如果它们有 5 行 最后一行为空 则标签应将行数显示为 4 Thanks private void txt CurrentVinFilte
  • 使用sqlbulkcopy之前如何创建表

    我有一个 DBF 文件 我正在尝试导入该文件 然后将其写入 SQL 表 我遇到的问题是 如果我使用 SqlBulkCopy 它需要我提前创建表 但在我的场景中这是不可能的 因为 dbf 文件不断变化 到目前为止 这是我的代码 public
  • std::bind2nd 和 std::bind 与二维数组和结构数组

    我知道 C 有 lambda 并且 std bind1st std bind2nd 和 std bind 已弃用 然而 从C 的基础开始 我们可以更好地理解新特性 所以 我从这个非常简单的代码开始 使用int 数组s 第一个例子 与std
  • ASMX Web 服务,测试表单仅在本地计算机上适用于一种 WebMethod

    我有一个正在测试的 ASMX WebService 并且在大多数方法上我都可以使用测试表单进行测试 然而 我确实有一种方法 测试表上写着 The test form is only available for requests from t
  • 尽管浮点数相同,但它们并不相等? [复制]

    这个问题在这里已经有答案了 下面的程序输出This No is not same 当两个数字相同时为什么会这样做 void main float f 2 7 if f 2 7 printf This No is same else prin
  • 使用默认行为将模型绑定到接口

    我正在尝试将控制器操作绑定到接口 但仍保持默认的绑定行为 public class CoolClass ISomeInterface public DoSomething get set ISomeInterface public clas
  • 从 Golang 调用 C 函数

    我想在 Golang 中编写控制器逻辑并处理 json 和数据库 同时在 C 中使用我的数学处理模型 在我看来 调用 C 函数的开销必须尽可能低 就像设置寄存器 rcx rdx rsi rdi 一样 执行一些操作fastcall 并获取 r
  • 根据 Active Directory 策略检查密码[重复]

    这个问题在这里已经有答案了 我有一个允许用户更改其 AD 密码的前端 有没有办法获取特定用户及其属性 长度 复杂性 的密码策略 例如细粒度 有没有办法根据此特定策略检查字符串 xyz121 编辑 我不想检查活动目录中存储的当前密码 我想检查
  • Web 文本编辑器中的 RTF 格式

    网络上是否有支持 RTF 格式文档输入的文本编辑器 我知道这对 webdev 来说有点奇怪 但我需要从数据库中读取 RTF 文档 并在基于 Web 的文本编辑器中对其进行编辑 然后将其存储回 RTF 中 在我在转换工具上投入太多资金之前 我
  • 如果我重新分配并且新大小为 0,会发生什么情况。这与释放等效吗?

    给出以下代码 int a NULL a calloc 1 sizeof a printf d n a a realloc a 0 printf d n a return 0 它返回 4078904 0 这个 realloc 相当于 free
  • 文件加密与解密问题

    我一直在尝试在 VC Express 2010 中加密和解密文件 我见过的所有教程和文档都需要两个FileStreams 来加密文件 一个用于读取未加密的版本 另一个用于加密 当我实际编写代码时 它不断抛出错误 告诉我它无法打开该文件 因为
  • 如何使用 C# 将表格粘贴到 Ms-Word 文档的末尾

    我有一个预制的 Word 模板 其中有一个表格 我想打开它 然后在文档末尾添加 粘贴 另一个表格 问题是它不会转到文档的末尾 而是将新表格粘贴到原始表格的第一个单元格中 任何帮助将不胜感激 previous code copied a ta
  • 使用联合对 IP 地址进行多种解释?

    在工作中 我们使用以下构造来将 IP 地址解释为 4 字节数组或 32 位整数 union IPv4 std uint32 t ip std uint8 t data 4 这很好用 但是读完这本书的第 97 章 不要使用联合来重新解释表示
  • Code::Blocks 中的调试似乎不起作用 - 缺少调试符号

    我正在尝试在 Code Blocks 中调试程序 我跟着本指南 http wiki codeblocks org index php title Debugging with Code Blocks and 这个短视频 http www y
  • 文本框中“结束编辑”的事件

    我正在 winform c 中使用文本框 并使用文本在数据库中进行查询 但每次文本更改时 我都需要不断查阅文本框的文本 因此 对于这些 我使用 KeyUp 但这个活动太慢了 文本框编辑完成后是否会触发任何事件 我考虑完成2个条件 控制失去焦
  • 如何阻止 Control-I 在 CoreWindow 范围内的 UWP 文本框中插入选项卡?

    当我在 UWP 应用程序中有一个 TextBox 时 对我来说 奇怪的行为 在 Windows 10 中创建通用的空白应用程序 UWP 应用程序 使用以下代码将文本框添加到默认网格
  • 检查另一种形式的线程是否仍在运行

    我有一个涉及两个窗体的 Windows 窗体应用程序 子表单用于将数据导出到 CSV 文件 并使用后台工作者写入文件 当这种情况发生时 我隐藏了表格 当后台工作程序运行时 父窗体仍然处于活动状态 因此即使后台工作程序正在写入文件 用户也可以
  • 线程安全的有限大小队列,不使用锁

    我正在尝试编写一个主题队列 但遇到死锁和其他多线程问题 我想用Interlocked CompareExchange避免lock用法 但这段代码并没有按预期工作 它只是擦除整个队列 我在这里做错了什么 public class FixedS

随机推荐

  • 如何找到具有项目值的列表框项目索引?

    my MessageBox Show listbox Items 0 ToString is abber 如何使用 abber 找到列表框项目索引 0 With listbox Items IndexOf abber That is int
  • 有没有办法知道 C++ 中自动包含哪些标头

    这是一个后续问题this上面说 在 C 中 与 C 不同 标准标头允许 include 其他标准标头 有什么方法可以知道自动包含哪些标头 因为可能很难猜测哪些标头中定义了哪些符号 动机 我的作业在我的计算机上编译并正常工作 但 TA 告诉我
  • 如何从异步调用返回响应?

    如何从函数返回响应 结果foo发出异步请求 我试图从回调中返回值 并将结果分配给函数内的局部变量并返回该变量 但这些方法都没有实际返回响应 它们都返回undefined或者无论变量的初始值如何result is 接受回调的异步函数示例 使用
  • 闪亮的反应性

    我有一个带有大量参数的应用程序 每个参数都有很多粒度 这使得找到所需的参数变得很痛苦 这会导致反应部分不断计算 从而减慢速度 我添加了一个提交按钮 它解决了上述问题 但随后又遇到了另一个问题 下面是我构建的框架的简单复制 参数输入接受1到1
  • PowerShell函数参数语法

    为什么要这样做写主机函数外部的工作方式与函数内部的工作方式不同吗 似乎参数变量以某种方式与我声明的内容发生了变化 function a string svr string usr x svr usr Write Host x svr abc
  • 查询对象实现示例[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 任何人都可以推荐有关 C Java 中查询对象模式使用的优秀教程 实现或示例代码吗 我用谷歌没有找到太多 由于 LINQ 几乎无处不在 您确定需要重
  • cmake的默认构建配置是什么

    In this答案 它说 Debug 是默认的 cmake 构建配置 但我有不同的观察 我在 CMakeLists txt 中有以下内容 可以根据当前的构建配置选择库的调试和发布版本 target link libraries MyApp
  • 找不到有角度的自定义管道

    在我的应用程序中 我需要全局自定义管道 我尝试按照以下方式实现它角管但我总是看到这个错误 模板解析错误 找不到管道 formatdate 格式化日期 管道 import Pipe PipeTransform from angular cor
  • Java USSD 菜单树生成 - 如何

    我想使用 Java 生成一个基于树的菜单 该菜单将显示在 USSD 浏览器上 每个节点可能有子节点 以叶节点结尾 我还必须维护访问此菜单的每个用户的状态 例如他在菜单上的当前位置 以方便导航 关于如何实现树生成和状态管理有什么想法吗 我假设
  • 在 OSX 上安装 Jekyll 需要 GCC 吗?

    Jekyll 安装 says GCC 和 Make 如果您的系统没有安装它们 您可以通过在系统的命令行界面中运行 gcc v 和 make v 来检查 我正在使用 macOS Sierra 我已经安装了 Xcode 的命令行工具 CLT 和
  • 如何向 C++ 程序添加定时延迟?

    我正在尝试在 C 程序中添加定时延迟 并且想知道是否有人对我可以尝试的内容或我可以查看的信息有任何建议 我希望我有更多关于如何实现这个定时延迟的细节 但是在我有更多关于如何添加定时延迟的信息之前 我不确定我应该如何尝试实现这个 C 11 的
  • 从程序集中删除签名

    我在 Visual Studio 中打开了一个项目 它恰好是 Enyim Caching 该程序集希望延迟签署 事实上 它如此强烈地希望延迟签名 以至于我无法强制 Visual Studio 编译它without延迟签字 我已取消选中 Vi
  • PHP 错误:“zip 扩展名和解压缩命令均丢失,正在跳过。”

    当我运行composer update我收到此错误消息 Loading composer repositories with package information Updating dependencies including requi
  • 如何在 woocommerce 中获取当前用户的所有订单

    我想获取当前用户在插件函数中发出的所有订单 我正在使用这个 function get all orders customer orders get posts apply filters woocommerce my account my
  • 如何将 ng-repeat 放入 ng-repeat 中 n 次

    I have a JSON object having nested nodes which can go on for any number of level I need to display the content of a node
  • 反射会带来什么风险? (中等信任度)

    中等信任托管环境中缺乏反思似乎造成很多问题适用于许多流行的 Web 应用程序 Why is 反射权限默认情况下禁用中等信任 反射在共享托管环境中会带来什么风险 随机参考 参见MSDN 如何在 ASP NET 2 0 中使用中等信任 反射允许
  • Django <-> SQL Server 2005,文本编码问题

    我正在尝试使用以下方法在 MS SQL Server 2005 上存储 Django 数据 http code google com p django pyodbc pyodbc FreeTDS 只要我存储由 ASCII 字符组成的字符串
  • 使用 CABasicAnimation 对帧属性进行动画处理

    我正在尝试对此进行精确的 翻译 UIView基于块的动画代码 UIView animateWithDuration 0 5 delay 0 0 options UIViewAnimationOptionCurveEaseInOut anim
  • 如何从 SQL Server 上的一张表中删除 8,500,000 条记录

    删除活动 其中 unt uid 为 null 将是最快的方法 但在该语句完成之前没有人可以访问数据库 表 因此这是不行的 我定义了一个游标来在工作时间完成此任务 但无论如何对生产力的影响很大 那么如何删除这些记录才能保证这个数据库的正常使用
  • 如何计算弹跳角?

    我玩了一段时间 但我就是想不通 我做了一个发射导弹的坦克 当导弹击中墙壁时 我希望它们弹开 但我希望它们弹回正确的角度 现在我没有任何障碍物 导弹一超出范围就会弹开viewportRectangle I made 我正在寻找的解决方案相当先