Schnittpunkte zwischen zwei Graphics2D Elemente ermitteln.

Markus_667

Aktives Mitglied
Hallo Zusammen hier im Forum.

Ich suche nach einer möglichst einfachen Möglichkeit die Schnittpunkte zwischen zwei Graphics2D Elemente (Shapes) wie Ellipsen zu finden.

Bisher bin ich über die Methode intersects gestoplert, diese liefert aber nur true oder false zurück wenn ein Schnittpunkt vorhanden ist, aber leider nicht wo dieser sich befindet.

Kann mit jemand eine paar Tips geben wie ich das einfach erledigen kann ?

Vielen Dank schon mal an alle für eure Zeit
 
Sorry das hat mich aber auch nicht weiter gebracht, vielleicht denke ich zu kompliziert.

Ich benötige eigentlich nur den Schnittpunkt zwischen einem Rectangle2D und einer Line2D.
Die Line wird vom Mittelpunkt des Vierecks ausgehen aber erst am Ende des Vierecks sichtbar beginnen.
Die Linie soll dann mit der Maus gefasst werden und bewegt werden, dabei muss sie immer am Ende der Linie beginnen.
Hab schon einiges ausprobiert aber irgendwie komme ich nicht zum gewünschten Ergebnis.
Überdecken ist hier leider keine Option, da ich den genauen Punkt auslesen muss.
Bei einem Kreis war es einfach, da ich nur den Radius addieren musste, das Viereck bringt mich zum Verzweifeln.

Hatte auch schon überlegt mir einer Schleife alle Punkte des Vierecks auf intersection zu checken aber das ist recht umständlich.

Hat jemand vielleicht noch eine andere Idee ?
Bin für jeden Hinweis dankbar.
 
Hallo.

Also Beispiel:

Java:
public class Rectangle {
    private double length;
    private double width;

    public Rectangle(double l, double b) {
        length = l;
        width = b;
    }

    public double getDiagonal() {
        double hypo;

        hypo = length * length;
        hypo += width * width;

        return Math.sqrt(hypo);
    }

    public double getArea() {
        return length * width;
    }

    public double getCircumRadius() {
        return getDiagonal() / 2;
    }

    @Override
    public String toString() {
        return "Fläche: " + getArea() + ", Diagonale: " + getDiagonal() + ", Umkreisradius: " + getCircumRadius();
    }
}

Etwas zum lesen:

https://www.mathespass.at/klasse1/quadrat.php

Grüße
 
Hi,

das Problem läßt sich auf die Schnittpunktermittlung von zwei Geraden reduzieren. Die Gerade vom Mittelpunkt aus und eine der Seiten des Rechtecks. Die Start- und Endpunkte der Geraden kennst Du bzw. kannst sie berechnen. Danach ermittelst Du die beiden Gleichungen, die du jeweils nach x bzw. Y auflöst. Danach brauchst Du die beiden Gleichungen nur Gleichsetzen und umstellen. Damit erhältst Du eine Formel, mit der Du dann den Schnittpunkt berechnen kannst. Durch Abgleich der jeweiligen Endpunkte der vier Geraden des Rechteckes mit den Endpunkten der im Mittelpunkt des Rechtecks beginnenden Geraden kannst du bestimmen mit welcher Seite des Rechtecks Du vergleichen musst.
Wenn Du häufiger solche Probleme hast kann ich Dir folgendes Buch empfehlen: Computer Graphics: Principles and Practice. Von Foley im Addison Wesley Verlag.
Nicht günstig aber gut.

Gruß
Jörg
 
So ich gebe mal ein kurzes Feedback.

Ich habe es letztendlich mit Winkelfunktionen gelöst.
Anfangs und Endpunkt ausgelesen und dann mit der Winkelfunktion weitern den Schnittpunkt ermittelt.
Man muss dabei nur beachten in welchem Quadranten man sich befindet.
Also wie die Werte der Achsen vergeben werden.

Vielen Dank an alle hier im Forum... Klasse Sache wenn der Tag mal kein Ende nehmen will weil man an einer letztendlich doch simplen Sache hängt.
 

Neue Themen


Zurück
Oben