Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Dez 21, 2024 17:04

Foren-Übersicht » Programmierung » Mathematik-Forum
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Länge einer Kurve berechnen
BeitragVerfasst: Sa Apr 27, 2013 05:23 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
Hallo,

ich zeichne ja jetzt auch NurbsCurves mit

Code:
  1.  
  2.   glubegincurve(nurbsi);
  3.   glunurbscurve(nurbsi,{...}
  4.   gluendcurve(nurbsi);
  5.  


weiß jemand wie ich die länge solch einer kurve berechnen kann?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Länge einer Kurve berechnen
BeitragVerfasst: Sa Apr 27, 2013 07:02 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Nurbskurven sind C1-Kurven, damit rektifizierbar. Ihre Länge ist dann int_a^b ||c'(x)|| dx. Da musst Du jetzt nur noch deine Nurbs als c einsetzen und voilá... Kurzer Blick auf die Basisfunktionen: vermutlich entstehen fürchterlich aussehende Formeln. Schätze da wirst Du sehr geduldig rechnen müssen :-D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Länge einer Kurve berechnen
BeitragVerfasst: Sa Apr 27, 2013 08:58 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
dankeschön, aber bringt mich das wirklich weiter?
ich kenne die basisfunktionen ja nicht, nur deren grad.

alles was ich habe ist eine beliebige nurbscurve mit ihren kontroll und knotenpunkten und noch wichtungen aber die sind bei mir (zumindest derzeit) immer 1.0

ich kann also von keiner funktion ableitungen machen... ich hatte gehofft ich könnte aus opengl die einzelstücke die gezeichnet werden auslesen und addieren oder etwas in der richtung.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Länge einer Kurve berechnen
BeitragVerfasst: Sa Apr 27, 2013 12:02 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Bei so Kurven kommst du selten um eine manuelle, numerische Integration herum. Also musst du die Funktion selber implementieren und dann eine einfache Integration machen, die Trapezmethode bietet sich hier an, Simpson liefert das beste Ergebnis, von den einfachen Methoden zumindest.

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Länge einer Kurve berechnen
BeitragVerfasst: Sa Apr 27, 2013 14:18 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
beide vorgeschlagenen methoden setzen voraus das ich weitere punkte auf der kurve habe...

habe ich aber nicht.

nur den anfangs und den endpunkt..
sowie kontrollpunkte und sogenannte knoten, was eine reihe aus nicht abnehmenden reellen zahlen ist (keine koordinaten)

also hier ein typisches beispiel (nur 2d damits nicht ausufert)

nurbscurve 5ten grades mit 12 kontrollpunkten und 18 knoten:

Code:
  1.  
  2. // Knotrollpunkte:
  3. 01.) x60.00,    y19.00
  4. 02.) x55.94,    y13.55
  5. 03.) x51.90,    y10.00
  6. 04.) x47.91,    y8.37
  7. 05.) x41.92,    y8.78
  8. 06.) x35.99,    y11.67
  9. 07.) x33.99,    y12.81
  10. 08.) x26.01,    y17.42
  11. 09.) x18.05,    y20.17
  12. 10.) x12.06,    y17.84
  13. 11.) x6.04,      y11.11
  14. 12.) x0.00,      y0.00
  15.  
  16. // Knoten:
  17.  
  18. 01.) 0.00
  19. 02.) 0.00
  20. 03.) 0.00
  21. 04.) 0.00
  22. 05.) 0.00
  23. 06.) 0.00
  24. 07.) 21.93
  25. 08.) 21.93
  26. 09.) 21.93
  27. 10.) 33.11
  28. 11.) 33.11
  29. 12.) 33.11
  30. 13.) 66.65
  31. 14.) 66.65
  32. 15.) 66.65
  33. 16.) 66.65
  34. 17.) 66.65
  35. 18.) 66.65
  36.  
  37.  


wie setze ich da jetzt an um die arc length zu berechnen? Edit, in dem beispiel ist der anfangspunkt x60 y19 und der endpunkt x0,y0

Edit 2:
Das hier klingt bis jetzt am vielversprechendsten, leider verstehe ich nicht alles davon.
http://www.saccade.com/writing/graphics/RE-PARAM.PDF


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Länge einer Kurve berechnen
BeitragVerfasst: So Apr 28, 2013 06:09 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
Hallo,

ich versuche das Thema zu verstehen und lese mich durch verschiedene pdf dokumente die ich über nurbs gefunden habe..
vielleicht kann mir von euch jemand folgenden Absatz "bildlich" erklären:

Zitat:
It’s also worth noting that the magnitude of the knots doesn’t make
any difference. All that counts is just the ratios of the values to each
other. So the knot vectors [0 0 0 1 2 2 2], [100 100 100 200 300 300
300] and [-0.5 -0.5 -0.5 0 0.5 0.5 0.5] all produce the same curve. In
general, integer sequences starting at zero are used to keep things
simple.


ich verstehe was gesagt wird aber nicht wie ich es anhand der gezeigten zahlen nachvollziehen kann, warum ist
0 0 0 1 2 2 2 das selbe wie 100 100 100 200 300 300 300? ich hätte verstanden wenn 1 1 1 2 3 3 3 das selbe gewesen wäre weil das im verhältnis gleich bleibt.. oder geht es nur darum das c-b = b-a ? (wenn man es a a a b c c c liest)
wie wäre es dann in dem beispiel von mir im post weiter oben, in dem es 4 verschiedene werte gibt?
Zitat:
0.00 0.00 0.00 0.00 0.00 0.00 21.93 21.93 21.93 33.11 33.11 33.11 66.65 66.65 66.65 66.65 66.65 66.65


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Länge einer Kurve berechnen
BeitragVerfasst: So Apr 28, 2013 09:09 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Wölfchen hat geschrieben:
ich kenne die basisfunktionen ja nicht, nur deren grad.

Das Problem lässt sich ja leicht beheben: Basisfunktionen. Am besten versuchst Du Dich zuerst daran, eine NURBS Kurve an jeder Stelle per Formel auszuwerten - sprich ein Programm, dass die Kurve zeichen kann ohne OpenGl-Nurbs zu verwenden und probierst ob Du dein Beispiel von letztens gezeichnet bekommst.

Dann kannst Du die Kurvenlänge im Prinzip berechnen. Einen Tipp noch bevor Du numerisch integrieren (das möchte auch das Paper machen von dem du schreibst - Quadratur=Numerische Integration) anfängst: Es lohnt für gewöhnlich einmal analytisch auf den Integranden loszugehen, ihn sinnvoll umzustellen und zusammenzufassen, so daß der numerische Fehler minimiert wird - und weil da doch die ein oder andere Summe in den Funktionen auftaucht, schaffts dieser Fehler Dir evtl. in die Suppe zu spucken :-D .

Wölfchen hat geschrieben:
vielleicht kann mir von euch jemand folgenden Absatz "bildlich" erklären:

Äh nein, weil sich in den Beispielen die Verhältnisse der Knoten zueinander ändern und teilweise nicht definiert sind, lässt sich der Satz leider nicht verstehen - denn er behauptet ja gerade, dass wenn man die Verhältnisse nicht ändert, dann ändert sich nichts. Blöderweise passiert genau das in dem Beispiel.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Länge einer Kurve berechnen
BeitragVerfasst: So Apr 28, 2013 10:19 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
hehe "leicht" ist ja relativ...

was Mut macht ist folgender Satz:
Bild
Zitat:
The denominator is a normalizing factor that evaluates to one if all weights are one.


Wie ich ja schon sagte sind bei mir die weights immer 1.0 was ich bislang erzeugen konnte an kurven. also würde ja bei mir folgendes zutreffen:
Bild

schon der nächste Satz verwirrt mich wieder...
warum dann aber wieder aufblasen? ich dachte der Nenner sei 1 in dem Fall??
Bild



(Nebenfrage: kann man irgendwie Formeln hier im Forum abbilden ohne Bilder machen zu müssen?)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Länge einer Kurve berechnen
BeitragVerfasst: So Apr 28, 2013 13:04 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Zitat:
Warum einaml C einmal R?

Um C zu berechnen, brauchst du R. Du musst die verschiedenen R also in die Summe von C einsetzen.

Du wirst vermutlich nicht alle Gewichte als 1 haben wollen - sonst kannst Du nämlich die NURBS mit anderen Gewichten nicht darstellen - die nette Eigenschaft dass die Summe 1 wird solltest Du also wenn möglich nicht ausnutzen.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Foren-Übersicht » Programmierung » Mathematik-Forum


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.012s | 17 Queries | GZIP : On ]