Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 物理数据类型_C#_Types_Physics - Fatal编程技术网

C# 物理数据类型

C# 物理数据类型,c#,types,physics,C#,Types,Physics,我目前正在设计一个包含一些物理知识的程序(没什么特别的,几个球撞在一起) 用c#表示位置(没有离散跳跃的感觉)最准确的数据类型是什么 还有,在t和t+1之间我能得到的最小时间是多少?一滴答 编辑:澄清:C#中的最小时间单位是什么[TimeSpan]。勾选?我不确定我是否理解你的最后一个问题,请你澄清一下好吗 编辑: 我可能仍然不明白,但是你可以使用任何你想要的类型(例如,double)来表示时间(如果你真正想要的是表示物理问题的时间离散化,在这种情况下,勾号是不相关的)。对于大多数物理问题,双倍

我目前正在设计一个包含一些物理知识的程序(没什么特别的,几个球撞在一起)

用c#表示位置(没有离散跳跃的感觉)最准确的数据类型是什么

还有,在t和t+1之间我能得到的最小时间是多少?一滴答


编辑:澄清:C#中的最小时间单位是什么<代码>[TimeSpan]。勾选?

我不确定我是否理解你的最后一个问题,请你澄清一下好吗

编辑:

我可能仍然不明白,但是你可以使用任何你想要的类型(例如,double)来表示时间(如果你真正想要的是表示物理问题的时间离散化,在这种情况下,勾号是不相关的)。对于大多数物理问题,双倍就足够了


刻度是使用机器测量时间时可以达到的最佳精度。

在.Net中,十进制将是可用于位置的最精确数据类型。我会为这个职位写一个课程:

public class Position
{
    decimal x;
    decimal y;
    decimal z;
}
至于时间,你的处理器不能给你任何小于一个刻度的东西


听起来是个有趣的项目!祝你好运

我认为您应该能够毫无问题地使用十进制数据类型。它具有最精确的精度。但是,双精度数据类型应该很好


是的,一个刻度是我所知道的最小值(使用System.Diagnostics.Stopwatch类)。

对于模拟,最好使用十进制/双精度(与位置相同类型)进行无量纲时间,然后将其从/转换为输入/输出上有意义的内容。否则,当你移动物体时,你将执行大量的投射操作。这样也可以获得任意精度,因为您可以选择任意大/小的时间刻度。

十进制数据类型,尽管根据您的操作,精度可能不是最佳选择。通常,Direct3D和GPU使用32位浮点和3(总共96位)的向量来表示x、y、z中的位置

这通常会提供足够的精度,除非你需要在同一个“世界”中混合大尺度(行星)和微观层次(篮球)

不使用小数的原因可能是大小(大4倍)、速度(慢几个数量级)以及没有可用的三角函数(AFAIK)


在Windows上,API函数将为您提供最高分辨率的时钟和计数器的频率。我相信其他评论中描述的秒表将其封装在.net类中。

我将使用向量数据类型。就像在物理学中一样,当你想模拟一个物体的运动时,你可以使用向量。使用或框架或滚动来表示位置。Vector2表示二维,Vector3表示三维


结构或类将是计算时间变化的最佳选项。如果必须推荐的话,我会使用秒表。

嘿,Juan,我建议您使用其他人建议的Vector3类,因为它易于使用,最重要的是,它支持您需要的所有操作(如加法、乘法、矩阵乘法等),而无需自己实现。 如果您对如何继续有任何疑问-继承它,在以后的阶段,您可以随时更改内部实现,或断开与vector3的连接

此外,不要使用比浮点精度低的任何东西——现在所有处理器的运行速度都足以比整数更精确(除非它是为移动设备而设计的,但即使是在那里……)
如果使用小于浮点,则会很快失去精度,并最终导致跳跃式的旋转和平移,尤其是如果您计划使用多个矩阵/四元数乘法。

除非您从事火箭科学,否则十进制是一种过分的方法。虽然它可能会给你更精确的位置,但它不一定会给你更精确的(例如)速度,因为它是一个定点数据类型,因此被限制在比浮点或双精度更小的范围内


使用浮点数,但保持门打开,以便向上移动到双倍,以防精度出现问题。

+1:用3个浮点数构建的向量在D3D中非常标准。除非你需要更高的准确度,否则我不会使用小数,但如果这只是一个游戏,我不会担心。-1:小数很少用于任何3D游戏计算,它们太慢了。使用一个由3个浮点数构建的向量类,您就可以全部设置了。+1:对于实数类型,十进制是最精确的,这就是要求的。