我有一个“鼠标阅读器”类,可以将旋转变成 x、y、z。(这是一种第一人称相机)但我不希望这个人直接看他的轴,所以我这样做了:
if (!(Altitude + MouseCoordChange[1] > 269) && !(Altitude + MouseCoordChange[1] < 91))
{
我计算了检查,它很完美,它可以防止你过多地上下波动,但有时它会低于 91 和 269,这怎么可能?
谢谢你
我有一个“鼠标阅读器”类,可以将旋转变成 x、y、z。(这是一种第一人称相机)但我不希望这个人直接看他的轴,所以我这样做了:
if (!(Altitude + MouseCoordChange[1] > 269) && !(Altitude + MouseCoordChange[1] < 91))
{
我计算了检查,它很完美,它可以防止你过多地上下波动,但有时它会低于 91 和 269,这怎么可能?
谢谢你
你违反了 德摩根定律
换句话说:
!A && !B = !(A || B)
我怀疑你想要的是:
if (!((Altitude + MouseCoordChange[1] > 269) ||
(Altitude + MouseCoordChange[1] < 91)))
{
或者更清楚:
if ((Altitude + MouseCoordChange[1] <= 269) &&
(Altitude + MouseCoordChange[1] >= 91)))
{
好的,只是为了调试,试试这个逆逻辑。
if ( (Altitude + MouseCoordChange[1] < 91) && (Altitude + MouseCoordChange[1] > 269) )
{
//Do nothing here
}
else
{
//Do stuff here
}
Range-checking happens quite often so a template will be useful for that:
template< typename _T > bool inrange(_T first, _T last, _T value)
{
return ((value>=first) && (value<=last));
}
In your case:
if (inrange(91, 269, (Altitude + MouseCoordChange[1]))
{
//is in the range - do something
}
else
{
//is outside the range - do something
}