Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 21-09-2005, 04:46   #1 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
Lightbulb flash bezier (curveTo()) vs. funktionsgraph

moinmoin,

ich habe mich in letzter zeit mit kurven, deren funktionen und der darstellung in flash beschäftigt. dabei habe ich gegen das problem gekämft, dass kurven, die anhand von funktionen in flash gezeichnet werden, ganz schön an der performance knabbern. so bin ich dann auf das bezier-werkzeug curveTo() gestoßen und habe gesehen, dass es kurven ganzrationaler funktionen zweiten grades genauso zeichnen kann, wie eine for-schleife, die in einem definitionsbereich die funktion abklappert und unzählige lineTo()'s macht.
dieses bezier-tool schien den vorteil zu haben, kurven schnell und dynamisch zeichnen zu können - für die berechnung von positionen an dieser kurve benötigt man natürlich immer noch eine funktionsgleichung, die die kurve beschreibt.

ich habe mich also daran gemacht, eine ganzrationale funktion zweiten grades, spiegelsymmetrisch zur y-achse so zu veralgemeinern, dass sie wie ein curveTo() funktioniert - damit sie zusammenarbeiten können, curveTo für die darstellung und die funktion für die berechnung. das ergebnis ist für mich mehr als beeindruckend.
ich habe eine allgemeine funktion gefunden, die mit der curveTo funktion identisch zu sein scheint. die beiden linien liegen perfekt aufeinander, an stellen, wo die kurve ein wenig pixelig wird, ist die andere dies auch - es ist erschreckend identisch.

nun gut, ich habe ja nicht mehr gemacht, als zweimal die gleiche kurve gezeichnet, auf zwei verschiedene wege. doch auch die performance erschreckt mich. es kommt mir fast so vor, als passiert bei dem curveTo() genau das gleiche, wie in meiner funktion. also nichts mit performance verbesserung durch curveTo()?

sehts euch einfach mal an, und vielleicht hat ja jemand was zu erzählen über erfahrungen mit kurven und auch curveTo(). kennt vielleicht sogar jemand die funktion selber? freue mich auf beiträge!

schönen morgen an alle,
gruß janosch


p.s.:
die funktion lautet f(x) = -(e/n^2)*x^2 + e
dabei ist gibt e den extrempunkt des graphen an,
n bestimmt die nullstellen, spiegelsymmetrisch zur y-achse
handelt sich also eigentlich um nichts weiter als ne schar mit zwei parametern.....
Angehängte Dateien
Dateityp: zip graph vs bezier.zip (10,9 KB, 56x aufgerufen)
janoshnosh ist offline   Mit Zitat antworten
Alt 21-09-2005, 09:43   #2 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
erstmal ne unqualifizierte Antwort:
ActionScript:
  1. n = Math.sqrt(Math.pow(c._xmouse, 2));
Was hälst du von Math.abs?

Ich gucks mir mal noch weiter an
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 21-09-2005, 10:35   #3 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Oki, doki, für die, die das nachvollziehen wollen, hab ich es mal aufgeschrieben, wie man auf die Funktion kommen kann.

http://janosch.scharlipp.de/ff/bezier_formel.png

Gruß,

Janosch (der 2. )
Angehängte Dateien
Dateityp: zip bezier.zip (13,6 KB, 55x aufgerufen)
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 21-09-2005, 14:38   #4 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
hi janosch
Zitat:
Zitat von Janoscharlipp
Was hälst du von Math.abs?
yuhuu dachte ich mir doch, dass an der wurzel aus dem quadrat was faul ist!

respekt zur herleitung! das beeindruckt mich. heißt das dann also, das flash für eine bezierkurve tatsächlich genausoviele einzellinien zeichnet, wie die for-schleife?

greets janosch
janoshnosh ist offline   Mit Zitat antworten
Alt 21-09-2005, 20:25   #5 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Keine Ahnung, wie Flash sowas zeichnet, jedenfalls müsste es das gut können, schließlich ist Flash ja vektorbasiert.
Wenn ich morgen mal die Zeit finde, benchmarke ich mal ein bissel.
Wenn man herein zoomt, wird einem zumindest ein Unterschied klar: deine Kurve ist sichtbar eckig, die interne Kurve bleib, egal wie nah man heran zoomt, immer perfekt rund. Entweder, Flash passt also seinen Detailgrad dem Zoom an, oder Flash zeichent immer absolut perfekt; ich vermute ersteres.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 23-10-2007, 17:37   #6 (permalink)
lernwillig
 
Benutzerbild von Bugfixer
 
Registriert seit: May 2004
Ort: Berlin
Beiträge: 221
Hi Janosch...bin gerade über diesen etwas verstaubten thread gestolpert.

Hast du schon mal versucht, einen 3d bezier-spline in flash umzusetzen, bzw. die vektorpunkte zu berechnen? Ich habe zwar die mathematische formel, finde sie aber etwas kryptisch zu lesen
__________________
Schon mal F1 gedrückt? ;)

Geändert von Bugfixer (23-10-2007 um 18:16 Uhr)
Bugfixer ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 10:03 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele