Schnittpunkt einer Geraden mit einer Figur

Hallo Experten,

ich suche eine Formel um den Schnittpunkt einer Geraden mit einer Figur zurückzugeben bzw. eine Übersicht solcher Formeln. Der Hintergrund ist ein Java-Programm, was eine Anschlusspunkt an einer Figur erstellt. Diese Punkte sind schon für ellipsen und Rechtecke vorhanden. Ich habe aber nun weitere Figuren erstellt (Dreieck, Hexagon). Wenn ich nun eine Figur mit der durch eine Pfeil verbinden, hängt dieser oft im leeren raum und ist nicht an der Figur angeschlossen.
Bei der Berechnung für den Punkt habe ich zwei Punkte. Als erstes habe kenne ich den Mittelpunkt der Figur und um was für eine Figur es sich handelt. Als zweites habe ich einen Punkt im Raum. Zurückgeben will ich nun den Schnittpunkt auf der Figur, wenn man eine Gerade zwischen dem Zentrum und dem Punkt zieht. Nur dazu fehlt mir einfach die Formel bzw. habe ich diese noch nicht gefunden. Ich hoffe es ist ein wenig klar geworden was ich meine.

Gruß TobGrenadier

Auch hallo.

ich suche eine Formel um den Schnittpunkt einer Geraden mit
einer Figur zurückzugeben bzw. eine Übersicht solcher Formeln.

Zumindest für eine Kugel wäre es einfach: (x,y,z)-Koordinaten Mittelpunkt + (x,y,z)-Bewegung der Länge r = (x,y,z)-Durchstosspunkt

Der Hintergrund ist ein Java-Programm, was einen Anschlusspunkt
an einer Figur erstellt.

Java2D oder Java3D ? Und leider kein Standardproblem der Computergraphik…

Diese Punkte sind schon für ellipsen
und Rechtecke vorhanden. Ich habe aber nun weitere Figuren
erstellt (Dreieck, Hexagon). Wenn ich nun eine Figur mit der
durch eine Pfeil verbinden, hängt dieser oft im leeren raum
und ist nicht an der Figur angeschlossen.

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.

Bei der Berechnung für den Punkt habe ich zwei Punkte. Als
erstes habe kenne ich den Mittelpunkt der Figur und um was für
eine Figur es sich handelt. Als zweites habe ich einen Punkt
im Raum. Zurückgeben will ich nun den Schnittpunkt auf der
Figur, wenn man eine Gerade zwischen dem Zentrum und dem Punkt
zieht.

 Also so ähnlich wie hier:
-----
| o-|------\>o
-----

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 ?

HTH
mfg M.L.

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

Also ich habe jetzt nach langem hin und her eine andere Lösung gewählt. Weil ich weiß woher die Verbindungen kommen habe ich folgendes gemacht:
1)Referenzpunkt über Dreieck:
Anschlußpunkt Dreieckspitze
2)Referenzpunkt unter Dreieck:
Anschlußpunkt auf der längsten Seite (Hypotenuse aber es ist
kein rechtwinkliges Dreieck), Berechnung erfolgt durch eine
Algorithmus.
3)Referenzpunkt auf Höhe der Schenkelseiten:
Anschlußpunkt auf der jeweiligen Seite in der Mitte.

Gruß TobGrenadier