[B+] Sinus / Kosinus

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Smily

Betreff: [B+] Sinus / Kosinus

BeitragFr, März 09, 2007 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Heyho,
Derzeit entwickel ich für die Schule eine kleines Programm in blitzbasic, wo die Winkelfunktionen Bildlich dargestellt werden.
Derzeit kann mein Programm folgendes:
- Kreis Darstellen & Winkel einzeichnen
- Sinus/Kosinus messen
- Die Werte aufzeichnen und Graphisch darstellen (Sinus/Kosinus-kurve)

Ich habe vor, das Programm noch um die Tangens-Funktion zu erweitern, das kommt aber später.

Ich wollte euch mal fragen, was ihr davon haltet und was ich daran noch verändern/verbessern kann.

Hier ist das Programm (blitzplus)
Code: [AUSKLAPPEN]
Type button
 Field x
 Field y
 Field xs
 Field ys
 Field name$
 Field state
End type
 
Dim dsin(360)
Dim dcos(360)

Kreis_x = 120
Kreis_Y = 120
Kreis_R = 100
Graphics 800,600,16,1
ClsColor 255,255,255
Color 0,0,0
Kr_btn = Create_Button(670,10,120,20,"Kreis")
Sin_btn = Create_Button(670,40,101,20,"Sinus")
Cos_btn = Create_Button(670,70,101,20,"Kosinus")
Sin_btn_r = Create_Button(770,40,20,20,"R")
Cos_btn_r = Create_Button(770,70,20,20,"R")
Dia_btn = Create_Button(670,100,120,20,"Diagramm")

; SetBuffer BackBuffer() ;Bei Blitzplus kann die Zeile auskommentiert werden.
Repeat
 Cls
 Gosub drawbuttons
 ri# = (ATan2(Kreis_y -mousey(), MouseX()-Kreis_x ) + 360) Mod 360
 
 If button_state(kr_btn)
 
  Color 255,128,128
  For fri# = 1 To ri-1 Step 1
   Line kreis_x,kreis_y,Kreis_x+cos(fri)*Kreis_R, Kreis_y - Sin(fri)*Kreis_R
  Next
 
  Color 0,0,0
  Oval Kreis_x-Kreis_r,kreis_y-kreis_r,kreis_r*2,kreis_r*2,0
 
  Line Kreis_x,Kreis_y,Kreis_x+cos(ri)*Kreis_r, kreis_y - Sin(ri)*kreis_r
  Line kreis_x,kreis_y,kreis_x+kreis_r,kreis_y

  Text 0,0,"a = " + Floor(ri) + "°"
 End If
 
 If button_state(sin_btn)
  Color 128,128,128
  Line kreis_x+kreis_r,kreis_y,kreis_x+kreis_r+100,kreis_y
  Line kreis_x+cos(ri)*kreis_r, kreis_y - Sin(ri)*kreis_r, Kreis_x+Kreis_r+100, kreis_y - Sin(ri)*kreis_r
  Line Kreis_x+Kreis_R+95,Kreis_y-sin(ri)*Kreis_R,Kreis_x+Kreis_R+95,Kreis_y
  Text Kreis_x+Kreis_R+100,Kreis_y-sin(ri)*Kreis_R/2,sin(ri) ,0,1
 End If
 
 If button_state(cos_btn)
  Color 128,128,128
  Line Kreis_X,Kreis_Y,Kreis_x,Kreis_y + Kreis_R + 100
  Line Kreis_X+cos(ri)*Kreis_R, Kreis_Y - Sin(ri)*Kreis_R, Kreis_X+cos(ri)*Kreis_R, Kreis_y + Kreis_R + 100
  Line Kreis_X+cos(ri)*Kreis_R,Kreis_Y+Kreis_R+95,Kreis_X,Kreis_Y+Kreis_R+95
  Text Kreis_x+Cos(ri)*Kreis_R/2,Kreis_Y+Kreis_R+110,cos(ri),1,1
 End If

 If button_state(dia_btn)
  Line 100,350, 100, 550
  Line 95,450, 500, 450
  If button_state(sin_btn)
   Color 255,0,0
   Rect 100+ri,450-Sin(ri)*100,5,5
   If Button_State(Sin_btn_r) dsin(ri Mod 360) = 1
   For x = 0 To 359
    If dsin(x) line 100+x, 450-sin(x)*100, 99+x, 450-sin(x-1)*100
   next
  End If
 
  If button_state(cos_btn)
   Color 0,0,255
   Rect 100+ri,450+cos(ri)*100,5,5
   If Button_State(Cos_btn_r) dcos(ri Mod 360) = 1
   For x = 0 To 359
    If dcos(x) line 100+x, 450+cos(x)*100, 99+x, 450+cos(x-1)*100
   next
  End if
   
 End if

 Color 0,0,0
 Line MouseX()-5, MouseY(), MouseX()+5, mousey()
 Line MouseX(), MouseY()-5, MouseX(), MouseY() + 5
 
 Flip
Until KeyHit(1)

End

.drawbuttons
 ;For button.button = Each button
 mouse = MouseHit(1)
 For button.button = Each button
  If button\state Color 200,255,200 else Color 255,200,200
  Rect button\x,button\y,button\xs, button\ys,1
  Color 0,0,0
  Rect button\x,button\y,button\xs, button\ys,0
  Text button\x+button\xs/2,button\y+button\ys/2,button\name$,1,1
  If Mouse And rectsoverlap(button\x,button\y,button\xs,button\ys,mousex(),mousey(),1,1) button\state = (not button\state)
 Next
return

Function Create_button(x,y,xs,ys,name$)
 Button.button = New button
 button\x = x
 button\y = y
 button\xs = xs
 button\ys = ys
 button\name = name$
 Return Handle(button)
End Function

Function button_state(btn)
 button.button = Object.button(btn)
 Return button\state
End function
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

TheProgrammer

BeitragFr, März 09, 2007 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich finde, das gehört eher ins Codearchiv...
aktuelles Projekt: The last day of human being

Triton

BeitragFr, März 09, 2007 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Seh ich auch so.

Arrow Verschoben ins Codearchiv
Coding: silizium-net.de | Portfolio: Triton.ch.vu

Smily

BeitragFr, März 09, 2007 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
ah sry.
Ich war mir nicht so ganz sicher wohin dami Wink
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

DAK

BeitragFr, März 16, 2007 22:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Cooles Teil. Es flimmert mir nur ein bisschen zu viel. Verwend bitte Backbuffer.
Sonst ist es wirklich cool.
Gewinner der 6. und der 68. BlitzCodeCompo

StepTiger

BeitragFr, März 16, 2007 23:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Klappt auch 1A in BB
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group