123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- Namespace std.geom
- #rem monkeydoc @hidden
- #end
- Alias Vec4f:Vec4<Float>
- #rem monkeydoc @hidden
- #end
- Struct Vec4<T>
- Field x:T
- Field y:T
- Field z:T
- Field w:T
-
- Method New()
- End
-
- Method New( t:T )
- x=t;y=t;z=t;w=t
- End
-
- Method New( x:T,y:T,z:T,w:T )
- Self.x=x;Self.y=y;Self.z=z;Self.w=w
- End
-
- Method New( v:Vec3<T>,w:T )
- x=v.x;y=v.y;z=v.z;Self.w=w
- End
-
- Method New( v:Vec2<T>,z:T,w:T )
- x=v.x;y=v.y;Self.z=z;Self.w=w
- End
-
- Property X:T()
- Return x
- Setter( x:T )
- Self.x=x
- End
-
- Property Y:T()
- Return y
- Setter( y:T )
- Self.y=y
- End
-
- Property Z:T()
- Return z
- Setter( z:T )
- Self.z=z
- End
-
- Property W:T()
- Return w
- Setter( w:T )
- Self.w=w
- End
-
- Operator-:Vec4()
- Return New Vec4( -x,-y,-z,-w )
- End
-
- Operator*:Vec4( v:Vec4 )
- Return New Vec4( x*v.x,y*v.y,z*v.z,w*v.w )
- End
-
- Operator/:Vec4( v:Vec4 )
- Return New Vec4( x/v.x,y/v.y,z/v.z,w/v.w )
- End
-
- Operator+:Vec4( v:Vec4 )
- Return New Vec4( x+v.x,y+v.y,z+v.z,w+v.w )
- End
-
- Operator-:Vec4( v:Vec4 )
- Return New Vec4( x-v.x,y-v.y,z-v.z,w-v.w )
- End
-
- Operator*:Vec4( s:Double )
- Return New Vec4( x*s,y*s,z*s,w*s )
- End
-
- Operator/:Vec4( s:Double )
- Return New Vec4( x/s,y/s,z/s,w/s )
- End
-
- Operator+:Vec4( s:T )
- Return New Vec4( x+s,y+s,z+s,w+s )
- End
-
- Operator-:Vec4( s:T )
- Return New Vec4( x-s,y-s,z-s,w-s )
- End
-
- Property Length:Double()
- Return Sqrt( x*x+y*y+z*z )
- End
- Method Dot:Double( v:Vec4 )
- Return x*v.x+y*v.y+z*v.z+w*v.w
- End
-
- Method Normalize:Vec4()
- Return Self/Length
- End
-
- Method Blend:Vec4( v:Vec4,alpha:Double )
- Return New Vec4( (v.x-x)*alpha+x,(v.y-y)*alpha+y,(v.z-z)*alpha+z,(v.w-w)*alpha+w )
- End
-
- Method ToString:String()
- Return "Vec4("+x+","+y+","+z+","+w+")"
- End
- End
|