public static Vector3D TransformVector(this Matrix transform, Vector3D vector)
		{
			var transformed = transform*vector.Augment(true);
			return new Vector3D(transformed[0, 0], transformed[1, 0], transformed[2, 0]);
		}
        public static Vector3D TransformVector(this Matrix transform, Vector3D vector)
        {
            var transformed = transform * vector.Augment(true);

            return(new Vector3D(transformed[0, 0], transformed[1, 0], transformed[2, 0]));
        }
		public static Vector3D TransformPoint(this Matrix transform, Vector3D point)
		{
			var transformed = transform*point.Augment();
			return new Vector3D(transformed[0, 0], transformed[1, 0], transformed[2, 0]);
		}
        public static Vector3D TransformPoint(this Matrix transform, Vector3D point)
        {
            var transformed = transform * point.Augment();

            return(new Vector3D(transformed[0, 0], transformed[1, 0], transformed[2, 0]));
        }