Kollisionen

Alles rund um die Programmierung mit Qt
Antworten
reuabreliz
Beiträge: 86
Registriert: 4. Oktober 2008 17:06

Kollisionen

Beitrag von reuabreliz »

Also ich habe ein Zeichenfenster das von QWidget abgeleitet ist. Ich habe eine Liste von einer Klasse Linie (QList<Linie>). Die Klasse Linie hat ein Element QPainterpath. Im paintEvent gehe ich alle Linien durch und zeichne sie mit QPainter ins Zeichenfenster.

Wie mache ich nun wenn ich wissen will wo sich 2 Linien berühren (falls sie es tun). Ich hätte mir gedacht ich Speichere alle Punkte in ein Array, aber meine Linien haben eine gewisse Breite. (Deshalb kann ich mir nicht nur den Punkt speichern oda) Was ist hier der beste und einfachste Lösungsweg?
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

für dem QPainterPath kannst du die funktionen

Code: Alles auswählen

bool contains ( const QPointF & point ) const
bool contains ( const QRectF & rectangle ) const
direkt
benutzen.
Für die linien würde ich mir jeweils (wie in einem anderen thread bereits vorgeschlagen) temporär ein QRect erzeugen und dort ebenfalls die contains() funktion nutzen.
reuabreliz
Beiträge: 86
Registriert: 4. Oktober 2008 17:06

Beitrag von reuabreliz »

Gibt es eine Funktion die von QLine alle Punkte zurückgibt. Weil QPainterpath kann ja nur Rechtecke und Punkte schaun ob sie vorhanden sind.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wo sich 2 Geraden schneiden ist einfache Geometrie. Schau doch mal in deinen Schulunterlagen nach.

Wo sich zwei QLineF schneiden, ist eine einfache Funktion => Doku

Und Hr. Bresenham hilft dir sicherlich um alle Punkte einer Linie zu ermitteln,
reuabreliz
Beiträge: 86
Registriert: 4. Oktober 2008 17:06

Beitrag von reuabreliz »

Ja und wie bekomme ich die 2 Linien. Ich habe Mal in der Docu gekuckt von QPainterPath und da steht eine funktion elementAt(int) heißt das, dass QPainterpath wenn ich eine Linie damit zeichne sich diese linie immer als ein Element abspeichert und, dass ich somit mit elementAt() dann eine QLine z.B.: zurückbekomme?
Antworten