Ich bin mir nicht sicher, ob ich Ihre Frage verstehe, aber versuchen Sie, ein Liniensegment so zu teilen?
Vorher:
A + -------------------- + B
Nach:
A + - | - - | - | - | - | - | - + B
Wo ist "zwei Bindestriche" der Mindestabstand? Wenn dies der Fall ist, dann gibt es unendlich viele Sätze von Punkten, die das erfüllen, es sei denn, Ihr minimaler Abstand kann genau die Länge des Segments teilen. Jedoch kann ein solcher Satz wie folgt erhalten werden:
- Finden der vektoriellen parametrischer Gleichung der Geraden
- die Gesamtzahl der Punkte (Boden (Länge/MinDistance) + 1)
- Schleife I aus 0 bis n, jeden Punkt entlang der Linie zu finden (nimmt, wenn Ihre Parametergleichung bei Temperaturen von 0 bis 1, t = ((float) i)/n)
[EDIT] nach jerryjvl Antwort sehen, ich glaube, dass der Code, den Sie wollen, ungefähr so lautet: (tun Sie dies in 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);
}
[Warning: Code wurde nicht geprüft]
Angesichts seines Prototyps, er will eine Liste von Punkten, aber ich denke, dass Ihre Interpretation, wie Sie sie auseinander teilen, richtig ist. –