delphi – 是否有一个函数可以将圆的度数移过0?
发布时间:2020-12-15 09:49:59 所属栏目:大数据 来源:网络整理
导读:我正在寻找Delphi XE2中某个类似于Inc()的函数,它允许我从当前的度数加上/减去多个度数并产生新的度数.例如,如果我的圆周围有一个点为5度,我想减去10,我不应该得到-5度,而是355(360 – 5).与添加过去360相同 – 它应该在达到360时返回到0. 在Delphi中是否有
我正在寻找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添加到结果中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |