gpt4 book ai didi

c# - 为什么 Wiki 中的射弹轨迹公式会给出奇怪的结果?

转载 作者:太空宇宙 更新时间:2023-11-03 13:01:21 25 4
gpt4 key购买 nike

所以我从 wikipedia 得到了一个等式找出射弹在不同的给定变量下可以行进的距离,例如角度和速度(高度和重力是可选的,高度将默认为 0)。这是它在代码中的样子:

dist = ((velocity * velocity) / 9.807f) * (float)Math.Sin(angle * 2);

我也试过这个:

dist = ((velocity * velocity) * (float)Math.Sin(angle * 2)) / 9.807f;

两者都没有给出有希望的结果。第一个给了我 91 之类的东西……而另一个给了我负数。

谢谢。

最佳答案

这些看起来是等价的(应该对变量的任何值给出相同的答案),并且如果您使用正确的单位,两者都应该给出正确的答案。您需要将角度转换为度数。正如@theB 指出的那样,速度应以米每秒为单位,距离输出将以米为单位。

最好的办法是取尽可能简单的数字,例如速度 = 1、g = 10 和角度 45 度(pi/4 弧度)。检查您是否得到正确答案。它应该非常简单,您可以自己使用计算器计算出结果。先把它弄好。然后使用其他值作为输入,一次更改一个值。

正如@PeterSchneider 在评论中所说,检查我们立即知道答案的值(例如 90 度和 0 度)可能非常有用。这些可能看起来像是毫无意义的例子,在现实生活中永远不需要。但是,它们作为测试用例具有以下优点:

  • 很容易指定行为应该是什么。
  • 通过检查这些情况,您可能会发现影响其他值的错误。
  • 相反,您可能会在处理边缘情况时发现错误,否则您不会发现这种错误,例如除以零。

一些边缘情况可能非常棘手。如果重力为零呢?

您可能应该将代码放在一个函数中,该函数将 velocitygangle 作为参数并返回距离。这将使您能够轻松地尝试多种不同的输入。

这种程序有一种形式化,称为单元测试。您编写一小段测试代码,检查不同的情况,从最简单的开始。每次进行更改时,您都会重新运行测试以确保一切仍然有效。如果您有兴趣,可以查看一个名为 NUnit 的 C# 单元测试框架。它作为 VS 的插件提供,使用起来非常简单。

关于c# - 为什么 Wiki 中的射弹轨迹公式会给出奇怪的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32206367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com