Esempio n. 1
0
 public static Point3D PointOntoCircle(Circle3D circle, Point3D point)
 {
     var plane = new Plane3D(circle.Origin, circle.Normal);
     var point3D = PointOntoPlane(plane, point);
     Distance3D.Between(point, point3D);
     var vector3D = circle.Origin - point3D;
     vector3D.Normalise();
     return new Point3D();
 }
Esempio n. 2
0
 public static Point3D PointOntoLine(Line3D line, Point3D point)
 {
     var vector3D = line.Origin - point;
     Point3D result;
     if (Math.Abs(vector3D.Length() - 0.0) < 0.001)
     {
         result = new Point3D(point);
     }
     else
     {
         var scalar = Vector.Dot(vector3D, line.Direction);
         result = line.Origin + (Vector3D) ((Point3D) (line.Direction*scalar));
     }
     return result;
 }
Esempio n. 3
0
 private static double PointToLine(Line3D line, Point3D point)
 {
     return Vector3D.Cross(line.Direction, line.Origin - point).Length();
 }
Esempio n. 4
0
 private static double LineToLine(Line3D line1, Line3D line2, out Point3D closestPoint1,
     out Point3D closestPoint2)
 {
     var origin = line1.Origin;
     var origin2 = line2.Origin;
     var direction = line1.Direction;
     var direction2 = line2.Direction;
     var vector3D = origin - origin2;
     var num = Vector.Dot(-direction, direction2);
     var num2 = Vector.Dot(vector3D, direction);
     var num3 = vector3D.Length()*vector3D.Length();
     var num4 = Math.Abs(1.0 - num*num);
     double num7;
     double num8;
     double d;
     if (num4 > 1E-05)
     {
         var num5 = Vector.Dot(-vector3D, direction2);
         var num6 = 1.0/num4;
         num7 = (num*num5 - num2)*num6;
         num8 = (num*num2 - num5)*num6;
         d = num7*(num7 + num*num8 + 2.0*num2) + num8*(num*num7 + num8 + 2.0*num5) + num3;
     }
     else
     {
         num7 = -num2;
         num8 = 0.0;
         d = num2*num7 + num3;
     }
     closestPoint1 = origin + new Vector3D(num7*direction);
     closestPoint2 = origin2 + new Vector3D(num8*direction2);
     return Math.Sqrt(d);
 }
Esempio n. 5
0
 public static double PointToSphere(Sphere3D sphere, Point3D point)
 {
     return (point - sphere.Origin).Length() - sphere.Radius;
 }
Esempio n. 6
0
 public static double PointToCircle(Circle3D circle, Point3D point)
 {
     var plane = new Plane3D(circle.Origin, circle.Normal);
     var point3D = Project3D.PointOntoPlane(plane, point);
     Between(point, point3D);
     var vector3D = circle.Origin - point3D;
     vector3D.Normalise();
     var p = new Point3D();
     return PointToPoint(point, p);
 }
Esempio n. 7
0
 public Line3D(Point3D origin, Vector3D direction)
 {
     Origin = origin;
     Direction = direction;
     Direction.Normalise();
 }
Esempio n. 8
0
 public Sphere3D()
 {
     Origin = new Point3D();
     Radius = 0.0;
 }
Esempio n. 9
0
 public Point3D Centroid(Collection<Point3D> points)
 {
     var count = points.Count;
     var num = 0.0;
     var num2 = 0.0;
     var num3 = 0.0;
     foreach (var current in points)
     {
         num += current.X;
         num2 += current.Y;
         num3 += current.Z;
     }
     var point3D = new Point3D(num/count, num2/count, num3/count);
     Transform = new TransformationMatrix3D(new Vector3D(point3D.X, point3D.Y, point3D.Z), new RotationMatrix3D());
     CalculateErrors(points, point3D);
     return point3D;
 }
Esempio n. 10
0
 public Point3D(Point3D point)
 {
     _position = point._position;
 }
Esempio n. 11
0
 private bool Equals(Point3D other)
 {
     return Equals(_position, other._position);
 }
Esempio n. 12
0
 public static Vector3D Subtract(Point3D p1, Point3D p2)
 {
     return new Vector3D(p2.X - p1.X, p2.Y - p1.Y, p2.Z - p1.Z);
 }
Esempio n. 13
0
 public static Collection<Point3D> Multiply(Collection<TransformationMatrix3D> transforms, Point3D point)
 {
     var collection = new Collection<Point3D>();
     foreach (var current in transforms)
     {
         collection.Add(current*point);
     }
     return collection;
 }
Esempio n. 14
0
 public static bool Equals(Point3D p1, Point3D p2)
 {
     return p1 == p2;
 }
Esempio n. 15
0
 public static Point3D Add(Point3D point, Vector3D vec)
 {
     return new Point3D
     {
         X = point.X + vec.X,
         Y = point.Y + vec.Y,
         Z = point.Z + vec.Z
     };
 }
Esempio n. 16
0
 private static double PointToPlane(Plane3D plane, Point3D point)
 {
     return Vector.Dot(plane.Normal, point - plane.Point);
 }
Esempio n. 17
0
 private static double PointToPoint(Point3D p1, Point3D p2)
 {
     return (p1 - p2).Length();
 }
Esempio n. 18
0
 public static Point3D PointOntoPlane(Plane3D plane, Point3D point)
 {
     var vec = plane.Point - point;
     var vector3D = Vector3D.Cross(Vector3D.Cross(vec, plane.Normal), plane.Normal).Normalised();
     return plane.Point + (Vector3D) ((Point3D) (vector3D*Vector.Dot(vec, vector3D)));
 }
Esempio n. 19
0
 private Vector Circle3DErrorFunction(Vector vec)
 {
     var vector = new Vector(_solver.NumEquations);
     var index = 0;
     var point3D = new Point3D(vec[0], vec[1], vec[2]);
     var plane = new Plane3D(point3D, new Vector3D(vec[3], vec[4], vec[5]));
     foreach (var current in _measuredPoints)
     {
         var p = Project3D.PointOntoPlane(plane, current);
         var vector3D = point3D - p;
         vector3D.Normalise();
         var point3D2 = new Point3D();
         vector[index++] = current.X - point3D2.X;
         vector[index++] = current.Y - point3D2.Y;
         vector[index++] = current.Z - point3D2.Z;
     }
     vector[index] = new Vector3D(vec[3], vec[4], vec[5]).Length() - 1.0;
     return vector;
 }
Esempio n. 20
0
 public static Point3D PointOntoSphere(Sphere3D sphere, Point3D point)
 {
     var vector3D = point - sphere.Origin;
     vector3D.Normalise();
     return new Point3D();
 }
Esempio n. 21
0
 public Sphere3D(Point3D origin, double radius)
 {
     Origin = origin;
     Radius = radius;
 }
Esempio n. 22
0
 public Plane3D(Point3D point, Vector3D normal)
 {
     Point = point;
     Normal = normal;
 }