Java 给定加速度计的加速度,如何建模模块在空间中的位置?
我得到了grove pi模块的三维值, acc_向量=(accX、accY、accZ) 每100毫秒。 我想要的是,使用java,演示我对模块所做的移动…但我的问题不是如何显示它:p 为此,我需要计算位置的值 位置向量=(x,y,z) 对应于加速度值。但我不知道怎么做 这是我尝试过的,但它总是给出奇怪的结果(初始位置、速度和加速度为(0,0,0)):Java 给定加速度计的加速度,如何建模模块在空间中的位置?,java,modeling,java-3d,orbital-mechanics,grovepi+,Java,Modeling,Java 3d,Orbital Mechanics,Grovepi+,我得到了grove pi模块的三维值, acc_向量=(accX、accY、accZ) 每100毫秒。 我想要的是,使用java,演示我对模块所做的移动…但我的问题不是如何显示它:p 为此,我需要计算位置的值 位置向量=(x,y,z) 对应于加速度值。但我不知道怎么做 这是我尝试过的,但它总是给出奇怪的结果(初始位置、速度和加速度为(0,0,0)): position_vector=0.5f*acc_vector*t 位置向量+=acc向量 position\u vector=acc\u ve
position_vector=0.5f*acc_vector*t代码>
位置向量+=acc向量代码>
position\u vector=acc\u vector*(t-t\u就在前面)代码>
x
组件的代码应该类似于
position[0] += velocity[0] * timeStep + 0.5 * acceleration[0] * timeStep * timeStep;
velocity[0] += acceleration[0] * timeStep;
您必须对y
和z
组件执行相同的操作
为了得到更准确的结果,您可能需要更复杂的技术。你可以查阅数值方法,例如。你了解这背后的物理原理吗?加速度、速度和位置之间的关系?是的,我想我理解它们。但是当加速度不是我们可以推导的适当函数时,我不理解如何找到位置值。这里的加速度值只是准时值。如果你有一些解决方案或提示,我会非常高兴……即使你认为我不懂什么,你能帮我一下吗?什么类型的
位置向量
?这是一个双[]
?Ajavax.vecmath.Vector3d
?我所有的向量都是表:float[3]。如果只在常规采样点提供加速度,龙格-库塔法或单步法不会有多大帮助。您需要能够评估(相对)任意状态下的加速度。您可以使用显式多步骤方法()来获得更高的错误顺序。