Bogen aus Startpunkt, Startrichtung und Endpunkt

Neue Frage »

CAD_Markus Auf diesen Beitrag antworten »
Bogen aus Startpunkt, Startrichtung und Endpunkt
Meine Frage:
Hallo!

Ich möchte eine Funktion in Autocad schreiben, mit der ich an einen Bogen oder eine Linie tangential einen Bogen ansetzen kann.

Wie kann ich im dreidimensionalen Raum mithilfe von Startpunkt, Startrichtung (als 3D-Vektor) und Endpunkt den Bogenzentrumspunkt, oder besser noch - einen Punkt auf dem Bogen (z.b. den Bogenmittelpunkt) ermitteln?

Weiterhelfen würde mir auch der "Bulge"-Wert (Ausbuchtung), der in Autocad mit dem tangens von 1/4 des eingeschlossenen Bogenwinkels berechnet wird.

Vielen Dank im voraus!
Gruß
Markus


Meine Ideen:
Zentrumspunkt=Schnittpunkt aus der Winkelhalbierenden und dem um 90Grad gedrehten Startrichtungsvektors

Aber das muss doch noch einfacher gehen?!
Lampe16 Auf diesen Beitrag antworten »
RE: Bogen aus Startpunkt, Startrichtung und Endpunkt
Mit "Bogen", nehme ich an, meinst Du einen Kreisbogen. Er liegt in der Ebene im Raum, die vom Startrichtungsvektor und vom Vektor Startpunkt Endpunkt aufgespannt wird. Mit dieser Vorstellung kannst Du den Bogenkreis-Mittelpunkt eindeutig bestimmen, im Prinzip so, wie Du es mit Lineal und Winkel machen würdest.
CAD_Markus Auf diesen Beitrag antworten »

Hallo Lampe16.

Ja, ich meine einen Kreisbogen. Gibt es da vielleicht eine Formel, in die man alle drei bekannten einsetzen kann?
Die Methode wie mit Bleistift und Lineal bekomme ich auch hin, aber ich befürchte, dass mir Autocad durch Rundungsfehler den Schnittpunkt zweier Linien im 3D-Raum nicht immer zuverlässig berechnet.

Gruß
Markus
Lampe16 Auf diesen Beitrag antworten »

Hi Markus,
für solche Aufgaben gibt es nur ausnahmsweise fertige Formel. Sie erfordern vielmehr den Rückgriff auf die Grundelemente (Vektoren, Operationen mit den Vektoren, Aufstellen und Lösen linearer Gleichungen oder Gleichungssysteme u.s.w.).

Mein Hinweis auf Winkeldreieck und Lineal war ganz ernst gemeint, nur dass Du das Hantieren damit durch das Aufstellen und Lösen von Gleichungen ersetzt. Bei räumlichen Aufgaben wird es mit dem echten Geodreieck ja auch schon etwas schwierig.

Wenn autocad Probleme macht, solltest Du es ganz schnell vergessen. Ich arbeite mit SCILAB. Das ist eine ernsthafte Mathematik-Freeware und hätte garantiert keine Schwierigkeiten mit dem Runden; aber damit will ich nichts gegen autocad sagen.
riwe Auf diesen Beitrag antworten »
RE: Bogen aus Startpunkt, Startrichtung und Endpunkt
kannst du ein paar werte herstellen, damit ich mein formelzeugs testen kann Augenzwinkern
Leopold Auf diesen Beitrag antworten »

Deine Problembeschreibung ist relativ unklar. Was meinst du mit Startpunkt, Startrichtung, Endpunkt? Sind das Start- und Endpunkt des Bogens? Und die Startrichtung? Ist das ein Tangentialvektor im Startpunkt des Bogens?

Ich interpretiere das jedenfalls einmal so und führe folgende Bezeichnungen ein:



Dann bekommst du mit



einen Normalenvektor der Ebene, in der sich alles abspielt (das Kreuz bezeichne das Vektorprodukt). Und der Vektor



zeigt dann von in Richtung (das sei der Mittelpunkt des Kreises, auf dem der Bogen liegt).

Wenn du jetzt die Symmetrieebene der Strecke (ein Normalenvektor ist ) mit der Geraden durch in Richtung schneidest, bekommst du .

Als fertige Formel habe ich



erhalten. Hierin sind die Ortsvektoren von und , und den Quadraten im Bruch liege das Skalarprodukt zugrunde.

Ein Beispiel:



Man berechnet:





Als Kreisradius hat man



Ich hoffe, so stimmt's.
 
 
CAD_Markus Auf diesen Beitrag antworten »

Super!!! Tanzen

Vielen Dank Leopold und danke auch an alle anderen.

Du hast Startpunkt, Endpunkt und Startrichtung genau richtig interpretiert.
Da meine Kenntnisse in Bezug auf Vektorrechnen schon etwas eingeschlafen sind, hätte ich die Formel so nicht hin bekommen.

Ich teste die Formeln heute Abend mal.
riwe Auf diesen Beitrag antworten »

das ergebnis von Leopold habe ich auch,
allerdings nicht so schön.

über mußte ich dann schon eine weile brüten.
spat, aber nicht zu spat, wie wir älpler zu sagen pflegen Augenzwinkern

den mittelpunkt B des kreisbogen findet man vermutlich am einfachsetn so:



CAD_Markus Auf diesen Beitrag antworten »

@Leopold:
Ich habe dein Wertebeispiel nachgezeichnet: Bis zur Berechnung von stimmen deine Formeln.
Das Ergebnis für stimmt aber nicht mit meiner gezeichneten Lösung überein.
Kann es sein, dass der Ausdruck: falsch ist? Durch Vektoren kann man doch meimem Wissen nach nicht teilen? verwirrt

Aber deine Erklärungen zu den Zwischenschritten hat mir doch noch sehr geholfen:
Ich habe mit den Autocad-Funktionen so berechnet wie du es beschrieben hast.
Dann habe ich die Symmetrieebene der Strecke erstellt und der Schnittpunkt der Ebene und des Vektors läßt sich mit den Autocad-Bordmitteln erechnen. So weit, so sehr schön.

@riwe:
In Autocad habe ich zunächst den Vektor vom Bogenzentrum bis zur Hälfte der Strecke normalisiert (mit Autocad) und ihn dann mit dem Bogenradius multipliziert um den Bogenmittelpunkt zu bekommen.
Dies funktioniert auch, solange der eingeschlossene Winkel des Bogens nicht größer als 180Grad ist.
Danach befindet sich der berechnete Punkt zwar noch auf dem Kreis, auf dem der Bogen liegt, ist dann aber leider auf der falschen Seite. traurig

Daraufhin habe ich deine Formeln ausprobiert: Führt leider zum gleichen Ergebnis!

Muss ich jetzt bei einem Bogenwinkel von >180Grad den oben genannten Vektor negieren, oder gibt es dafür noch eine andere Möglichkeit?

Vielen Dank im Voraus!
riwe Auf diesen Beitrag antworten »

ich bin mir sicher, die formeln für den mittelpunkt und radius stimmen.

und ich bin mir auch ziemlich bis sehr sicher, dass das ergebnis für dem bogenmittelpunkt richtig ist, unabhängig davon, wie groß der winkel PMQ ist, da dieser gar nicht vorkommt.

der "kritisierte" ausdruck ist auf jeden fall richtig.

aber ich werde mir das mal grafisch angucken Augenzwinkern

(kannst du einmal deine berechnung bekannt geben?)
Leopold Auf diesen Beitrag antworten »

Zitat:
Original von CAD_Markus
Kann es sein, dass der Ausdruck: falsch ist?


Das ist ein Skalarprodukt, also eine Zahl, im Nenner. Vielleicht hätte ich es besser so schreiben sollen:



Da riwe, wie er sagt, dasselbe Ergebnis wie ich hat, müßten wir uns beide in der Formel täuschen. Gut, kann natürlich sein. Aber wir haben die Formel unabhängig voneinander herausbekommen. Es spricht also einiges dafür, daß sie stimmt.
riwe Auf diesen Beitrag antworten »

ich habe mir das zeug nun grafisch angeschaut,
bei mir stimmt es.

mit deiner kritik des bogenmittelpunktes hast du recht!
ich habe erst jetzt verstanden, wo das problem liegt.

wahrscheinlich geht es einfacher, aber so geht´s auch:

Lampe16 Auf diesen Beitrag antworten »

Ich hoffe, ich störe nicht, aber - zur weiteren Konsolidierung der Ergebnsse - hier noch ein kleine Variante, die mit wenig Termumformungen verbunden war. Sie reproduziert das von Leopold angegebene Zahlenbeispiel und hat auch kein Problem mit Bögen über 180 °. Ich gebe den SCILAB-Code dazu an, weil der auch für nicht Eingeweihte leicht lesbar ist. Die Funktionen mit "$" im Namen berechnen das Vektor- oder das Skalarprodukt.

code:
1:
2:
3:
4:
5:
p=[-1;2;-4]; q=[-2;3;2]; t=[1;-1;2]
pq=-p+q; 
s=f$vcross(f$vcross(t,pq),t); 
m=p+f$vdot(pq,pq)/2/f$vdot(pq,s)*s 
null?=m-[-27;35;-13]/8
riwe Auf diesen Beitrag antworten »

schöner code,
und niemand stört (mich) Augenzwinkern

das problem mit den bögen taucht(e), wenn ich es (nun) richtig verstanden habe, natürlich nicht bei der berechnung von M auf, der kreismittelpunkt steht eh eindeutig fest, sondern bei der bestimmung des bogenmittelpunktes.
(wobei ja nicht von vornherein definiert ist/war, welche seite des kreises die "richige" ist,
nun vermute ich, die seite, auf die der vektor von P aus "zeigt" und nicht (immer) die seite, auf der auch der sehnenmittelpunkt liegt)
Lampe16 Auf diesen Beitrag antworten »

@ riwe
Jetzt bin auch ich beim Mittelpunkt des Bogens angekommen und bestätige Deine Ergebnisse.
Ich habe folgenden Formelplan verwendet:

code:
1:
2:
3:
4:
5:
6:
7:
8:
p=[-1;2;-4]; q=[-2;3;2]; t=[1;-1;2]//Eingabedaten 
//p=[1;2;3]; q=[2;-3;-2]; t=[1;-1;2]//Eingabedaten 
pq=-p+q; 
n=f$vcross(t,pq); 
s=f$vcross(n,t);  
m=p+f$vdot(pq,pq)/2/f$vdot(pq,s)*s// Kreis-Mittelpunkt 
r=f$vdot(pq,pq)/2/f$vdot(pq,f$veins(s))//Kreis-Radius  
b=m + f$veins(f$vcross(pq,n))*r//Bogen-Mittelpunkt

So scheint es ohne Fallunterscheidungen immer zu gehen.
Leopold Auf diesen Beitrag antworten »

@ riwe

Es gibt noch ein Problem bei deiner Formel. Wenn Kreisdurchmesser ist, entartet zum Nullvektor (und muß das nicht in Richtung von statt losgehen?). Mir scheint, mit dem folgenden Vektor klappt es (sofern überhaupt auf der Grundlage der vorgegebenen Daten ein Kreisbogen existiert):



Dann ist



der Ortsvektor des Bogenmittelpunktes .

Ich habe die Formeln einmal an einer Euklid-Zeichnung getestet (siehe Anhang). Es scheint zu klappen. Die Koordinaten der Punkte wurden rechnerisch mittels der oben entwickelten Formeln ermittelt, nicht mit Hilfe der Euklid-Zeichenwerkzeuge. Hoffentlich stimmt es dann auch dreidimensional.
riwe Auf diesen Beitrag antworten »

@Leopold Gott
CAD_Markus Auf diesen Beitrag antworten »

Supi, Spitze, besser gehts nicht!!!
Jetzt kann ich mich endlich neuen Problemen zuwenden. Prost

Besten Dank nochmal an Riwe und Lampe16!

Falls es jemanden interessiert, hier der funktionierende vb.net-Code für Autocad:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
         Dim p As New Point3d(-1, 2, -4)
         Dim q As New Point3d(-2, 3, 2)
         Dim t As New Vector3d(1, -1, 2)
         Dim pq As Vector3d = p.GetVectorTo(q)
         Dim n As Vector3d = t.CrossProduct(pq)
         Dim s As Vector3d = n.CrossProduct(t)
         Dim m As Point3d = p.Add(pq.DotProduct(pq) / 2 / pq.DotProduct(s) * s)          
         Dim r As Double = m.DistanceTo(p)
         Dim b As Point3d = m.Add(pq.CrossProduct(n).GetNormal * r)
Lampe16 Auf diesen Beitrag antworten »

Zitat:
Original von CAD_Markus

Besten Dank nochmal an Riwe und Lampe16!

Falls es jemanden interessiert, hier der funktionierende vb.net-Code für Autocad: ...


Gern geschehen, hat Spaß gemacht. Und der Code hat auch interessiert.
riwe Auf diesen Beitrag antworten »

ich würde mich an erster stelle bei Leopold bedanken Augenzwinkern
Neue Frage »
Antworten »



Verwandte Themen

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