我正在 Delphi XE2 中寻找类似于的函数Inc()
这允许我从当前的度数中添加/减去一定的度数并产生新的度数。例如,如果我当前有一个点围绕圆 5 度,并且我想减去 10,则不应得到 -5 度,而是 355 (360 - 5)。与添加过去的 360 相同 - 当达到 360 时它应该返回到 0。
Delphi 中是否已经有类似的东西,所以我不必重新编写它?也许在Math
unit?
uses
System.SysUtils,Math;
Function WrapAngle( angle : Double) : Double;
Const
modAngle : Double = 360.0;
begin
Result := angle - modAngle*Floor(angle/modAngle);
end;
begin
WriteLn(FloatToStr(WrapAngle(-5)));
WriteLn(FloatToStr(WrapAngle(5-720)));
WriteLn(FloatToStr(WrapAngle(360)));
ReadLn;
end.
产生结果:
355
5
0
Update:
正如@Giel 发现的,在 XE3 中有一个新功能DegNormalize()
哪个可以完成这项工作。甚至快了 25% 左右。诀窍是更换Floor()
打电话给Int()
相反,如果结果为负,则添加modAngle
到结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)