delphi – 是否有一个函数可以将圆的度数移过0?

delphi – 是否有一个函数可以将圆的度数移过0?,第1张

概述我正在寻找Delphi XE2中某个类似于Inc()的函数,它允许我从当前的度数加上/减去多个度数并产生新的度数.例如,如果我的圆周围有一个点为5度,我想减去10,我不应该得到-5度,而是355(360 – 5).与添加过去360相同 – 它应该在达到360时返回到0. 在Delphi中是否有这样的东西,所以我不必重写它?也许在数学单元? uses System.SysUtils,Math; 我正在寻找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.

产生结果:

3555 0

更新:

正如@GIEl发现的那样,在XE3中有一个新功能Degnormalize()可以完成这项工作.甚至快25%左右.诀窍是用Int()替换Floor()调用,如果结果为负,则将modAngle添加到结果中.

总结

以上是内存溢出为你收集整理的delphi – 是否有一个函数可以将圆的度数移过0?全部内容,希望文章能够帮你解决delphi – 是否有一个函数可以将圆的度数移过0?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1272986.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存