Ejemplo n.º 1
0
        public double DistanceTo(LineEquation lf)
        {
            double valueAtCoord = lf.A * X + lf.B * Y + lf.C;

            valueAtCoord = Math.Abs(valueAtCoord);
            return(valueAtCoord / (Math.Sqrt(lf.A * lf.A + lf.B * lf.B)));
        }
Ejemplo n.º 2
0
        public float DistanceTo(LineEquation lf)
        {
            float valueAtCoord = (float)lf.A * X + (float)lf.B * Y + (float)lf.C;

            valueAtCoord = Math.Abs(valueAtCoord);
            return(valueAtCoord / (float)(Math.Sqrt(lf.A * lf.A + lf.B * lf.B)));
        }
Ejemplo n.º 3
0
        public Location2D Intersection(LineEquation lf)
        {
            if (this.IsSame(lf))
            {
                throw new Exception("The two functions are the same");
            }
            else if (this.IsParallel(lf))
            {
                throw new Exception("The two functions are parallel");
            }

            LineEquation tempThis = this * lf.A;
            LineEquation tempThat = lf * A;

            LineEquation subtraction = tempThis.Subtract(tempThat);

            double y = (-subtraction.C) / subtraction.B;
            double x = this.X(y);

            return(new Location2D(x, y));
        }
Ejemplo n.º 4
0
 /// <summary>
 /// BEVISLIGNENDE TING:
 /// Lav en ortogonal vector til linien.
 /// Lav en vektor fra et vilkårligt punkt på linien til punktet og projekter den på den ortogonale vektor.
 /// </summary>
 /// <param name="lf"></param>
 /// <returns></returns>
 public Vector2D VectorToLine(LineEquation lf)
 {
     return(new Vector2D(lf.PointOnLine(), this).Project(lf.OrthogonalVector()));
 }
Ejemplo n.º 5
0
 public Location2D ProjectToLine(LineEquation lf)
 {
     return(lf.PointX(0) + lf.DirectionVector().Project((new Vector2D(this, lf.PointX(0)))));
 }
Ejemplo n.º 6
0
 public bool IsOrthogonal(LineEquation lf)
 {
     return(A / B == lf.A / lf.B);
 }
Ejemplo n.º 7
0
 public bool IsParallel(LineEquation lf)
 {
     return(Misc.DoubleEquals(A / B, lf.A / lf.B));
 }
Ejemplo n.º 8
0
 public bool IsSame(LineEquation lf)
 {
     return(Misc.DoubleEquals(A / B, lf.A / lf.B) && Misc.DoubleEquals(A / C, lf.A / lf.B));
 }
Ejemplo n.º 9
0
 public LineEquation Subtract(LineEquation lf)
 {
     return(new LineEquation(A - lf.A, B - lf.B, C - lf.C));
 }
Ejemplo n.º 10
0
 /// <summary>
 /// BEVISLIGNENDE TING:
 /// Lav en ortogonal vector til linien.
 /// Lav en vektor fra et vilkårligt punkt på linien til punktet og projekter den på den ortogonale vektor.
 /// </summary>
 /// <param name="lf"></param>
 /// <returns></returns>
 public Vector2F VectorToLine(LineEquation lf)
 {
     return(new Vector2F((Location2F)lf.PointOnLine(), this).Project((Vector2F)lf.OrthogonalVector()));
 }
Ejemplo n.º 11
0
 public Location2F ProjectToLine(LineEquation lf)
 {
     return((Location2F)lf.PointX(0) + (Vector2F)lf.DirectionVector().Project((new Vector2F(this, (Location2F)lf.PointX(0)))));
 }
Ejemplo n.º 12
0
 /// <summary>
 /// Creates a circle function with loc as centre and lf as tangent.
 ///
 /// </summary>
 /// <param name="loc"></param>
 /// <param name="lf"></param>
 public Circle(Location2D loc, LineEquation lf)
 {
     A = loc.X;
     B = loc.Y;
     R = loc.DistanceTo(lf);
 }