public Point[] PixelsBetweenPoints(Point p1, Point p2, int spacing)
{
if (spacing < 1) spacing = 1;
int xDiff = p2.X - p1.X;
int yDiff = p2.Y - p1.Y;
double maxWidth = Math.Max(Math.Abs(xDiff), Math.Abs(yDiff));
double xDelta = (xDiff / maxWidth) * spacing;
// Console.Out.WriteLine("xDelta: " + xDelta);
double yDelta = (yDiff / maxWidth) * spacing;
// Console.Out.WriteLine("yDelta: " + yDelta);
CustomArrayList<Point> pointList = new CustomArrayList<Point>();
Point currentPoint = p1;
Point previousPoint = new Point(-100, -100);
double currentX = p1.X, currentY = p1.Y;
for (int i = 0; i < maxWidth / spacing; i++)
{
currentX += xDelta;
currentY += yDelta;
currentPoint.X = (int)currentX;
currentPoint.Y = (int)currentY;
Point newPoint = new Point(currentPoint.X, currentPoint.Y);
if (previousPoint != null && !previousPoint.Equals(newPoint))
{
// Console.Out.WriteLine(i + ". Adding point to list: " + newPoint);
pointList.AddLast(newPoint);
}
previousPoint = newPoint;
}
return pointList.ToArray();
}