首页 > 代码库 > 【Spine】Spine Runtime for Delphi移植笔记(二) - spine.math
【Spine】Spine Runtime for Delphi移植笔记(二) - spine.math
//////////////////////////////////////////////////////////////////////////////// //Generic delphi runtime v3.6 for Spine animation tool // //Runtime port by cjk (hzi1980@163.com) // //////////////////////////////////////////////////////////////////////////////// unit spine.math; interface type TSpineMath = class public const PI2 = PI * 2; RadDeg = 180.0 / PI; DegRad = PI / 180; RadFull = PI * 2; DegFull = 360; public class function Sin(const radians: Single): Single; static; class function Cos(const radians: Single): Single; static; class function SinDeg(const degrees: Single): Single; static; class function CosDeg(const degrees: Single): Single; static; class function Atan2(const x,y: Single): Single; static; class function Clamp(const value, min, max: Single): Single; static; end; implementation { TSpineMath } class function TSpineMath.Atan2(const x, y: Single): Single; var lAtan: Single; lZ: Single; begin if x = 0 then begin if y > 0 then exit(PI / 2); if y = 0 then exit(0); exit(-PI / 2); end; lZ:= y / x; if Abs(lZ) < 1 then begin lAtan:= lZ / (1 + 0.28 * lZ * lZ); if x < 0 then begin if y < 0 then exit(lAtan - PI) else exit(lAtan + PI); end; exit(lAtan); end; lAtan:= PI / 2 - lZ / (lZ * lZ + 0.28); if y < 0 then result:= lAtan - PI else result:= lAtan; end; class function TSpineMath.Clamp(const value, min, max: Single): Single; begin if value < min then exit(min); if value > max then exit(max); result:= value; end; class function TSpineMath.Cos(const radians: Single): Single; begin result:= System.Cos(radians); end; class function TSpineMath.CosDeg(const degrees: Single): Single; begin result:= System.Cos(degrees * DegRad); end; class function TSpineMath.Sin(const radians: Single): Single; begin result:= System.Sin(radians); end; class function TSpineMath.SinDeg(const degrees: Single): Single; begin result:= System.Sin(degrees * DegRad); end; end.
一些需要用到的数学函数
【Spine】Spine Runtime for Delphi移植笔记(二) - spine.math
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。