Mathematische Funktionen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

relentless92

Betreff: Mathematische Funktionen

BeitragMi, Dez 09, 2009 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallöle,
Ich wollt mich mal ransetzen und ein Programm schreiben welches mir Parabeln zeichnet.
Problem: Ich komm nicht ganz klar.
Ansatz:

Code: [AUSKLAPPEN]
;
;;;;   Funktionen
;
AppTitle "Funktionen Zeichnen / Berechnen"                   
Graphics 800,600,32,2
SetBuffer BackBuffer()

Global x,y

Global a=1                  ;Werte Festlegen!
Global d=100
Global e=100

For x = -10 To 10

y=a*(x-d)^2+e               ;Die Funktion

Plot x,y
   If x=10 Then
      Text 500,500,x
      Text 520,500,y
   EndIf
Next

WaitKey()


Ich setze also für x -10 bis 10 ein, und berechne den dazugehörigen y-Wert und Stelle das dar. Den Endpunkt (10|10) lass ich mir in Koordinaten darstellen.
Dabei ist mir aufgefallen das Basic falsch rechnet. Das d sorgt nicht für eine Verschiebung auf der X-Achse, sondern auf der Y-Achse. Das e funktioniert einwandfrei.
Desweiteren berechnet er jedesmal eine andere Y-Koordinate für den Endpunkt (10|y), wenn ich das d ändere.

Kann man das überhaupt so angehen? Oder muss man die Funktionen in dem Fall anders nutzen?

MfG
~
Fussball spielen viele, Kart fahren nur die Besten.
~

mpmxyz

BeitragMi, Dez 09, 2009 20:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast alles richtig gemacht, BlitzBasic aber auch...
Du hast nur für d zu große Werte eingesetzt und zeichnest nur einen zu kleinen Teil des Graphen...
Code: [AUSKLAPPEN]
;
;;;;   Funktionen
;
AppTitle "Funktionen Zeichnen / Berechnen"                   
Graphics 800,600,32,2
SetBuffer BackBuffer()

Global x,y

Global a=1                  ;Werte Festlegen!
Global d=1
Global e=1

For x = -300 To 300
   
   y=a*(x-d)^2+e               ;Die Funktion
   
   Plot 400+x,300-y
   If x=10 Then
      Text 500,500,x
      Text 520,500,y
   EndIf
Next

WaitKey()

Das einzige, dass nicht richtig war, ist die y-Richtung.
Die geht nämlich in BlitzBasic in die "umgekehrte" Richtung, wenn man das Koordinatensystem mit dem aus dem Matheunterricht vergleicht.

mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Tankbuster

BeitragMi, Dez 09, 2009 20:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab auchmal ein bisschen rumgespielt:

Code: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()

Local x#,y#,oldy#,o#
Const x_scale#=10,y_scale#=10
Line 0,300,800,300
Line 400,0,400,600

For x = 1 To 800 Step x_scale#
Line x,305,x,295
Next

For y = 1 To 600 Step y_scale#
Line 405,y,395,y
Next


For x = -400 To 400
oldy=Sin(((x-1)*10))*3
y=Sin(x*10)*3

Line 400+x*x_scale#,300-y*y_scale#,400+(x-1)*x_scale#,300-oldy*y_scale#

Next

Text 700,50,"Sin(x*10)*3"

Color 255,0,0

For x = -400 To 400
oldy=Tan(((x-1)*10))*3
y=Tan(x*10)*3

Line 400+x*x_scale#,300-y*y_scale#,400+(x-1)*x_scale#,300-oldy*y_scale#

Next

Text 700,100,"Tan(x*10)*3"
WaitKey()


Nja, langweile halt. Allerdings ist der Code wirklich grauenhaft, aber vielleicht hilft es ja etwas Wink
Twitter
Download Jewel Snake!
Windows|Android
  • Zuletzt bearbeitet von Tankbuster am Mi, Dez 09, 2009 20:58, insgesamt einmal bearbeitet

relentless92

BeitragMi, Dez 09, 2009 20:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey, danke euch.
Dennoch versteh ich nicht ganz wieso das so seltsam angezeigt wird. Beispiel:

Code: [AUSKLAPPEN]
;
;;;;   Funktionen
;
AppTitle "Funktionen Zeichnen / Berechnen"                   
Graphics 800,600,32,2
SetBuffer BackBuffer()

Global x#,y#

Global a#=-0.1                  ;Werte Festlegen!
Global d#=1
Global e#=1

For x# = -30 To 30 Step 0.1
   
   y#=a#*(x#-d#)^2+e#               ;Die Funktion
   
   Plot 400+x#,300-y#
Next

WaitKey()


Die Parabel ist teilweise abgeschnitten. Wieso?

Passend dazu nun eine Frage: Könnte ich mit der Parabelrechnung eine gescheite Sprungroutine verwirklichen?
MfG
~
Fussball spielen viele, Kart fahren nur die Besten.
~

Tankbuster

BeitragMi, Dez 09, 2009 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
weil du nur die x Werte von -30 bis 30 durchgehst. 31 wird halt nichtmehr gezeichnet :
Zitat:
For x# = -30 To 30 Step 0.1
Twitter
Download Jewel Snake!
Windows|Android

relentless92

BeitragMi, Dez 09, 2009 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, okay, klingt logisch.
Wenn ich aber doch eine Funktion habe, und beliebige x-Werte einsetze - erscheint der Graph doch immer gleich auf dem Koordinatensystem. Wenn sich da das d verändert, verschiebt er sich doch nur auf der x-Achse - wieso geht das hier nicht bzw. was müsst ich bei der Berechnung verändern?
Beispiel dazu:

Code: [AUSKLAPPEN]
;
;;;;   Funktionen
;
AppTitle "Funktionen Zeichnen / Berechnen"                   
Graphics 800,600,32,2
SetBuffer BackBuffer()

Global x#,y#

Global a#=-0.1                  ;Werte Festlegen!
Global d#=1
Global e#=1

Repeat
For x# = -30 To 30 Step 0.1
   
   y#=a#*(x#-d#)^2+e#               ;Die Funktion
   
   Plot 400+x#,300-y#
Next

Text 0,0,"a: "+a#
Text 0,10,"d: "+d#
Text 0,20,"e: "+e#

If KeyDown(2) Then a#=a#+0.001
If KeyDown(3) Then a#=a#-0.001

If KeyDown(16) Then d#=d#+0.1
If KeyDown(17) Then d#=d#-0.1

If KeyDown(30) Then e#=e#+0.1
If KeyDown(31) Then e#=e#-0.1

Flip 0
Cls
Until KeyHit(1)


1 / 2 = a verändern
Q / W = d verändern
A / S = e verändern

Da sieht man das schön was ich meine.
MfG
~
Fussball spielen viele, Kart fahren nur die Besten.
~

Tankbuster

BeitragMi, Dez 09, 2009 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Setz das dochmal ein:
Zitat:
For x# = -300 To 300 Step 0.1


Ich weiß garnicht was du hast, der Graph macht doch genau das, was du von ihm erwartest?

und falls du dir immer noch kein Koordinatensystem vorstellen kannst, zeiche noch das:

Code: [AUSKLAPPEN]
Line 0,300,800,300
Line 400,0,400,600
Twitter
Download Jewel Snake!
Windows|Android

relentless92

BeitragMi, Dez 09, 2009 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Tut mir Leid, hast Recht.
Das war ein Denkfehler meinerseits, sorry.
Soll nicht wiedervorkommen. Danke nochmal für die Hilfe!
~
Fussball spielen viele, Kart fahren nur die Besten.
~

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group