这就是我目前正在做的事情,但我只是想知道是否有更好的方法?
如果变量已设置,我的运动学变量类只包含一个长双精度值和一个布尔值。我重载了 = 赋值运算符。
// v_f = v_o + a*t
bool KinematicEquations::equation_vat(KinematicVariable &vo, KinematicVariable &vf,
KinematicVariable &a, KinematicVariable &t)
{
if (vf.isUsed() && vo.isUsed() && a.isUsed())
t = (vf.value() - vo.value()) / a.value(); // t = (vf - vo)/a
else if (vf.isUsed() && vo.isUsed() && t.isUsed())
a = (vf.value() - vo.value()) / a.value(); // a = (vf - vo)/t
else if (vf.isUsed() && t.isUsed() && a.isUsed())
vo = vf.value() - a.value() * t.value(); // vo = vf - a*t
else if (vo.isUsed() && t.isUsed() && a.isUsed())
vf = vo.value() + a.value() * t.value(); // vf = vo + at
else
return false;
return true;
}