Ich habe ein Array: int [] [] rasen = new int [980] [1280];Berechnung jedes kartesischen Punktes in einem Kreis
welche die Werte der Höhe der Blätter im Rasen speichert.
In meiner Simulation habe ich einen Roboter, der um den Rasen geht und die Klingen schneidet.
Mein Roboter hat die Form eines Kreises mit einem Durchmesser (rDurchmesser). Das Koordinatensystem ist mit Double gemacht und mein Rasen ist in Integer.
Ich habe zwei "Algorithmen" entwickelt, mit denen der Roboter den Rasen schneiden kann, aber ich bin nicht zufrieden, weil die Genauigkeit meiner Algorithmen nicht hoch genug ist und die Leistung auch nicht.
Meine Frage ist, gibt es einen Weg, dies zu tun als die Ideen, die ich bereits gedacht habe?
Oder muss ich die Implementierung meines Rasens ändern, um bessere Ergebnisse zu erzielen?
Fühlen Sie sich frei, etwas zu fragen, wenn ich nicht klar genug war. Hier
ist der Code für meine beiden Algorithmen (k steht für den Roboter), centerPosition gibt das Zentrum meines Roboters (so der Mittelpunkt des Kreises)
approach with square
int bottomLeftCornerX = (int) (k.getCenterPosition().getX() - simulParams.getKDiameter()/2);
int bottomLeftCornerY = (int) (k.getCenterPosition().getY() - simulParams.getKDiameter()/2);
for (int i = bottomLeftCornerX; i < bottomLeftCornerX + simulParams.getKDiameter(); i++) {
for (int j = bottomLeftCornerY; j < bottomLeftCornerY + simulParams.getKDiameter(); j++) {
((LawnArea) lawn.getBladeHeight()).cutBladeInArea(j, i);
}
}
Und hier der mit dem Kreis Ansatz (im Grunde ist es die circonférence formule in wikipedia ...):
for (int r = 0; r < simulParams.getKDiameter()/2; r++) {
for (double t = 0; t < 2 * Math.PI; t = t + 0.1) {
Point2D p = circumference(k.getCenterPosition().getX(), k.getCenterPosition().getY(), t, r);
int intX = (int) Math.ceil(p.getX());
int intY = (int) Math.ceil(p.getY());
((LawnArea) lawn.getBladeHeight()).cutBladeInArea(intY, intX);
}
}
}
Warum nicht einfach den Mittelpunkt-Kreis-Algorithmus verwenden, sondern die Koordinaten in einem Array speichern und dann den Kreis zeilenweise füllen? – harold