gpt4 book ai didi

delphi - 有没有一个函数可以将圆的度数移动到0以上?

转载 作者:行者123 更新时间:2023-12-03 14:55:58 25 4
gpt4 key购买 nike

我正在 Delphi XE2 中的某个地方寻找一个类似于 Inc() 的函数,它允许我从当前度数中添加/减去一定的度数并产生新的度数。例如,如果我当前有一个点围绕圆 5 度,并且我想减去 10,则不应得到 -5 度,而是 355 (360 - 5)。与添加过去的 360 相同 - 当达到 360 时它应该返回到 0。

Delphi 中是否已经有类似的东西,所以我不必重新编写它?也许在数学单元?

最佳答案

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

更新:

@Giel 发现,在 XE3 中,有一个新函数 DegNormalize() 可以完成这项工作。甚至快了 25% 左右。诀窍是用 Int() 替换 Floor() 调用,如果结果为负,则将 modAngle 添加到结果中.

关于delphi - 有没有一个函数可以将圆的度数移动到0以上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13327187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com