Winkelberechnung von Kreisbögen

Neue Frage »

Polanski Auf diesen Beitrag antworten »
Winkelberechnung von Kreisbögen
Meine Frage:
Hallo!

Ich möchte in einen vollständigen Graphen den Winkel in einem Weg (der Weg ist ein Zyklus z.B. ein Dreieck wobei V die Menge der Knoten ist) berechnen.

Eine Kante kann dabei aus Linien, Splines oder Kreisbögen bestehen.
Berechnet werden die Winkel von Splines mithilfe der Tangenten [Abb1]
Dabei werden immer die Winkel der Tangenten zwischen den Splines berechnet und mit den Eingangs- bzw. Ausgangswinkel an den Vertices aufsummiert.

Mit Splines funktioniert das alles schon recht gut. Mein Problem sind die Kreisbögen:
Ein Kreisbogen besteht aus 3 Punkten.
Als erstes berechne ich mir die Richtungsvektoren vom Mittelpunkt des Kreises zu Anfangs und Endpunkt.
Danach die Normalvektoren zu den Richtungsvektoren -> Das sind meine Tangenten... oder sollten es zumindest sein, da ich leider nicht weiß in welcher Richtung der Normalvektor stehen soll (mann kann den dritten Punkt so verschieben dass sich die Tangenten umdrehen, somit bekommt man den falschen Gesamtwinkel des Weges heraus). [Abb2]
Bei den Splines ist es einfach, ich muss mir nur ansehen welcher der gemeinsame Vertex der beiden Kanten ist und ggf die Tangente invertieren.
Das geht aber leider bei den Kreisbögen nicht, ich habe ja 2 Normalvektoren und diese können je nach Stellung des 3. Kontrollpunktes nach links oder rechts gehen.

Den Winkel eines Kreisbogens anders zu berechnen hilft mir nichts, ich benötige ja die richtigen Tangenten um den Eingangswinkel bzw. Ausgangswinkel zu finden.

Die Frage ist also, wie finde ich herraus, in welcher Richtung die Normalvektoren zu stehen haben.

[Abb1] http://dl.dropbox.com/u/8560431/Abb1.png
(Tangenten von Splines/Linien sind grün eingezeichnet)

[Abb2] http://dl.dropbox.com/u/8560431/Abb2.png
(Tangenten von Kreisbögen sind violett eingezeichnet,
Der Weg im Graphen ist wie oben beschrieben,
'c' bezeichnet den 3. Punkt des Kreisbogens,
Bild links -> Tangenten stehen richtig, Bild rechts ->
Tangenten sind invertiert, stehen also falsch)

PS: Die Tangenten der Splines/Linien (grün) sind evtl. beim zeichnen falsch eingezeichnet, werden vom Programm aber korrekt invertiert, wichtig sind nur die tangenten der Kreisbögen (violett)

Meine Ideen:
Wenn ich es schaffen würde das beide Tangenten nach "oben" sehen (zum 3. Kontrollpunkt) müsste ich nur den Punkt invertieren den die beiden Vertices nicht gemeinsam haben. Wär zumindest meine Idee.
Aber wie das geht...
iForReal Auf diesen Beitrag antworten »

Nur Zur Hilfe; da Formatierung fehlt:

Zitat:
[Abb1] http://dl.dropbox.com/u/8560431/Abb1.png (Tangenten von Splines/Linien sind grün eingezeichnet) [Abb2] http://dl.dropbox.com/u/8560431/Abb2.png (Tangenten von Kreisbögen sind violett eingezeichnet, Der Weg im Graphen ist wie oben beschrieben, 'c' bezeichnet den 3. Punkt des Kreisbogens, Bild links -> Tangenten stehen richtig, Bild rechts -> Tangenten sind invertiert, stehen also falsch)


[Abb1]
[attach]23947[/attach]


[Abb2]
[attach]23949[/attach]


MfG

ForReal

edit von sulo: Habe die Grafiken als Dateianhänge eingefügt.
riwe Auf diesen Beitrag antworten »

wo ist der 3.punkt (kontrollpunkt) verwirrt

so in etwa verwirrt
Polanski Auf diesen Beitrag antworten »

@riwe
ja, genau so, der 3. Kontrollpunkt ist das 'c' in der Mitte des kreises, sieht man leider nicht so gut in den Abbildungen.
Leopold Auf diesen Beitrag antworten »

Ich vermute, daß der Kreisbogen in der Reihenfolge (Anfangspunkt), (Kontrollpunkt), (Endpunkt) durchlaufen wird. Sollen dann die Tangentialvektoren auch in dieser Richtung zeigen? Ich gehe einmal davon aus.

Die Vektoren



stehen senkrecht aufeinander. Dabei geht aus durch Linksdrehung (genauer: Drehung gegen den Uhrzeigersinn) hervor.

Außer scheint auch der Kreismittelpunkt bekannt zu sein. Wenn der Kreis nun positiv, also gegen den Uhrzeigersinn, durchlaufen wird, dann zeigt der Tangentialvektor in die richtige Richtung. Wird der Kreis dagegen negativ durchlaufen, ist der korrekte Tangentialvektor. Für gilt Entsprechendes. Somit brauchst du nur noch ein Kriterium, das dir anhand der Punkte angibt, in welchem Sinn der Kreis durchlaufen wird.

Wird der Kreis positiv durchlaufen, dann ist die Basis (Reihenfolge hier wichtig) negativ orientiert, die Determinante daher negativ.
Wird der Kreis dagegen negativ durchlaufen, dann ist die Basis positiv orientiert, ihre Determinante also positiv.

Kommt es damit hin?
riwe Auf diesen Beitrag antworten »

besser kann man es nicht erklären Gott

der kreismittelpunkt ergibt sich aus den 3 (nicht kollinearen) punkten, vermute ich Augenzwinkern
 
 
Polanski Auf diesen Beitrag antworten »

jap, kommt genau dorthin, die Tangenten stimmen jetzt smile

Wirklich sehr cool, großes Danke!! Tanzen
Polanski Auf diesen Beitrag antworten »

@riwe
genau so ist es
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »