y(x) aus bestehender Bezierkurve berechnen



  • Hallo,

    anhand einer gegebenen Bezierkurve, deren Kontrollpunkte bekannt sind, soll die zu einem beliebigen x (im Bereich der Kurve, die stetig sein soll) gehörige y-Koordinate ermittelt werden. Ich finde dazu nichts.
    Das ganze will ich mit C++ programmieren.

    Schon mal Danke.
    Gruß Rudi



  • @RudiMBM wie darf denn das y(x) aussehen?

    Polynom oder Exponetialfunktion oder Fouriersynthese oder …



  • Vllt. hilft dir der De-Casteljau-Algorithmus?



  • Unter den genannten Voraussetzungen sollte das denke ich sogar mit einer binären Suche gehen.



  • @DirkB es sollen einfache Koordinaten sein.



  • @Th69 die Bezierkurve ist schon fertig erstellt.

    @Admin ich durfte nicht innerhalb von 120sec antworten., weil ich ein NEUER wäre. Ich möchte aber betonen, dass ich hier schon seit Jahren zu gange bin, wenn auch wenig.



  • @hustbaer Binäre Suche ist mir wohl zu langsam. Es sollen in <1sec viele Tsd. Abtastungen mit verschieden Xen möglich sein.



  • @RudiMBM

    Binäre Suche ist mir wohl zu langsam. Es sollen in <1sec viele Tsd. Abtastungen mit verschieden Xen möglich sein.

    Vielleicht erstmal probieren bevor du behauptest dass es zu langsam ist? Binäre Suche bis auf double Genauigkeit braucht ~53 Durchläufe. Das ist nicht viel. Wenn du mit float Genauigkeit auskommst bloss noch ~24. Das ist noch weniger.

    Ansonsten... wenn die Kurve statisch ist, dann kannst du sicher einiges vorberechnen. Entweder du machst nen fetten Table mit z.B. 1 Mio Einträge, dann kannst du dir 20 Durchläufe bei der binären Suche Suche sparen. Bzw. evtl. sogar einfach linear zwischen den zwei benachbarten Einträgen interpolieren. Kommt halt immer drauf an was für eine Genauigkeit du brauchst. Oder du machst ne Annäherung über irgendwas was sich direkt ausrechnen lässt. Fouriertransformation oder was auch immer.



  • ps: Muss es denn unbedingt eine Bezierkurve sein? Bezierkurven sind halt super schlecht dafür geeignet als y(x) Funktion ausgewertet zu werden.



  • Ja, das mit der Tabelle ist wohl der beste Ansatz für mich, da schon eine Tabelle bei mir im Spiel ist. Die Positionen der Einträge dieser Tabelle wollte ich mit Hilfe der Kurve ziehen und/oder stauchen. Da könnte ich diese Tabelle doch gleich mit den Kurvenparametern erzeugen. Der mehrmalige Zugriff über X wäre dann auch der allerschnellste.
    PS: die Bezierkurve bietet die beste Gestaltungsfreiheit.
    Danke und Gruß Rudi



  • @RudiMBM sagte in y(x) aus bestehender Bezierkurve berechnen:

    PS: die Bezierkurve bietet die beste Gestaltungsfreiheit.

    Naja mit Sinusen und Polinomen kann man auch relativ gut so ziemlich alles annähern was man so braucht.


Log in to reply