Möglichst schnelle nichtlineare Interpolation mit 4 Punkten
Übersicht

coldieBetreff: Möglichst schnelle nichtlineare Interpolation mit 4 Punkten |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also, ich habe 4 Quadratisch angeordnete Punkte (P1(-1,1) P2(1,1) P3(-1,-1) P4(1,-1) ), und für jeden Punkt einen Höhenwert. Nun liegt Punkt XY ( PXY(X,Y) ) irgendwo zwischen diesen Punkten und ich bräuchte eine Funktion, die möglichst schnell und rund den Höhenwert für Punkt XY aus dessen Koordinaten und den Höhenwerten der 4 anderen Punkte berechnet. Kann mir jemand eine Methode empfehlen?
Danke schonmal für hilfe ![]() |
||
ByteCroc |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Alle X Werte zusammen zählen und durch 4 teilen ebenso mit Y und Höhenwerten verfahren. | ||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ByteCroc, das wäre dann der Durchschnitt aller Punkte, keine Interpolation, da jeder Punkt anders ins Gewicht fällt.
coldie, ich glaube dass eine lineare Funktion schon die schnellste ist. Kommt dann nur noch auf die Codeoptimierung an. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
coldie |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja das glaube ich dir sofort ![]() Nur bei einer linearen Funktion sieht es doch dann eckig und kantig aus, das geht gar nicht. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Stimmt! Könnte schwören, dass da als Fragestellung etwas anderes gestanden hatte, oder ich einfach mal ein paar ''Ausfälle'' hatte.
Die einzigen Tipps für andere Filterung die mir so einfallen sind: - Triangle - Spline - Mitchell - Bi-Cubic Vielleicht findet man hier und da was dazu. Ich für mein Geschmack hätte Spline genommen (weil ich die schon so ein bischen kenne). Kann jetzt aber garnicht über die Effektivität und der gleichen dazu sagen. Spline in ihrer Grundform hätte allerdings den Nachteil, dass ''Wellen'' entstehen, wenn starke Ausgleichsmanöver berechnet werden sollen. IrfanView nennt sein Filter dazu ''B-Spline'', welches sicherlich auch ohne ''Wellen'' aus kommt. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
coldie |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok, danke
Ja Spline kommt mir irgendwie bekannt vor, werd mich da mal schlau machen. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Cat-Mul-Rom fehlt da noch ... auch eine Spline Art die jedoch einfacher zu verstehen ist als andere und den vorteil hat das sie durch die 4 punkte geht im unterschied zu kubischen Splines und so. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich glaube es ist nicht möglich eine weiche Kurve da zu interpolieren - denn dazu braucht man 3 Punkte für X und 3 Punkte für Y (so wie ich verstanden habe hast du -1 und +1 - also 2 punkte?)
ansonsten kannst du 2 Punkte immer linear verbinden... um 3 punkte zu verbinden würde ich catmul-rom-spline empfehlen |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
Rone |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm, ich check irgendwie nicht ganz wie die punkte zu ner parabel verbinden willst?!
![]() kannst du das mal einzeichnen?...oder bin ich grad n bisschen verpeilt... Normalerweise einfach bedingungen aufstellen: f(-1) = 1 f(1) = 1 f(1) = -1 f(-1) = 1 => f(x) = ax^2 + bx +c dann einsetzten/lineares gleichungssystem aufstelen und lösen... ...zack formel fertig! aber die punkte ergeben meiner meinung keinen sinn... |
||
coldie |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das Problem ist ja dreidimensional.
Die Punkte haben x y und z Koordinaten. Das hab ich wohl etwas ungenau ausgedrückt. Die x und y Koordinaten sind allerdings bei den vier Punkten fest. Während die z-Koordinate (die Höheninformation ) beliebige Werte annehmen kann. Das heisst so "von oben" gesehen macht es natürlich keinen Sinn da irgendwas einzuzeichnen. |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja ist denn bei koordinate 0 auch ein Punkt?
wenn nein, dann kannst du keine kurven machen |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja, bei nur zwei Punkten gehts auch. Das währ dann der ''gausischer'' Verlauf. Also ein tangenziales ein- und ausfahren der Graustufen, welcher auch viel besser vom menschlichen Auge als ''natürlicher Verlauf'' war genommen wird, als ein linearer.
Beispiel wie so eine Kurve aussieht: Code: [AUSKLAPPEN] Graphics 360,360,0,2
SetBuffer FrontBuffer() Color 255,0,0:Text 20,20,"Linear" Color 0,255,0:Text 20,40,"Gausisch" For q=0 To 360 Color 255,0,0:Plot q,360-q Color 0,255,0:Plot q,180+Cos(q/2)*180 Next FlushKeys WaitKey End |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
coldie |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein bei 0 ist kein Punkt, aber das würde sich ohne größere Probleme einrichten lassen.
@hectic: Hmm, interessant. Also müsste es irgendwie auch mit Winkelfunktionen gehen. |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://de.wikipedia.org/wiki/Normalverteilung
hm die Kurve sieht mir bisschen komisch aus... die ist mit der sin/cos curve nicht vergleichbar - da unten das sehr flach wird... spline/bezier kannst du auch nicht nehmen, da diese 3 punkte brauchen |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, stimmt! Hab wohl geträumt oder sowas.
Hier ein Vergleich (oben Linear / unten Gausische Verteilung (diesmal echte Gausische Verteilung)) ![]() Der Linearverluaf hat zwar eine bessere Ausnutzung des Verlaufes, man erkennt aber auch leider deutlich eine ''Kante'' da, wo es endgültig zu weiß über geht. Die Gausische Verteilung macht ein echten Übergang für das menschliche Auge unsichtbar, dafür ist der Verlauf - für das menschliche Auge - nicht mehr ganz so ausgeweitet. Beide Verläufe haben eine angegebene Breite von 192 Pixel. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group