DistanceTo() public method

Calculate Euclidean distance between two points.
public DistanceTo ( DoublePoint anotherPoint ) : double
anotherPoint DoublePoint Point to calculate distance to.
return double
Ejemplo n.º 1
0
        public AForge.DoublePoint getNearestPoint(AForge.DoublePoint point)
        {
            DoublePoint closestPoint = points[0];
            double      distance2P, minDistance = closestPoint.DistanceTo(point);

            foreach (DoublePoint p in points)
            {
                distance2P = point.DistanceTo(p);
                if (distance2P < minDistance)
                {
                    closestPoint = p;
                    minDistance  = closestPoint.DistanceTo(point);
                }
            }

            return(closestPoint);
        }
Ejemplo n.º 2
0
        /*
         * This function firstly calculates the closest point, drives towards it and finally starts the path.
         */
        public override void calculateNextMove(AForge.DoublePoint robotPosition, double speed, AForge.DoublePoint heading, List <Robot> neighbors, out double referenceSpeed, out AForge.DoublePoint referenceHeading)
        {
            if (!onLine)
            {
                pointCount = 0;
                double distance = robotPosition.DistanceTo(points[pointCount]);

                for (int i = 0; i < points.Count(); i++)
                {
                    if (distance > points[i].DistanceTo(robotPosition))
                    {
                        pointCount = i;
                        distance   = points[pointCount].DistanceTo(robotPosition);
                    }
                }

                if (distance < closeUpLimit)
                {
                    onLine = true;
                }
                else
                {
                    goToPoint.calculateNextMove(points[pointCount], robotPosition, speed, heading, neighbors, out referenceSpeed, out referenceHeading);
                    return;
                }
            }

            if (onLine)
            {
                double distance = robotPosition.DistanceTo(points[pointCount]);
                if (distance <= closeUpLimit)
                {
                    if (direction == 1)
                    {
                        pointCount = (pointCount >= points.Count() - 1 ? 0 : pointCount + direction);
                    }
                    else
                    {
                        pointCount = (pointCount >= 1 ? points.Count() - 1 : pointCount + direction);
                        //pointCount = (pointCount > 1 ? pointCount - 1 : points.Count() - 1);  //Shouldn't it be this?
                    }
                }
                else
                {
                    onLine = false;
                }


                goToPoint.calculateNextMove(points[pointCount], robotPosition, speed, heading, neighbors, out referenceSpeed, out referenceHeading);
                if (fifoStrategy != null)
                {
                    fifoStrategy.calculateNextMove(robotPosition, referenceSpeed, referenceHeading, neighbors, out referenceSpeed, out referenceHeading);
                }
                return;
            }

            //referenceSpeed = speed;   //uncomment if using m3pi robots

            //$$$$$Changes/Additions made for RC cars$$$$$//
            referenceSpeed = Program.testSpeed;
            //$$$$$$$$$$//

            referenceHeading = heading;
        }