Example #1
0
        private void UpdateCenterAxis()
        {
            Vector3d Diagonal = new Vector3d(XMax - XMin, YMax - YMin, ZMax - ZMin);
            Vector3d Opposite1, Opposite2;

            double max = MaxSize - 0.5;

            if (max < Diagonal.X)
            {
                // x-axis
                Opposite1 = new Vector3d(0, YMin + ((YMax - YMin) / 2.0), 0);
                Opposite2 = new Vector3d(0, 0, ZMin + ((ZMax - ZMin) / 2.0));
            }
            else if (max < Diagonal.Y)
            {
                // y-axis
                Opposite1 = new Vector3d(XMin + ((XMax - XMin) / 2.0), 0, 0);
                Opposite2 = new Vector3d(0, 0, ZMin + ((ZMax - ZMin) / 2.0));
            }
            else
            {
                // z-axis
                Opposite1 = new Vector3d(XMin + ((XMax - XMin) / 2.0), 0, 0);
                Opposite2 = new Vector3d(0, YMin + ((YMax - YMin) / 2.0), 0);
            }

            CenterAxis = new StraightLine(Opposite1, Opposite2 - Opposite1);
        }
Example #2
0
 public static double DistanceToStraightLine(this Vector3d p, StraightLine line)
 {
     return(Vector3d.Cross(p - line.Point, line.Direction).Length / line.Direction.Length);
 }