Interpolation

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Triton

Betreff: Interpolation

BeitragMo, Apr 03, 2006 22:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier mal eine einfache (und im ganzen ziemlich unausgereifte) Form, um Graphen zu interpolieren, wenn nur wenige Punkte gegeben sind. Das ganze erstellt zwischen je 2 Punkten eine halbe cosinus-kurve; es endet und beginnt also mit dem Anstieg 0.

Code: [AUSKLAPPEN]

;** Interpolierung von Punkten
;** 02.04.2006 by Triton
Graphics 800,600,16,2
SetBuffer BackBuffer()
Global panzahl=5
panzahl=panzahl-1
Dim punkte(panzahl,1)

punkte(0,0)=100
punkte(0,1)=100

punkte(1,0)=200
punkte(1,1)=240

punkte(3,0)=480
punkte(3,1)=120

punkte(4,0)=600
punkte(4,1)=20

While Not KeyDown(1)
   punkte(2,0)=MouseX()
   punkte(2,1)=MouseY()
   interpol
Flip
Cls
Wend

;--
Function interpol()

For px = 0 To panzahl-1
   Oval punkte(px,0)-3,punkte(px,1)-3,6,6
   Text punkte(px,0),punkte(px,1),px+1
   If px <= panzahl Then
      lambda=(punkte(px+1,0)-punkte(px,0))
      For x = 0 To lambda
         amp=(punkte(px+1,1)-punkte(px,1))/2
         y = -Cos(x*180/lambda)*amp
         Plot x+punkte(px,0),y+amp+punkte(px,1)
      Next
   End If
Next
Oval punkte(panzahl,0)-3,punkte(panzahl,1)-3,6,6
Text punkte(panzahl,0),punkte(panzahl,1),panzahl+1

End Function


However, gibt noch einiges an Verbesserungspotential.
Coding: silizium-net.de | Portfolio: Triton.ch.vu
  • Zuletzt bearbeitet von Triton am Di, Apr 04, 2006 16:24, insgesamt einmal bearbeitet

s_m_w

BeitragDi, Apr 04, 2006 16:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir stürzt es aus einem unerfindlichen grund ab, wenn ich mich punkt 4 nähere.
Sheep Happens

Triton

BeitragDi, Apr 04, 2006 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, wenn der X-Unterschied zwischen 3 und 2 oder 3 und 4 Null ist, kommt es zur Division durch 0. Da praktisch aber kaum zwei Punkte eines Graphen den selben X-Wert haben werden, kann man das vernachlässigen, denke ich. Ansonsten eben um ein oder 2 Zeilen erweitern um es auszuschließen.
Coding: silizium-net.de | Portfolio: Triton.ch.vu

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group