Mathematische Funktionen
Übersicht

![]() |
relentless92Betreff: Mathematische Funktionen |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
- Zuletzt bearbeitet von Tankbuster am Mi, Dez 09, 2009 20:58, insgesamt einmal bearbeitet
![]() |
relentless92 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ~ |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group