public float4( double _x, double _y, float2 _zw ) { x = (float) _x; y = (float) _y; z = _zw.x; w = _zw.y; }
public float4( float2 _xy, float2 _zw ) { x = _xy.x; y = _xy.y; z = _zw.x; w = _zw.y; }
public float4( float2 _xy, double _z, double _w ) { x = _xy.x; y = _xy.y; z = (float) _z; w = (float) _w; }
public float4( double _x, float2 _yz, double _w ) { x = (float) _x; y = _yz.x; z = _yz.y; w = (float) _w; }
public float3( float2 _xy, double _z ) { x = _xy.x; y = _xy.y; z = (float) _z; }
public float3( double _x, float2 _yz ) { x = (float) _x; y = _yz.x; z = _yz.y; }
public static float4 _float4( double _x, double _y, float2 _zw ) { return new float4( _x, _y, _zw ); }
public static float4 _float4( float2 _xy, float2 _zw ) { return new float4( _xy, _zw ); }
public static float4 _float4( float2 _xy, double _z, double _w ) { return new float4( _xy, _z, _w ); }
public static float4 _float4( double _x, float2 _yz, double _w ) { return new float4( _x, _yz, _w ); }
public static float3 _float3( double _x, float2 _yz ) { return new float3( _x, _yz ); }
public static float3 _float3( float2 _xy, double _z ) { return new float3( _xy, _z ); }
public float2 normalize( float2 _value ) { float InvLength = 1.0f / length( _value ); return _value * InvLength; }
public float length( float2 _value ) { return (float) Math.Sqrt( dot( _value, _value ) ); }
public float dot( float2 a, float2 b ) { return a.x*b.x + a.y*b.y; }