Bestimmung der Länge eines CGPath

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Amin Negm-Awad schrieb:

    Thallius schrieb:

    oder man rechnet und zeichnet den Pfad selber. Dann weiß man ja wieviele verschiedene Pixel man gesetzt hat. Ich habe sowas mal gemacht um ein Video an einem Pfad zu bewegen. Man muss die Auflösung der Berechnung halt nur groß genug machen das man auf jeden Fall >1 Punkt pro Pixel erhält und zeichnet dann nur die Pixel welche nicht gleich sind.

    Gruß

    Claus

    Haben denn drei Punkte nebeneinander dieselbe Länge wie drei Punkte diagonal? ;) Ich will ab sofort Displays mit 6-eckiger Wabenstrukter der Pixel!!!!!!!!!!!

    Ernsthaft: Dann lieber Teilstücke berechnen.


    Hae ? Ich berechne doch den Abstand der Pixel zueinander nicht die Anzahl Pixel. Aber wenn ich die Pixel selber zeichne kenne ich den Abstand von einem Pixel zum nächsten. Die Genauigkeit bestimme ich halt durch die Berechnung des Splines. Anzeigen tue ich halt nur nicht doppelte Pixel.
    Zum Glück haben wir wenigstens quadratische Pixel auf dem iOs Display. Ich durfte das GAnze damals für 4:3 und 16:9 berechnen. Da kriegt man dann irgendwann einen Knoten im Kopf.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Manfred Kreß schrieb:

    Oder eben zeichnen und Pixel zählen. Die Genauigkeit dürfte für den Durchschnittswurstfinger reichen.

    Bei einer diagonalen Linie hast Du eine Abweichung von ca. 30%. Das sind aber dicke Finger. Die Berechnung über Teilstücke dürfte auch wesentlich schneller sein, da wahrscheinlich schon sehr wenige Stützstellen ausreichen.
    „Meine Komplikation hatte eine Komplikation.“
  • Thallius schrieb:

    Amin Negm-Awad schrieb:

    Thallius schrieb:

    oder man rechnet und zeichnet den Pfad selber. Dann weiß man ja wieviele verschiedene Pixel man gesetzt hat. Ich habe sowas mal gemacht um ein Video an einem Pfad zu bewegen. Man muss die Auflösung der Berechnung halt nur groß genug machen das man auf jeden Fall >1 Punkt pro Pixel erhält und zeichnet dann nur die Pixel welche nicht gleich sind.

    Gruß

    Claus

    Haben denn drei Punkte nebeneinander dieselbe Länge wie drei Punkte diagonal? ;) Ich will ab sofort Displays mit 6-eckiger Wabenstrukter der Pixel!!!!!!!!!!!

    Ernsthaft: Dann lieber Teilstücke berechnen.


    Hae ? Ich berechne doch den Abstand der Pixel zueinander nicht die Anzahl Pixel. Aber wenn ich die Pixel selber zeichne kenne ich den Abstand von einem Pixel zum nächsten. Die Genauigkeit bestimme ich halt durch die Berechnung des Splines. Anzeigen tue ich halt nur nicht doppelte Pixel.
    Zum Glück haben wir wenigstens quadratische Pixel auf dem iOs Display. Ich durfte das GAnze damals für 4:3 und 16:9 berechnen. Da kriegt man dann irgendwann einen Knoten im Kopf.

    Gruß

    Claus

    Dann berechnest du nicht Pixel, sondern Teilstrecken, wobei die als Länge einer Teilstrecke das nächste freie Pixel wählst.

    Wozu? Wenn du ohnehin Teilstrecken berechnest, brauchst du dich nicht um Pixel zu kümmern.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Manfred Kreß schrieb:

    Oder eben zeichnen und Pixel zählen. Die Genauigkeit dürfte für den Durchschnittswurstfinger reichen.

    Wie gsagt: PIxel zählen ist nicht Länger ermitteln. Die Abweichung liegt bei bis zu 41 %.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • macmoonshine schrieb:

    mika schrieb:

    Es gibt keine mathematische Methode um die Länge eines Bezier Path zu bestimmen

    Wenn ich jedes Bezier-Teilstück in die Form $b(t) = (f(t), g(t)) für t \in [0, 1]$ bringe, dann kann ich über $\int_0^1 \sqrt{f'(t)^2 + g'(t)^2}dt$ die Länge des Teilstücks berechnen. Gibt es dafür keine geschlossene Form?

    Bin ich der Mathematiker oder du?
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • macmoonshine schrieb:

    mika schrieb:

    Es gibt keine mathematische Methode um die Länge eines Bezier Path zu bestimmen

    Wenn ich jedes Bezier-Teilstück in die Form $b(t) = (f(t), g(t)) für t \in [0, 1]$ bringe, dann kann ich über $\int_0^1 \sqrt{f'(t)^2 + g'(t)^2}dt$ die Länge des Teilstücks berechnen. Gibt es dafür keine geschlossene Form?

    Nein, leider nicht - bei kubischen Splines sind f(t) und g(t) Polynome vierten Grades. Deshalb numerisch -> de Casteljau.
    Edit: Quatsch, sie sind logischerweise kubisch. Es gibt trotzdem keine geschlossene Form.
    Multigrad - 360°-Produktfotografie für den Mac
  • Thallius schrieb:

    Amin Negm-Awad schrieb:

    Wozu? Wenn du ohnehin Teilstrecken berechnest, brauchst du dich nicht um Pixel zu kümmern.


    Er will sie ja sicher nicht nur berechnen sondern auch sehen, oder ?

    Gruß

    Claus

    Genau das würde ich aber dem System überlassen angesichts der Möglichkeiten von Antialiasing, Subpixelantialiasing, virtuellen Pixeln, Zooming usw. usf.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Ja, ich bin auch froh, wenn ich ab und zu mal wieder was auf dem Mac mache.

    Aber stellt euch vor, der Projektmanager gibt den Auftrag mal so ne 360° Produktansicht vom neusten Turnschuh zu erstellen und hat kurze Zeit später seinen Schuh auf dem schicken iPad oder iPhone und kann damit vor dem Cheffe glänzen und rumspielen - also seiner Kernkompetenz nachgehen. Die kaufen alle Multigrad Drehtische, die die nächsten 20 Jahre rauskommen.

    Wenn ich für den Tip jetzt ein Multigrad für meine Bonsai bekomme - Lieferadresse kann ich liefern :)
    Seminare, Artikel, Code. ObjectiveCeeds - alles für die Apfelzucht.
  • Amin Negm-Awad schrieb:

    Thallius schrieb:

    Amin Negm-Awad schrieb:

    Wozu? Wenn du ohnehin Teilstrecken berechnest, brauchst du dich nicht um Pixel zu kümmern.


    Er will sie ja sicher nicht nur berechnen sondern auch sehen, oder ?

    Gruß

    Claus

    Genau das würde ich aber dem System überlassen angesichts der Möglichkeiten von Antialiasing, Subpixelantialiasing, virtuellen Pixeln, Zooming usw. usf.


    Dann wirst Du aber ein Problem haben den vom System berechneten Spline nachzurechnen da du nicht den genauen Algorhythmus kennst den das System benutzt.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • macmoonshine schrieb:

    Manfred Kreß schrieb:

    Oder eben zeichnen und Pixel zählen. Die Genauigkeit dürfte für den Durchschnittswurstfinger reichen.

    Bei einer diagonalen Linie hast Du eine Abweichung von ca. 30%. Das sind aber dicke Finger. Die Berechnung über Teilstücke dürfte auch wesentlich schneller sein, da wahrscheinlich schon sehr wenige Stützstellen ausreichen.

    Ich habemir mal von NSBezierpath per …flattened– die Teilstücke geben lassen. Ich glaube, da weiseich auch in meinem Buch drauf hin!?

    Jedenfalls waren das in der Tat erstaunlich wenige.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Thallius schrieb:

    Amin Negm-Awad schrieb:

    Thallius schrieb:

    Amin Negm-Awad schrieb:

    Wozu? Wenn du ohnehin Teilstrecken berechnest, brauchst du dich nicht um Pixel zu kümmern.


    Er will sie ja sicher nicht nur berechnen sondern auch sehen, oder ?

    Gruß

    Claus

    Genau das würde ich aber dem System überlassen angesichts der Möglichkeiten von Antialiasing, Subpixelantialiasing, virtuellen Pixeln, Zooming usw. usf.


    Dann wirst Du aber ein Problem haben den vom System berechneten Spline nachzurechnen da du nicht den genauen Algorhythmus kennst den das System benutzt.

    Gruß

    Claus

    Muss ich ja auch nicht. Sowohl das System als auch ich approximieren. Du würdest das ja auch tun.

    Entscheidend ist da alleine, ob meine Approximation für die Wirklichkeit (Kurve) hinreichend genau ist. Wie gut die Approximation des Systems ist, ist mir gleichgültig. Es soll ja nicht die Länge der Systemapproximation berechnet werden, sondern die Länge des Pfades. Der ist exakt definiert.

    (Im Übrigen wäre es selbst zeichnerisch zu approximieren und dann diese Werte zu nehmen, nicht genauer. Es wäre ja auch eine eigene Approximation.)
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Manfred Kreß schrieb:

    Ja, ich bin auch froh, wenn ich ab und zu mal wieder was auf dem Mac mache.

    Aber stellt euch vor, der Projektmanager gibt den Auftrag mal so ne 360° Produktansicht vom neusten Turnschuh zu erstellen und hat kurze Zeit später seinen Schuh auf dem schicken iPad oder iPhone und kann damit vor dem Cheffe glänzen und rumspielen - also seiner Kernkompetenz nachgehen. Die kaufen alle Multigrad Drehtische, die die nächsten 20 Jahre rauskommen.

    Wenn ich für den Tip jetzt ein Multigrad für meine Bonsai bekomme - Lieferadresse kann ich liefern :)

    Ganz verschenken kann ich die Dinger nicht, aber ich kann Dir einen guten Preis machen - das ist so gut wie geschenkt :) Und wenn ich mal in der Gegend bin, können wir gerne mal ein paar Bonsais im Kreis drehen.
    Multigrad - 360°-Produktfotografie für den Mac
  • macmoonshine schrieb:

    Amin Negm-Awad schrieb:

    Bin ich der Mathematiker oder du?

    Das ist eine ernstgemeinte Frage auf Mikas Behauptung. Wahrscheinlich läuft das Ganze darauf hinaus, ob die Wurzel eines Polynoms 2. oder 4. Grades Bronstein integrierbar ist.

    Meine Antwort war halbernst. Du bist doch der erste, der das wissen müsste.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Bei einer diagonalen Linie hast Du eine Abweichung von ca. 30%. Das sind aber dicke Finger. Die Berechnung über Teilstücke dürfte auch wesentlich schneller sein, da wahrscheinlich schon sehr wenige Stützstellen ausreichen.


    Dann hast du halt Pixel die Kante an Kante stehen mit einem Abstand von 1 und Pixel die Ecke an Ecke stehen mit einem Abstand 1.4.... Und mit einer höheren Auflösung als 1.0 Punkte wirst du deinen Finger nicht über das Display bewegen können.
    Seminare, Artikel, Code. ObjectiveCeeds - alles für die Apfelzucht.