vec3.monkey2 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. Namespace std.geom
  2. #rem monkeydoc @hidden
  3. #end
  4. Alias Vec3f:Vec3<Float>
  5. #rem monkeydoc @hidden
  6. #end
  7. Struct Vec3<T>
  8. Field x:T
  9. Field y:T
  10. Field z:T
  11. Method New()
  12. End
  13. Method New( t:T )
  14. x=t;y=t;z=t
  15. End
  16. Method New( x:T,y:T,z:T )
  17. Self.x=x;Self.y=y;Self.z=z
  18. End
  19. Method New( v:Vec2<T>,z:T )
  20. Self.x=v.x;Self.y=v.y;Self.z=z
  21. End
  22. Property X:T()
  23. Return x
  24. Setter( x:T )
  25. Self.x=x
  26. End
  27. Property Y:T()
  28. Return y
  29. Setter( y:T )
  30. Self.y=y
  31. End
  32. Property Z:T()
  33. Return z
  34. Setter( z:T )
  35. Self.z=z
  36. End
  37. Operator-:Vec3()
  38. Return New Vec3( -x,-y,-z )
  39. End
  40. Operator*:Vec3( v:Vec3 )
  41. Return New Vec3( x*v.x,y*v.y,z*v.z )
  42. End
  43. Operator/:Vec3( v:Vec3 )
  44. Return New Vec3( x/v.x,y/v.y,z/v.z )
  45. End
  46. Operator+:Vec3( v:Vec3 )
  47. Return New Vec3( x+v.x,y+v.y,z+v.z )
  48. End
  49. Operator-:Vec3( v:Vec3 )
  50. Return New Vec3( x-v.x,y-v.y,z-v.z )
  51. End
  52. Operator*:Vec3( s:Double )
  53. Return New Vec3( x*s,y*s,z*s )
  54. End
  55. Operator/:Vec3( s:Double )
  56. Return New Vec3( x/s,y/s,z/s )
  57. End
  58. Operator+:Vec3( s:T )
  59. Return New Vec3( x+s,y+s,z+s )
  60. End
  61. Operator-:Vec3( s:T )
  62. Return New Vec3( x-s,y-s,z-s )
  63. End
  64. Property Length:Double()
  65. Return Sqrt( x*x+y*y+z*z )
  66. End
  67. Method Dot:Double( v:Vec3 )
  68. Return x*v.x+y*v.y+z*v.z
  69. End
  70. Method Normalize:Vec3()
  71. Return Self/Length
  72. End
  73. Method Blend:Vec3( v:Vec3,alpha:Double )
  74. Return New Vec3( (v.x-x)*alpha+x,(v.y-y)*alpha+y,(v.z-z)*alpha+z )
  75. End
  76. Method ToString:String()
  77. Return "Vec3("+x+","+y+","+z+")"
  78. End
  79. End