Flächenberechnung von einer freien Form < Algorithm. Geometrie < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 12:53 Mo 24.05.2004 | Autor: | elTorito |
Hallo,
habe jetzt seit tagen versucht eine Formel zu finden um eine Fläche zu berechnen, leider besitze ich keine Mathe Bücher und kenne auch niemanden der mir welche leihen könnte. Und wüsste auch nicht wo nach ich suchen müsste.
Ich möchte eine Fläche einer Freiform berechnen, solange die Form aus geraden Linien besteht ist das kein Problem. Wenn aber eine Kurve hinzukommt geht die denkerei los :(
Hier mal das was ich meine:
http://www.lovebenz.de/images/flaeche.jpg
Die fläche von dem Roten Bereich zu rechnen ist kein Problem.
Bei den graeulichen Flächen weiß ich nicht einmal worum es sich handelt,
bzw weiß nicht als was man das bezeichnet, sind das Segmente ?
Kreis Segmente passt ja nicht weil die keinen Konstaten Radius haben.
Das Würde passen wenn der Scheitelpunkt Verbunden mit der Mitte der Linie eine Symetrie ergeben würde (Parabole ? )
Wie muss ich das nun angehen ?
Erstmal den Scheitelpunkt ermitteln?
Mir ist ein Punkt bekannt der sich ausserhalb des Segement befindet , und wenn ich diesen mit der Mitte der Line (z.B. P1 bis P2 verbinde ) dann schneidet diese neue Linie den Scheitelpunkt ? ich weiß dann aber immer noch nicht dessen Koordinaten .
Naja. Besser kann ich mein Problem nicht erklaeren ich hoffe ihr könnt mir trotzdem helfen.
Danke
Peter
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 13:08 Mo 24.05.2004 | Autor: | Marc |
Hallo Peter,
willkommen auf www.vorhilfe.de !
> habe jetzt seit tagen versucht eine Formel zu finden um
> eine Fläche zu berechnen, leider besitze ich keine Mathe
> Bücher und kenne auch niemanden der mir welche leihen
> könnte. Und wüsste auch nicht wo nach ich suchen müsste.
Was ist denn über die begrenzende Kurvenlinie bekannt? Kennst du die Koordinaten jedes Punktes auf der Linie, oder nur von ein paar Punkten?
Durch irgendetwas muss diese Kurvenlinie ja festgelegt sein.
Interessant wäre auch noch, in welchem Zusammenhang dieses Problem steht, z.B. ob es sich um ein Computer-Programm handelt, das den Flächeninhalt ausrechnen soll. Da wäre auch noch interessant, wie genau du das Ergebnis haben willst.
Viele Grüße,
Marc
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 17:31 Mo 24.05.2004 | Autor: | elTorito |
Hallo Marc,
danke für das Willkommen, recht gewöhnungsbedürftiges Forum, ich suchte verzweifelt den ANTWORT Button ;)
Ich möchte ein Flash Programm schreiben , oder ein Programm mit Flash, naja eine Flash Anwendung.
Wenn ich den mir Bekannten Punkt x,y auserhalb der Kurve mit dem Centrum meiner Linie (welche Anfang und ENdpunkte der Kurve sind) verbinde, wenn ich diese neue Linie / 2 teile erhalte ich einen Punkt genau auf der Kurve, welcher der Scheitelpunkt sein dürfte ?
Siehe:
http://www.lovebenz.de/images/flaeche1.jpg
Mit dem Punkt kann ich dann ein Dreieck zeichnen.
Wenn ich dann die Fläche des Dreieck habe müsste ich eine Rekursionsschleife machen und die wieder ein Dreick in den verbliebenen Segmenten machen, so das ich dann irgendwann anaehernd die fläche habe.
Flash zeichnet Kurven glaube ich als Bezier, das wird dann wohl auch die Koordinate sein die ich ausserhalb habe.
Zum Thema Bezier Kurven habe ich folgendes gefunden:
http://www.timotheegroleau.com/Flash/articles/cubic_bezier/cubic_bezier_in_flash.htm
hilft mir aber nicht weiter ;)
In Mathe war ich leider noch nie gut. An was ich mich die letzten Tage beim rumstörbern nicht alles erinnert habe, ist schon eine weilchen her bei mir (hmm ca 10 Jahre das ich das letzte mal ein Mathe Buch in der Hand hatte)
Was ich auch noch machen möchte ist die Länge dieser Kurve ermitteln,
die Länger der Linien ist ja kein Problem, das geht mit Pythagoras .
Also zusammenfassend, ich kenne nicht alle Punkte auf der Kurvenlinie, bis jetzt kenne ich nur einen Punkt und zwar der Punkt der entsteht wenn ich das Zentrum meiner Linie mit diesen Punkt verbinde, hmm schwer zu erklaeren, vielleicht tut es diese grafik hier:
[Externes Bild http://www.timotheegroleau.com/Flash/articles/cubic_bezier/quadratic_on_cubic_1.gif]
Davon sind mir bekannt, P0, P3, und PQ (Punkt ausserhalb) wenn ich dort PQ mit dem zentrum der linie P0-P3 verbinde bekomme ich den ein Punkt auf der kurve der auf der Grafik mit dem kleinen x gekennzeichnet ist.
Wie das Ergebnis dargstellt werden soll weiß ich noch nicht, ich denke mal es werden Pixel sein die ich erhalte :)
Kann es sein das man das Quadratpunkte nennt? Meine da beim stöbern was gelesen zu haben.
Danke. Ich hoffe ist nicht allzu verwirrend was ich so schreibe, ich drück mich manchmal etwas schwer aus.
Peter
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 23:13 Mo 24.05.2004 | Autor: | Paulus |
Hallo Peter
ich glaube, du solltest dir schon zuerst mal über die Darstellung der Bézier-Kurve im Klaren sein. Die Bézier-Kurve ist nämlich nicht durch die Punkte [mm]P_{0}[/mm], [mm]P_{Q}[/mm], und [mm]P_{3}[/mm] bestimmt. Zu ihrer Darstellung werden vielmehr die Punkte [mm]P_{0}[/mm], [mm]P_{1}[/mm], [mm]P_{2}[/mm] und [mm]P_{3}[/mm] benötigt!
(Irgendwie muss die Kurve doch gegeben sein. Dass deine Konstruktion nicht stimmt, siehst du ja auch an deinem eigenen ersten Bild
http://www.lovebenz.de/images/flaeche1.jpg, wenn du da die Kurve links oben ein Wenig genauer betrachtest)
Vielmehr ist es doch so, dass sich die Bézier-Kurve so berechnet:
Mit den Punkten
[mm]P_{0}(x_{0},y_{0})[/mm],
[mm]P_{1}(x_{1},y_{1})[/mm],
[mm]P_{2}(x_{2},y_{2})[/mm],
[mm]P_{3}(x_{3},y_{3})[/mm]
heisst die Formel:
[mm]x(t)= (1-t)^{3}x_{0} +3t(1-t)^{2}x_{1}+3t^{2}(1-t)x_{2}+t^{3}x_{3}[/mm];
[mm]y(t)= (1-t)^{3}y_{0} +3t(1-t)^{2}y_{1}+3t^{2}(1-t)y_{2}+t^{3}y_{3}[/mm];
Wobei der Parameter [mm]t[/mm] von [mm]0[/mm] bis [mm]1[/mm] läuft.
Somit könntest du doch zum Beispiel die Einteilung des Parameters t immer feiner werden lassen, z.B. grob:
[mm](0,\bruch{1}{2},1)[/mm]
dann etwas feiner:
[mm](0,\bruch{1}{4},\bruch{1}{2},\bruch{3}{4},1)[/mm]
dann noch feiner:
[mm](0,\bruch{1}{8},\bruch{1}{4},\bruch{3}{8},\bruch{1}{2},\bruch{5}{8},\bruch{3}{4},\bruch{7}{8},1)[/mm]
etc. etc.
So entsteht doch zusammen mit deiner Strecke ein Polygon, dessen Fläche [mm]A[/mm] sich leicht berechnen lässt:
[mm]A=\bruch{1}{2}*\sum_{i=0}^{n}( x_{i}-x_{i+1} )(y_{i}+y_{i+1})[/mm]
wobei der letzte Punkt [mm](x_{n},y_{n})[/mm] mit dem Punkt [mm](x_{0},y_{0})[/mm] zusammenfallen muss (geschlossenes Polygon)
Ich hoffe, diese Ueberlegungen helfen dir ein kleines Stück weiter!
Liebe Grüsse
|
|
|
|