float.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package tamias
  2. //Float, a floating point type for Tamias, with some method sugar.
  3. import "math"
  4. import "fmt"
  5. type Float float32
  6. func F64Float(in float64) Float {
  7. return Float(in)
  8. }
  9. func (self Float) Float64() float64 {
  10. return float64(self)
  11. }
  12. func (self Float) Eqf(other float64) bool {
  13. return self == Float(other)
  14. }
  15. func (self Float) Equals(other Float) bool {
  16. return self == other
  17. }
  18. func (self Float) Sqrt() Float {
  19. return Float(math.Sqrt(self.Float64()))
  20. }
  21. func (self Float) Exp() Float {
  22. return Float(math.Exp(self.Float64()))
  23. }
  24. func (self Float) Floor() Float {
  25. return Float(math.Floor(self.Float64()))
  26. }
  27. func (a Float) Max(b Float) Float {
  28. if a > b {
  29. return a
  30. }
  31. return b
  32. }
  33. func (a Float) Min(b Float) Float {
  34. if a < b {
  35. return a
  36. }
  37. return b
  38. }
  39. func (a Float) Mod(b Float) Float {
  40. return Float(math.Mod(a.Float64(), b.Float64()))
  41. }
  42. func (a Float) Abs() Float {
  43. if a < 0.0 {
  44. return -a
  45. }
  46. return a
  47. }
  48. func (a Float) Sin() Float {
  49. return Float(math.Sin(a.Float64()))
  50. }
  51. func (a Float) Cos() Float {
  52. return Float(math.Cos(a.Float64()))
  53. }
  54. func (a Float) Tan() Float {
  55. return Float(math.Tan(a.Float64()))
  56. }
  57. func (a Float) Acos() Float {
  58. return Float(math.Acos(a.Float64()))
  59. }
  60. func (a Float) Asin() Float {
  61. return Float(math.Asin(a.Float64()))
  62. }
  63. func (a Float) Atan() Float {
  64. return Float(math.Atan(a.Float64()))
  65. }
  66. func (x Float) Atan2(y Float) Float {
  67. return Float(math.Atan2(y.Float64(), x.Float64()))
  68. }
  69. func (f Float) Clamp(min Float, max Float) Float {
  70. return f.Max(min).Min(max)
  71. }
  72. func (f1 Float) Lerp(f2 Float, t Float) Float {
  73. return (f1 * (1.0 - t)) + (f2 * t)
  74. }
  75. func (f1 Float) Flerpconst(f2 Float, d Float) Float {
  76. return f1 + (f2-f1).Clamp(-d, d)
  77. }
  78. func (a Float) VectForAngle() Vect {
  79. return V(a.Cos(), a.Sin())
  80. }
  81. var INFINITY = Float(math.Inf(1))
  82. func (self Float) String() string {
  83. return fmt.Sprintf("%f", self)
  84. }