Kurvenberechnung < Numerik < Hochschule < Mathe < Vorhilfe
|
Status: |
(Frage) reagiert/warte auf Reaktion | Datum: | 22:14 Mo 06.08.2007 | Autor: | Trivalik |
Hi!
Ich muss in naher Zukunft etwas finden womit man Kurven am PC berechnen kann, ohne Gleitkomma operationen und möglichst wenigen Multiplikationen. Ich habe schon etwas mich im Internet umgeschaut, jedoch scheint mir das alle halbwegs Berechenbaren Algorithmen immer Bernsteinpolynome verwenden.
Es ist nicht das Ziel eine Kurve ganz genau zu Berechnen sie darf ruhig Fehlerhaft sein. Es sollt nur möglich sein mehrere Kurvenarten darzustellen.
Ich bin leider mit meinem latein am Ende, ich hoffe ihr könnt mir noch Tips geben.
|
|
|
|
Hallo Trivalik,
Deiner Frage kann ich leider nicht entnehmen was Du nun genau berechnen willst. Wenn du eine komplizierte Funktion hast bei der die Berechnung von funktionswert i.A. viel Zeit in Ansruch nimmt könnte man nur ein paar berechnen lassen und die restlichen interpolieren.
viele Grüße
mathemaduenn
|
|
|
|
|
Berechnent werden sollen die Punkte die am Bildschirm ausgegeben werden sollen. Um so einen Punkt zu berechnen sollte sehr wenig aufwand nötig sein. Es sollte anhand von Punkten Bögen,bzw. kurze gerade Linien gezeichnet werden.
Da aber Bezier, NUBS,... alle Polynomiel sind, ist das zu ineffizient.
Dabei müssen die Bögen nicht perfekt ein!
|
|
|
|
|
Hallo Trivalik,
Darf ich fragen wo da jetzt die Zeitnot ist. Wenn Du das ganze mit kubischen Splines machst hast Du weniger als 10 Multiplikationen. Für 1000 zu berechnende Punkte könnte das in einer Millisekunde erledigt sein.
viele Grüße
mathemaduenn
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:26 Do 09.08.2007 | Autor: | Trivalik |
Naja, es soll ja ein Teil von einer aufwändigen Berechnung sein. Es wird also parallel geschehen. Und da sind 10 multiplikationen pro punkt zu viel. Zielplattform ist nicht der schnelle PC!
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 19:54 Do 09.08.2007 | Autor: | leduart |
Hallo Trivialik
Wirklich vorstellen kann ich mir nicht, was du willst.Kannst du nicht ein Beispiel angeben? Also die Punkte und ein gesuchtes Ergebnis. Willst du Kreis-oder Parabelbögen usw.
Gruss leduart
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:01 Do 09.08.2007 | Autor: | Trivalik |
Beispiel ist gut, ich kann es nur verbal beschreiben. Es soll so wie bei Bezier möglich sein, die kurven bzw geraden an einander zu setzen, um länger konstrukte zu ermöglichen.
Bsp.
P1 = (3,2) verbunden über einen Bogen mit einer bestimmten intensität zu P2 = (6,4)
P2 verbunden mit einer strecke zu P3 = (9,3)
usw.
Die Ergebnisse wären dann ( aus dem Kopf)
(3,2)
(3,3) //bogen kommt nicht richtig zur Geltung
(4,4)
(5,4)
(6,4)
(7,4)
(8,3)
(9,3)
So das eine endlich lange linie beschrieben werden kann. Der Algorithmuss soll natürlih immer nur zwischen 2 punkten wirken, und programmteschnisch dann nach hinten verschoben bis alle Punkte dran waren.
|
|
|
|
|
Hallo Trivalik,
So ganz ist mir das Problem noch nicht klar.
1. Du hast Punkte vorgegeben -> ja?
1.1 Sind diese Punkte immer gleich?
In diesem Fall würde ich vorschlagen Splines vorher zu berechnen diese in Bezier Kurven umzuwandeln und zum darstellen ist vllt. dieser Algorithmus interessant.
Sind diese Punkte nicht immer gleich und für den Fall das Du nur zw. 2 Punkten arbeiten willst, bliebe Dir eigentlich nur die Variante diese durch eine Gerade zu verbinden.
viele Grüße
mathemaduenn
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:50 Do 09.08.2007 | Autor: | Trivalik |
Die Punkte sind nicht immer gleich.
Also meinst du viele Punkte vorberechnen und per gerade verbinden. Naja das kommt glaube ich nicht in betracht.
|
|
|
|
|
Hallo Trivalik,
Ich bin mir nicht sicher ob ich Dein Problem verstanden habe.
Klar ist wenn Du nur 2 Punkte nimmst kannst Du die nicht mit einem Bogen verbinden. Wie willst Du auch aus der Lage dieser 2 Punkte herausnehmen wie dieser gekrümmt ist?
Meine Idee wäre daher sowas. Betrachte zusätzlich die 2 benachtbarten Punkte und lege die Ableitung in den Stützstellen so fest das sie gerade der Mittelwert der Anstiege der Verbindungsgeraden wäre. So erhälst Du lokal eine kubische Funktion.
[Dateianhang nicht öffentlich]
blau wären die Verbindungsgerade grün die Anstiege und rot die resultierende Funktion.
Aber ich habe irgendwie das Gefühl das wir aneinander vorbeireden. Vllt. solltest Du Dein Problem doch nochmal allumfassend aufschreiben.
viele Grüße
mathemaduenn
Dateianhänge: Anhang Nr. 1 (Typ: png) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 23:30 Mi 15.08.2007 | Autor: | Trivalik |
Ich weis nicht was ich da Erklären soll!
Ich Beschreib es mal allgemein! Ihr sollt auch nicht so Kompliziert denken. Eine Möglichkeit durch evtl. mehrer Beschreibungen, so mehrere Kurven evtl. auch gerade zu berechnen, das ein langes stück herraus kommt.
Ich habe nun eine Idee. Bresenham für Kreis, wenn damit an Parameter rumspielt, kann man verschiedene kurven und geraden realisieren, das problem ist nun diesen Algoritmus umzukehren, das meint, wenn der Kreis rechts rum gemalt wird, diesen links rum zu malen.
Berechnung eines Punktes:
if (m_currentDescription.y >= m_currentDescription.x)
{
if (m_currentDescription.d < 0)
{
m_currentDescription.d += m_currentDescription.dx;
m_currentDescription.dxy += 2;
}
else
{
m_currentDescription.d += m_currentDescription.dxy;
m_currentDescription.dxy += 4; m_currentDescription.y--;
}
m_currentDescription.dx += 2;
m_currentDescription.x++;
return true;
}
return false;
m_currentDescription sind dabei die Zahlen die angeben wie du Kurve, Gerade später aussehen wird. Dies kann man auf 8 Arten machen so das ein Kreise herrauskommt. Nur noch umkehren wäre das Problem, da das irgendwie in einer Endlosschleife Endet.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 09:20 Sa 08.09.2007 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|