Die Mathe-Redaktion - 20.08.2019 18:59 - Registrieren/Login
Auswahl
ListenpunktHome
ListenpunktAktuell und Interessant ai
ListenpunktArtikelübersicht/-suche
ListenpunktAlle Links / Mathe-Links
ListenpunktFach- & Sachbücher
ListenpunktMitglieder / Karte / Top 15
ListenpunktRegistrieren/Login
ListenpunktArbeitsgruppen
Listenpunkt? im neuen Schwätz
ListenpunktWerde Mathe-Millionär!
ListenpunktAnmeldung MPCT Sept.
ListenpunktFormeleditor fedgeo
Schwarzes Brett
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden. Mitglieder können den Matheplanet-Newsletter bestellen, der etwa alle 2 Monate erscheint.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 462 Gäste und 23 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von viertel
Mathematik » Geometrie » Sind Selbstdurchdringungen von Bézierkurven berechenbar?
Druckversion
Druckversion
Antworten
Antworten
Autor
Kein bestimmter Bereich Sind Selbstdurchdringungen von Bézierkurven berechenbar?
hgseib
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 04.04.2019
Mitteilungen: 144
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2019-05-26


Auf zu einer neuen Runde ;-)


Frage 1.
Was ist die richtige/ beste Bezeichnung?
- Doppelpunkt
- SelbstSchnittpunkt
- SelbstDurchdringung
- Schnittpunkt mit sich selbst

Frage 2.
Sind SelbstDurchdringungen von Bézierkurven berechenbar?
Siehe z.B. eine Bézierkurven 4.Grades in Brezelform kann 3 SelbstDurchdringung haben:



2.1.
Iterative kann ich das berechnen. Mit einem Programm, ausgehend vom Polygon der Stützpunkte immer mehr verfeinern. Was letztendes die Schnittpunkte von Strecken ergibt, bis eine vorgegebene Genauigkeit erreicht ist. Geht, ist aber nicht sehr elegant.

2.2.
Eine andere iterative Lösung ist, eine Senkrechte über die Bézierkurven ziehen und jedesmal die Schnittpunkte berechnen. Wenn der Abstand der Schnittpunkte gleich Null ist, dann ist ein Doppelpunkt gefunden. Also aus den Abständen eine Ortslinie generieren und Nullpunkte suchen. Geht auch, ist auch nicht sehr elegant.

2.3.
Die Frage ist halt: kann man die Doppelpunkte direkt berechnen?


----------

Dazu meine bisherigen Überlegungen, siehe Bild.
Eine Bézierkurven 3.Grades kann maximal einen Doppelpunkt haben:



polyY ist das Polynom zur Berechnung der y-Koordinaten der Bézierkurve
Punkt K ist der gesuchte Doppelpunkt.
Eine Waagrechte durch K schneidet die Bézierkurve 3x (2x im Doppelpunkt K + noch einmal in L)
Entsprechend die 3 Schnittpunkte mit polyY, die die jeweiligen t-Werte ergeben.
Der Mittlere davon P entspricht L - interessiert also nicht.

polyX ist das Polynom zur Berechnung der x-Koordinate (um 90 Grad drehen).
Senkrechte durch J und Q schneiden polyX.
Wenn diese Schnittpunkte bei R auf einer Waagrechten liegen, dann ist es ein Doppelpunkt. Andernfalls besitzt diese Gerade eine Steigung.

Man kann polyX auch soweit senkrecht verschieben, bis die Schnittpunkte beider Polynome eine waagrechte ergeben (je Doppelpunkt). Das läuft aber auch auf eine iterative Berechnung hinaus.


Hat jemand eine Idee für eine mathematische Lösung?
mfg


P.S.
Was man im Internet mit den Suchbegriffen: 'Kurven und Selbstdurchdringung' findet will ich hier nicht wiedergeben :-)







  Profil  Quote  Link auf diesen Beitrag Link
hgseib
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 04.04.2019
Mitteilungen: 144
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, vom Themenstarter, eingetragen 2019-05-26


So, auch erledigt.
Ich führe offensichtlich selbstgespräche?


Einmal mehr hat sich die Bézout Matrix als überaus hilfreich erwiesen.
Zumindestens bei einem Bézier 3.Grades kann ich jetzt den Doppelpunkt direkt berechnen (siehe Bild, GeoGebra).



Doppelpunkte höherer Grade sollten genauso gehen - wenn auch mit entsprechend höherem Aufwand.
Mögliche t-Werte werden mit einem Polynom 6.Grades berechnet (Rot).
Das muss natürlich mit einem Numerischen Verfahren gelöst werden. Warum also nicht gleich Iterative? Einmal um zu klären ob es grundsätzlich geht - also es geht. Und um die maximale Anzahl an Lösungen zu kennen. Was bei iterativer Suche ja nicht gegeben ist.

Damit habe ich jetzt noch etwas zu tun: Ein Polynom 6.Grades wäre genug für 3 Doppelpunkte? Die gibt es aber nicht? Da werde ich mir mal Gedanken drüber machen.


mfg


Thread als gelöst geschlossen.



  Profil  Quote  Link auf diesen Beitrag Link
MontyPythagoras
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 13.05.2014
Mitteilungen: 1967
Aus: Hattingen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, eingetragen 2019-05-27


Hallo hgseib,
nicht so hektisch. Für eine Bézierkurve 3. Grades musst Du kein Polynom 6. Grades lösen, das geht erheblich einfacher. Die Bézierkurve sei gegeben durch:
$$x(t)=A_0+A_1t+A_2t^2+A_3t^3$$$$y(t)=B_0+B_1t+B_2t^2+B_3t^3$$Wenn Du nun einen Schnittpunkt mit sich selbst suchst, bedeutet das, dass Du zwei $t$ suchst, also $t_1$ und $t_2$, für die gilt:
$$x(t_1)=x(t_2)$$$$A_0+A_1t_1+A_2t_1^2+A_3t_1^3=A_0+A_1t_2+A_2t_2^2+A_3t_2^3$$und natürlich das gleiche sinngemäß genauso für $y(t)$. Wir teilen die Gleichung durch $A_3$ (und die nicht hingeschriebene Gleichung durch $B_3$):
$$a_0+a_1t_1+a_2t_1^2+t_1^3=a_0+a_1t_2+a_2t_2^2+t_2^3$$wobei $a_k=\frac{A_k}{A_3}$ ist. Bringen wir alles auf eine Seite:
$$a_1(t_1-t_2)+a_2(t_1^2-t_2^2)+(t_1^3-t_2^3)=0$$Durch $t_1-t_2$ teilen, da $t_1=t_2$ der trivialen, nicht gesuchten Lösung entspricht:
$$(1)\qquad a_1+a_2(t_1+t_2)+(t_1^2+t_1t_2+t_2^2)=0$$Sinngemäß für $y(t)$:
$$(2)\qquad b_1+b_2(t_1+t_2)+(t_1^2+t_1t_2+t_2^2)=0$$Wir setzen nun $t_{1,2}=t_m\pm d$, also für eines gilt "plus" und für das andere "minus". Wie herum ist egal. Aus Gleichung (1) folgt dann:
$$a_1+a_2(t_m-d+t_m+d)+(t_m-d)^2+(t_m-d)(t_m+d)+(t_m+d)^2=0$$$$a_1+2a_2t_m+t_m^2-2t_md+d^2+t_m^2-d^2+t_m^2+2t_md+d^2=0$$$$(1a)\qquad a_1+2a_2t_m+3t_m^2+d^2=0$$und natürlich aus Gleichung (2):
$$(2a)\qquad b_1+2b_2t_m+3t_m^2+d^2=0$$Indem wir die Gleichungen voneinander abziehen, erhalten wir direkt:
$$(3)\qquad t_m=-\frac{a_1-b_1}{2(a_2-b_2)}$$und indem wir Gleichung (1a) nach $d$ auflösen:
$$(4)\qquad d=\sqrt{-a_1-2a_2t_m-3t_m^2}$$In Gleichung (4) können wir noch Gleichung (3) einfügen, und wir können es insgesamt zu einer Gleichung für $t_{1,2}$ zusammensetzen, nämlich:
$$t_{1,2}=-\frac{a_1-b_1}{2(a_2-b_2)}\pm\sqrt{-a_1-a_2\left(-\frac{a_1-b_1}{a_2-b_2}\right)-\frac34\left(\frac{a_1-b_1}{a_2-b_2}\right)^2}$$Das kann man noch ein bisschen aufhübschen:
$$t_{1,2}=-\frac{a_1-b_1\pm\sqrt{4(a_1b_2-b_1a_2)(a_2-b_2)-3(a_1-b_1)^2}}{2(a_2-b_2)}$$Wie Du siehst, gibt es genau diesen einen Schnittpunkt. Oder gar keinen, wenn $a_2=b_2$ ist, der Term unter der Wurzel kleiner als null ist oder die Werte für $t_{1,2}$ nicht im Intervall $[0,1]$ liegen.
Bézier 4. Grades ist natürlich etwas schwieriger, dort gibt es dann tatsächlich ein Polynom 6. Grades.

Ciao,

Thomas



  Profil  Quote  Link auf diesen Beitrag Link
hgseib
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 04.04.2019
Mitteilungen: 144
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, vom Themenstarter, eingetragen 2019-05-27


Hallo MontyPythagoras

Sehr nett. Ich habe es nachgerechnet und es stimmt ;-)
Nicht das ich dir nicht glauben würde. Ich wills verstehen.

Also muss sich mein Polynom besser kürzen/ zusammenfassen lassen (da sind 3 Beiwerte =0). Denn letztendes kommt das gleiche Ergebnis raus.


Gleichung (6) finde ich nicht 'hübscher'. In (5) kommt ein Faktor 3x vor, das ist besser.


2019-05-27 16:13 - MontyPythagoras in Beitrag No. 2 schreibt:
.. Durch t1−t2 teilen, da t1=t2 der trivialen, nicht gesuchten Lösung entspricht ..

t1=t2 kann niemals sein, da die Kurvenlängen bis zur Überschneidung niemals gleich lang sein können. Das ist richtig, das verstehe ich.
Warum das aber ein 'teilen durch t1-t2' begründet, das verstehe ich nicht. Es bietet sich in der Gleichung an, aber 'begründet'?


2019-05-27 16:13 - MontyPythagoras in Beitrag No. 2 schreibt:
t1,2=tm±d
Das ist originell. Das muss ich mir auch noch genauer betrachten, wie das geht. Und dürfte beim 4.Grad so nicht mehr klappen.


Ansonsten (sorry) halte ich vorerst an der Lösung über die Bézout Matrix fest. Ich erstelle gerade das Polygon für ein Bézier 4.Grades. Nur um zu sehen ob es geht. Das ist dann ein System, das (unpraktisch klar, aber) grundsätzlich für jeden Grad geht. In der Praxis wird man das natürlich niemals anwenden.

Da gab es mal eine Internetseite (die ich nicht mehr finde) von einem Asiaten(?), der sich brüstete, wie einfach er das alles berechnen kann. Der wollte aber für seine Lösung Geld sehen?
Aber Mathe ist für alle da. Darum arbeite ich an meinem Internetauftritt.

.. ich muss weg ..
mfg



  Profil  Quote  Link auf diesen Beitrag Link
Folgende Antworten hat der Fragesteller vermutlich noch nicht gesehen.
MontyPythagoras
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 13.05.2014
Mitteilungen: 1967
Aus: Hattingen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, eingetragen 2019-05-27


Hallo hgseib,
eigentlich sind die $t_1$ und $t_2$ ja uninteressant, denn Du willst ja wohl den Schnittpunkt berechnen. Die ganz Herleitung geht noch eleganter, und im Vorbeilaufen berechnen wir auch noch den Schnittpunkt. Wie oben sei die Bézierkurve gegeben durch:
$$x(t)=A_0+A_1t+A_2t^2+A_3t^3$$$$y(t)=B_0+B_1t+B_2t^2+B_3t^3$$Wir suchen nun ein Wertepaar $t_{1,2}$, für die die x-Koordinate und die y-Koordinate jeweils gleich sind, und wir definieren  $t_{1,2}=t_m\pm d$. Berechnen wir nun die x-Koordinate des Schnittpunkts:
$$x_s=A_0+A_1(t_m\pm d)+A_2(t_m\pm d)^2+A_3(t_m\pm d)^3$$Ausmultiplizieren:
$$x_s=A_0+A_1t_m\pm A_1d+A_2t_m^2\pm2A_2t_md+A_2d^2+A_3t_m^3\pm3A_3t_m^2d+3A_3t_md^2\pm A_3d^3$$Sortieren:
$$(1)\qquad x_s=A_0+A_1t_m+A_2t_m^2+A_2d^2+A_3t_m^3+3A_3t_md^2\pm d(A_1+2A_2t_m+3A_3t_m^2+A_3d^2)$$Der Plusminus-Anteil muss logischerweise null sein. Das bedeutet:
$$(2)\qquad A_1+2A_2t_m+3A_3t_m^2+A_3d^2=0$$und für y dementsprechend:
$$(3)\qquad B_1+2B_2t_m+3B_3t_m^2+B_3d^2=0$$Wenn man diese Gleichungen nun durch $A_3$ bzw. $B_3$ teilt, sind wir schon wieder da, wo wir oben waren, und können leicht $t_m$ und $d$ berechnen. Wenn wir die ausgerechnet haben, haben wir auch sofort die Koordinaten des Schnittpunktes, nämlich
$$(4)\qquad x_s=A_0+A_1t_m+A_2t_m^2+A_3t_m^3+(A_2+3A_3t_m)d^2$$$$(4a)\qquad x_s=x(t_m)+(A_2+3A_3t_m)d^2$$$$(5)\qquad y_s=B_0+B_1t_m+B_2t_m^2+B_3t_m^3+(B_2+3B_3t_m)d^2$$$$(5a)\qquad y_s=y(t_m)+(B_2+3B_3t_m)d^2$$Da hier nur $d^2$ drin vorkommt, hätten wir auch den Beweis, dass in den Koordinaten keine Wurzel auftaucht, denn in den Gleichungen (2) und (3) kommt ja auch nur $d^2$ vor. Ich denke, so wird klarer, worin die Motivation lag, $t_{1,2}=t_m\pm d$ zu setzen. Programmiertechnisch hast Du so die Koordinaten im Handumdrehen. Vielleicht solltest Du es nach diesem Muster auch noch einmal für eine Bézierkurve 4. Grades versuchen.  wink
Was das Teilen durch $t_1-t_2$ angeht: wenn Du die Gleichung $ax+bx^2+cx^3=0$ lösen willst, was machst Du dann? Du sagst "Ah! $x=0$ ist eine Lösung, aber die suche ich nicht." Und dann teilst Du durch $x$, weil Du ein anderes $x$ suchst, welches dann die Gleichung $a+bx+cx^2=0$ erfüllen muss. Ist doch ganz logisch, oder nicht?
2019-05-27 19:22 - hgseib in Beitrag No. 3 schreibt:
Da gab es mal eine Internetseite (die ich nicht mehr finde) von einem Asiaten(?), der sich brüstete, wie einfach er das alles berechnen kann. Der wollte aber für seine Lösung Geld sehen?
Aber Mathe ist für alle da.
Dem würde ich nicht uneingeschränkt zustimmen. Das kann man zwar postulieren, aber es ist nicht durchsetzbar. Wenn es nur um den Ruhm geht, ein vielleicht bekanntes, aber in der Praxis im Grunde nutzloses mathematisches Problem zu lösen, dann wird jeder Mathematiker von sich aus eine Lösung allen zugänglich machen. Wenn aber zum Beispiel ein Mathematiker im Auftrag einer Sicherheitsfirma ein unknackbares Verschlüsselungssystem erfindet, und die Firma damit einen Riesen-Reibach machen könnte, dann wird der Verschlüsselungsalgorithmus garantiert nicht veröffentlicht, sondern patentiert. So läuft es eigentlich jeden Tag. Es wird weit mehr erfunden und entdeckt, als an die Öffentlichkeit kommt.

Ciao,

Thomas



  Profil  Quote  Link auf diesen Beitrag Link
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2019 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]