Я не уверен, что понимаю ваш вопрос, но вы пытаетесь разделить отрезок, как этот?
До:
A + -------------------- + B
После того, как:
A + - | - | - | - | - | - | - + B
Где "две черточки" - ваше минимальное расстояние? Если это так, тогда будет бесконечно много наборов точек, которые удовлетворяют этому, если только ваше минимальное расстояние не может точно разделить длину отрезка. Однако один такой набор может быть получен следующим образом:
- Найти векторное параметрическое уравнение прямой
- Найти общее количество очков (этаж (длина / миндистанция) + 1)
- Обведите i от 0 до n, находя каждую точку вдоль линии (если ваше параметрическое уравнение принимает t от 0 до 1, t = ((float) i) / n)
[EDIT]
После просмотра ответа jerryjvl я думаю, что код, который вам нужен, выглядит примерно так: (делает это в Java-ish)
List<Point> FindAllPointsInLine(Point start, Point end, float distance)
{
float length = Math.hypot(start.x - end.x, start.y - end.y);
int n = (int)Math.floor(length / distance);
List<Point> result = new ArrayList<Point>(n);
for (int i=0; i<=n; i++) { // Note that I use <=, not <
float t = ((float)i)/n;
result.add(interpolate(start, end, t));
}
return result;
}
Point interpolate(Point a, Point b, float t)
{
float u = 1-t;
float x = a.x*u + b.x*t;
float y = a.y*u + b.y*t;
return new Point(x,y);
}
[Внимание: код не был протестирован]