Forum: Mikrocontroller und Digitale Elektronik Bahnberechnung Fräse


von Pieter (Gast)


Angehängte Dateien:

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

von STK500-Besitzer (Gast)


Lesenswert?

Das ist doch der Schnittpunkt der Gerade P2P1 (um Fräserradius 
verschoben) und dem Kreissegment P1P0 mit dem Radius CenterP0 (CenterP1) 
+ Fräserradius.

von Pieter (Gast)


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

von janina (Gast)


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.

von Jochen M. (taschenbuch)


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

von Stephan (Gast)


Lesenswert?


von Pieter (Gast)


Lesenswert?

moin moin,

habe die Fragen mal unter:
http://www.matheboard.de/thread.php?threadid=210045&page=2&sid=cbbafd90c7ba129c87211e7ed8c957b1

gestellt. Ist so einiges bei raus gekommen.
Derzeit "werkel" ich an der Kontur Linie-Kreisbogen-Kreisbogen-Linie.
Besonders senkrechte Linien (dx=0) machen Probleme.

Mit Gruß
Pieter

von Pieter (Gast)


Lesenswert?

moin moin,

habe mal das geordert:
http://www.amazon.de/Mathematik-Geometrie-CNC-Tech...

da steht absolut nichts brauchbares drin, zum Glück nur 10€.

Mit Gruß
Pieter

von Unbekannter (Gast)


Lesenswert?

> da steht absolut nichts brauchbares drin, zum Glück nur 10€.

Du kannst bei Amazon das Buch doch sogar 4 Wochen lang zurückgeben. Ich 
würd's machen. Warum für Schund noch bezahlen?

von Pieter (Gast)


Angehängte Dateien:

Lesenswert?

moin moin,

so Problem gelöst, Demo anbei.

Mit Gruß
Pieter

von Christian A. (noeppkes)


Lesenswert?

Hallo Pieter.

Ich weiss, das hier ist schon uralt, doch es ist genau das was ich 
suche.
Bist du noch irgendwie erreichbar, damit ich mich mal mit dir in 
Verbindung setzen kann?

noeppkes ...

von Karl H. (kbuchegg)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.