Java2D oder Java3D ? Und leider kein Standardproblem der
Computergraphik…
Java2D um genauer zu sein benutze ich Draw2d, das Problem beruht zum Glück nur auf einem 2D-Edtior.
Da scheint im Algorithmus für die Zeichnung der
(x,y,z)-Koordinaten etwas nicht zu stimmen. Ein bisschen
Programmcode könnte da evtl. weiterhelfen.
Der Algorithmus stimmt ist aber nur für Rechtecke, ich habe noch keien Algorithmus für ein Dreieck oder ein Hexagon, hier der Programmcode zur Berechnung des Anschlusspunktes bei einem Rechteck:
public Point getLocation(Point reference) {
Rectangle r = Rectangle.SINGLETON;
r.setBounds(getBox());
r.translate(-1, -1);
r.resize(1, 1);
getOwner().translateToAbsolute(r);
float centerX = r.x + 0.5f \* r.width;
float centerY = r.y + 0.5f \* r.height;
if (r.isEmpty() || (reference.x == (int)centerX && reference.y == (int)centerY))
return new Point((int)centerX, (int)centerY); //This avoids divide-by-zero
float dx = reference.x - centerX;
float dy = reference.y - centerY;
//r.width, r.height, dx, and dy are guaranteed to be non-zero.
float scale = 0.5f / Math.max(Math.abs(dx) / r.width, Math.abs(dy) / r.height);
dx \*= scale;
dy \*= scale;
centerX += dx;
centerY += dy;
return new Point(Math.round(centerX), Math.round(centerY));
}
Also so ähnlich wie hier:
| o-|------>o
Ja so in etwa, nur das der Anschlusspunkt überall auf der Außenlinie der Figur sein darf.
Nur dazu fehlt mir einfach die Formel bzw. habe ich
diese noch nicht gefunden.
Dafür gibt es keine allgemeine Formel, da alles vom Einzelfall
abhängt. Die Menge an if-Abfragen (wurde ein Punkt einer Ebene
getroffen ? Wenn ja, wie heisst er ?) dürfte aber sehr
rechenintensiv werden…
Und ob die ‚Hesse’sche Normalform‘ hier weiterhelfen kann ?
Da ist nicht gut, denn es ist eher unbedeutend um stark rechenintensiv zu werden. Naja im Moment würde mir ja eine Formel bezüglich einem Dreieck oder einem Hexagon weiterhelfen.
Leider habe ich durch googeln bis jetzt nicht gefunden, vielleicht benutze ich auch die falschen Suchparameter.
MFG
TobGrenadier