java - jScience 中的单元;角速度的单位是什么?

标签 java physics jscience

在我正在制作的应用程序中,我需要一些物理计算(功率、力、扭矩等)。我想使用 JScience,因为它在跟踪单位方面似乎非常有用。例如,要分配速度,我会这样做:

Amount<Velocity> vel = Amount.valueOf(100, SI.METERS_PER_SECOND);

我的问题是,我想在类中分配一些角速度,但我无法理解应该如何执行此操作。假设我想指定 100 rad/s 的角速度。

Amount<AngularVelocity> angVel = Amount.valueOf(100, {SOME UNIT});

我在 JScience 中找不到任何用于表示角速度的单位。文档说“这个数量的系统单位是“rad/s”(弧度每秒)。”,但没有“SI.RAD_PER_SECOND”这样的东西或任何类似的枚举值,我认为......

所以问题是:在后面的代码示例中我应该写什么{SOME UNIT}

来自 Birger 的欢呼

---编辑--

有人建议使用“SI.RADIAN.divide(SI.SECOND)”作为单位,但随后我必须将变量分配给不同的类型。

// This will not compile, due to type mismatch
Amount<AngularVelocity> angVel = Amount.valueOf(100, SI.RADIAN.divide(SI.SECOND));

// This will compile, but I want to assign the amount as a AngularVelocity ...
Amount<?> angVel = Amount.valueOf(100, SI.RADIAN.divide(SI.SECOND));

// Another, working alternative. But, surely, there is a way to assign an angular velocity using rad/s ... ?
Amount<Frequency> angVel = Amount.valueOf(100 * Math.PI, SI.HERTZ);

最佳答案

我不是这个特定库的专家,但是 Eclipse 中的一些快速测试让我发现了这一点:

Amount<AngularVelocity> angVel = Amount.valueOf(100, AngularVelocity.UNIT);

问题在于,如果 AngularVelocity.UNIT 发生变化,您的数量也会发生变化。但我不太可能这么说。

否则,给出的代码行不太漂亮:

Amount<AngularVelocity> angVel = Amount.valueOf(100, SI.RADIAN.divide(SI.SECOND).asType(AngularVelocity.class));

这给我在 Java 编程时提供了一个很好的提示:使用控制空间。很多。我从未使用过这个库,但只需快速检查 AngularVelocity.UNIT 版本的文档,我仍然能够找到它。另一个只是您自己的解决方案之后的控制空间。

关于java - jScience 中的单元;角速度的单位是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33124414/

相关文章:

java - 在计算重写 hashcode() 和 equals() 时是否应该考虑所有字段?

java - 从多个方法向 Arraylist 添加元素的正确方法是什么?

objective-c - Spritekit 模拟流体流动

c# - 我正在尝试使基本碰撞动力学起作用

java - 是否有任何可用的 API 来表示各种元素单位,如 KG、Litre、Metre、KM 等

java - 单变量多项式(来自文本文件)

java - IntelliJ插件: how to use a custom FrameTitleBuilder?

java - 我的 keyListener 发生了什么?

ios - 使用 cocos2d-x 在 box2d 中移动车身