Bahnberechnung Fräse

Gast #805973
Lesenswert?

moin moin,

nun komme ich mit der Bahnberechnung nicht weiter.
Im beiliegendem Bild fährt der Fräser(roter Kreis) die Kreisbahn(weiße 
Linie) um Center von P0 kommend ab. Wie aber berechne ich nun den 
Haltepunkt PH?

Schon mal Danke für brachbare Antworten.

Mit Gruß
Pieter
Angehängte Dateien:
Gast #805992
Lesenswert?

moin moin,

..das hatte ich auch schon:

wb = ArcTan(Anstieg P1P2)
P2Xh1 = P2X * DrillRadius( cos(wb) * tan(wb) + sin(wb))
P2Yh1 = P2Y * DrillRadius( sin(wb) * tan(wb) - cos(wb))

Dieser Punkt P2h1 liegt allerdings nicht auf der Kreisbahn, sondern 
lotrecht auf P2 bezüglich der Strecke P1P2.
Der Radius ist P2-Center, das verlängert um DrillRadius zeigt auf einen 
anderen Punkt P2H2, ist also nicht Deckungsgleich mit P2H1.

Mit Gruß
Pieter
Gast #837262
Lesenswert?

Hallo,
nimmste die Formel für lineare Funktion:
y=m*x+h
-->h natürlich für die nach unten versetzte Linie

und für Kreis:
y=wurzel(r^2-x^2)
-->r = Summe der beiden Radien

ergibt sich Schnittpunkt bzw. 2 mögliche durch Gleichsetzen
x= +/- wurzel((r^2-2mxh-h^2)/(m^2+1))
wenn ich mich nich vertan habe.
y dann durch einsetzen in einer der beiden Formeln.
#837292
Lesenswert?

Pieter,

Du hast doch sicher den Startwinkel und Endwinkel des Kreissegments.
Durchmesser vergrössern und dann eben einfach für den Start- und 
Endwinkel die Koordinaten neu ausrechen, dann ist der gesuchte Punkt auf 
jeden Fall richtig. So gesehen ist aber Dein zweiter weisser Punkt, der 
zu P0 korrespondiert momentan nicht richtig.

Jochen Müller
#2614374
Lesenswert?

janina schrieb:
> Hallo,
> nimmste die Formel für lineare Funktion:
> y=m*x+h

Nope. Nicht.
(Ich weiss, der Thread ist schon alt. Aber da eine Frage dazu 
aufgetaucht ist).

Das ist die schlechteste Möglichkeit, wie du in der Geometrie eine 
Gerade ausdrücken kannst. Du wandels von einem Sonderfall zum nächsten. 
Und Tangens, Sinus, Cosinus braucht dazu kein Mensch.

Das Zauberwort heißt Vektorarithmetik und als Geradengleichung nimmt man 
eine Vektorgleichung (hört sich schlimmer an als es ist)

 gegeben 2 Punkte P0 und P1

Die Gerade durch diese Punkte erfüllt die Gleichung

  G = P0 + t * (P1 - P0)

(wobei t eine Laufvariable ist)
(Das Ding heißt Vektor Gleichung, weil die Punkte G, P0 und P1 Vektoren 
mit [in diesem Fall] 2 Komponenten x und y sind. Es gibt daher in 
Wirklichkeit eigentlich 2 Gleichungen, für jede Komponente eine

   G.X = P0.X + t * (P1.X - P0.X)
   G.Y = P0.Y + t * (P1.Y - P0.Y)

da die beiden Gleichungen aber im Prinzip gleich sind, muss man sie 
nicht nach Komponenten aufschlüsseln, sondern kann ganz einfach mit den 
Punkten als Vektoren arbeiten)

Die Parallele zur Geraden P1->P0 erhält man am einfachsten, indem man 
die beiden Punkte mit dem gewünschten Abstand veschiebt und eine neue 
Gerade konstruiert.

  dP = | P1 - P0 |     # Einheitsvektor von P0 nach P1 bestimmen

  dN.X =  dP.Y         #  den Vektor um 90° drehen
  dN.Y = -dP.X         #

  P3 = P0 + dist * dN  # und die beiden Punkte bestimmen
  P4 = P1 + dist * dN

Die parallele Gerade hat dann die Form

  Gp = P3 + t * (P4 - P3)

für den Ausdruck P4 - P3 schreibe ich in weitere Folge dP

Die Kreisgleichung ist ok

  x^2 + y^2 + r^2 = 0

für r wird der um dist vergrößerte Radius eingesetzt.

Im Schnittpunkt GpS muss es daher ein ts geben, sodass der Punkt GpS 
sowohl auf der Geraden als auch auf dem Kreis liegt.

Der Punnkt GpS hat also die Koordinaten

    GpS = P3 + ts * dP

diesen Punkt in die Kreisgleichung eingesetzt (denn der Punkt GpS muss 
ja nicht nur auf der Geraden liegen sondern auch auf dem Kreis - er muss 
die Kreisgleichung erfüllen. Auf der Geraden liegt er sowieso - er wurde 
ja so konstruiert, das er drauf liegt)

   GpS.X^2 + GpS.Y^2 + (r + dist)^2 = 0

GpS in seine Definition aufdröseln

   (P3.X + ts*dP.X )^2 + (P3.Y + ts*dP.Y)^2 + (r + dist)^2 = 0

nach ts umformen und man kriegt eine quadratische Gleichung, die die 
beiden Lösungen für ts angeben.

Die beiden Werte für ts werden jetzt numerisch bestimmt. Danach 
einsetzen in

   Gp = P3 + ts*dP

und wir haben numerisch die Koordinaten der gesuchten Punkte (es gibt 2)

Man nimmt dann diejenige Lösung, die näher um ursprünglichen Endpunkt 
der Geraden liegt.

Einen Fall gilt es noch zu berücksichtigen.
Wir haben bis jetzt so getan, als ob der Kreis mit seinem Mittelpunkt Km 
im 0-Punkt liegen würde. Das wird er natürlich nicht tun.
Das 'Problem' lösen wir, indem wir die Problemstellung aus der 
allgemeinen Lage in die 0-Lage (Km == 0) verlagern.

Die ursprünglichen Geradenpunkt Ps und Pe ergeben dann die Punkte P0 und 
P1 durch

   P0 = Ps - Km
   P1 = Pe - Km

.... danach berechnen wir den Lösungspunkt und transformieren die Lösung 
wieder zurück

  PL = GpS + Km



(und keine Sorge. Beim ersten mal sieht das alles mathematisch furchtbar 
wild aus. Ist es aber nicht. Wenn man da das erste mal durch ist, ist es 
eigentlich sogar ziemlich einfach. Das einzig 'wilde' ist das Lösen 
einer quadratischen Gleichung. Aber diese Lösungs-Formel sollte man ja 
sowieso intus haben (so wie den Phythagoros - braucht man auch dauernd). 
Im Endeffekt bleibt nichts anderes als ein paar Grundrechnungsarten und 
eine Wurzel übrig)

Im Code gibt es 2 geometrische Sonderfälle:
* ganz am Anfang, wenn dP eine 0-Länge hat. Die geometrische Bedeutung
  ist: es liegt gar keine Gerade vor
* der Ausdruck unter der Wurzel beim Berechnen der quadratischen
  Gleichung ist kleiner 0.
  Die geometrische Bedeutung ist: Die Gerade schneidet den Kreis
  überhaupt nicht. Achtung: Ein Wert von 0 ist ok. In dem Fall ist
  die Gerade eine Tangente zum Kreis. Die beiden Lösungen der Gleichung
  sind identisch.


Ein wenig Sorgfalt muss man noch in Konventionen legen. Denn in 
Wirklichkeit gibt es 8 Punkte, die die geforderte Bedingung, Abstand zur 
Geraden und Abstand zu Kreis) erfüllen. Je nachdem auf welche Seite man 
die jeweilige 'Parallele' konstruiert, erhält man andere Punkte. Diese 
Dinge wird man durch Konvention lösen
* beim Kreis gelten die Punkte, die ausserhalb des Kreises liegen
* bei der Geraden muss man sich entscheiden ob man die Parallele links
  oder rechts von der Geraden konstruiert. Je nachdem wird dann der
  Normalvektor entweder rechts rum oder links rum um 90° gedreht um
  die 'parallelen' Punkte zu bestimmen.

> nimmste die Formel für lineare Funktion:
> y=m*x+h

Die Formel ist deswegen scheisse, weil man sich für senkrechte Gerade 
einen Sonderfall mit m gleich unendlich einbaut. Ausserdem wird die 
Genauigkeit immer schlechter je weiter sich die Gerade der Senkrechten 
annähert. All das sind Sonderfälle und Problemchen, die die 
Parameterdarstellung einer Geraden nicht hat.


Ähnlich funktioniert auch die Schnittpunktsberechnung 2-er Geraden. Wenn 
da was wesentlich Komplizierteres rauskommt als eine Handvoll 
Subtraktionen,  Multiplikationen und 1 Division, dann hat man was falsch 
gemacht :-)

Man hat 2 Geraden
   GA = P0A + tA * dPA
   GB = P0B + tB * dPB

die sich irgendwo schneiden. Es gibt also einen Punkt GS, so dass

   GS = P0A + tAS * dPA
   GS = P0B + tBS * dPB

da links derselbe Punkt ist (logisch, der Schnittpunkt GS liegt ja auf 
beiden Geraden), kann man die Gleichungen gleichsetzen

   P0A + tAS * dPA = P0B + tBS * dPB

jetzt hat man 2 Gleichungen (ist ja eine Vektorgleichung in X und Y) mit 
2 Unbekannten tAS und tBS, und das kann man lösen.

Wieder: Die Lösung ansehen und nach mathematischen Sonderfällen 
untersuchen. Da kommt eine Division vor und durch 0 kann man nicht 
dividieren. Wenn der Nenner aber zu 0 wird, dann ist die geometrische 
Bedeutung davon: die beiden Geraden sind parallel und daher ist es auch 
logisch, dass kein Schnittpunkt existiert.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren