2016-09-15 1 views
0

Der Titel sagt alles. Bei einem gegebenen Bogen mit (zum Beispiel):Bei einem Bogen mit einem bekannten Anfang (x, y), Ende (x, y) und Winkel, wie kann ich seine Bounding Box berechnen?

Start Point: x = 53.34, y = 52.07 
End Point: x = 13.97, y = 52.07 
Angle: 180 degrees 

enter image description here Wie kann ich seinen Begrenzungsrahmen finden?

Obwohl ich in Python schreibe, ist puesdocode bevorzugt, so dass es für andere Menschen nützlich sein wird.

Danke!

-Tom

+0

Die Informationen (Startpunkt, Endpunkt, Winkel) ist eindeutig nicht einen Bogen identifizieren. In Ihrem Beispiel könnte es auch die andere Hälfte des Kreises sein (oder der Winkel wäre -180?). – CristiFati

+0

Kann ich in diesem Fall annehmen, dass ein positiver Winkel immer eine bestimmte Richtung bedeutet? (dh: Winkel = -180 für die andere Hälfte des Kreises) –

+0

Ich denke, dass [MathOverflow] (http://mathoverflow.net) oder [Math] (http://math.stackexchange.com) geeigneter wäre Orte für diese Frage. Als Antwort auf deine Frage: Ich nehme an, du kannst es. Um jedoch streng zu sein, verwenden Sie positive Winkelwerte für trigonometrische (gegen den Uhrzeigersinn) Winkel. – CristiFati

Antwort

1
h = Sqrt((start.x - end.x)^2 + (start.y - end.y)^2) 
or 
h = Math.Hypot(start.x - end.x, start.y - end.y) 

R = Abs(h/(2*Sin(Angle/2))) 

if angle <= Pi/2 
    top = end.y 
    left = end.x 
    bottom = start.y 
    right = start.x 
else if angle <= Pi 
    top = start.y - R 
    left = end.x 
    bottom = start.y 
    right = start.x 
else if angle <= 3*Pi/2 
    top = start.y - R 
    left = start.x - 2*R 
    bottom = end.y 
    right = start.x 
else 
    top = start.y - R 
    left = start.x - 2*R 
    bottom = start.y + R 
    right = start.x 
+0

Super! Meine Python-Version: http://www.tutorialspoint.com/execute_python_online.php?PID=0Bw_CjBb95KQMSElRZk90cnh4dWs –

+0

Eigentlich bin ich mir nicht sicher, ob es funktioniert - ich erwarte einen Unterschied zwischen dem oberen und unteren Rand zu sehen (Höhe der Bounding Box) 39.370 sein. –

+0

Für Ihr Beispiel R = (53.34-13.97) /2=39.37/2=19.685 - das ist Box Höhe. Es ist eine Breite von 39,37. – MBo

Verwandte Themen