Eine Kette
Übersicht BlitzBasic Codearchiv
TritonBetreff: Eine Kette |
Mi, März 03, 2004 18:14 Antworten mit Zitat |
|
---|---|---|
Von Hot-Bit. Das ganze erstellt eine Kette die sich um 2 Zahnräder dreht.
Ich habs so verändert, dass kein externes Bild mehr gebraucht wird. Sieht zwar nicht mehr ganz wie ne Kette aus, verhält sich aber trotzdem so.. Code: [AUSKLAPPEN] ;Eine Kette, by Hot-Bit, 2003 ;verändert von Triton, 2004 Graphics 800,600 SetBuffer BackBuffer() Dim strecke_x#(5000),strecke_y#(5000),strecke_image(5000), kette#(2000),kette_image(364) Global x1#=500,y1#=300,x2#=200,y2#=280 Global k_radius#,k_radius2#,k_radius3#,k_radius4#,q Global punkt1_winkel#,punkt2_winkel#,punkt3_winkel#,punkt4_winkel# ;Winkeldaten der 4 Punkte Global kett1=CreateImage(13,13) Global kett2=CreateImage(13,13) Global bogen_gr#, bogen_kl#, step_rate1#, step_rate2#, qua#, vpunkt1_winkel#, ab# baukette col=50 For i=13 To 1 Step-1 Color 50+col/2,20+col/2,col Oval 13-(i/2),13-(i/2),i,i,1 col=col+15 Next GrabImage kett1,7,7 MidHandle kett1 SeedRnd MilliSecs() Cls:Flip col=50 For i=13 To 1 Step-1 Color col,50+col/2,20+col/2 Oval 13-(i/2),13-(i/2),i,i,1 col=col+15 Next GrabImage kett2,7,7 MidHandle kett2 winkel#=2 * Pi * 180 / Pi/ 36 ; 36 ist, wenn 36 bälle herum sind Print winkel k_radius#=90 k_radius3=k_radius+8 k_radius2=40:k_radius4=k_radius2+8 Global radi2=13 ; für inneren Kranz zeichne2 mitt#=MilliSecs() schnell#=.83 While Not KeyHit(1) Cls Text 100,10,"Schnell#: "+schnell Color 128,128,128 Oval x2-k_radius2,y2-k_radius2,k_radius2*2,k_radius2*2,1 For i=1 To ab kette(i)=kette(i)+schnell If kette(i)=>q kette(i)=kette(i)-q DrawImage kette_image(strecke_image(kette(i))),strecke_x(kette(i)),strecke_y(kette(i)) Next schneller#=schneller+schnell:If schneller>360 schneller=schneller-360 Color 255,0,0 For i=1 To 36 Line Sin(i*winkel+schneller)*radi2+x1,Cos(i*winkel+schneller)*radi2+y1 ,Sin(i*winkel+schneller)*k_radius+x1,Cos(i*winkel+schneller)*k_radius+y1 Next Text 30,40,"Bogen_gr: "+bogen_gr Text 30,60,"Bogen_kl: "+bogen_kl Text 30,80,"Step1 : "+Step_rate1 Text 30,100,"Step2 : "+Step_rate2 Text 30,120,"qua : "+qua Text 20,140,"punkt1 : "+punkt1_winkel Text 20,160,"punkt2 : "+punkt2_winkel If MilliSecs()-mitt>10000 q=0 zeichne2 ab=q/16 ;Berechnung der Länge der kette For i=1 To ab kette(i)=q-(i*16) Next mitt=MilliSecs() schnell#=Rnd(.9,3.9) Cls EndIf Delay 10 Flip Wend End Function zeichne2() Cls .NeuerVersuch x1=Rand(100,700):y1=Rand(100,500):x2=Rand(100,700):y2=Rand(100,500) k_radius#=Rand(50,160) k_radius3=k_radius+8 k_radius2=Rand(30,k_radius-5) k_radius4=k_radius2+8 If (x1-x2)^2+(y1-y2)^2=<(k_radius+k_radius2) Goto NeuerVersuch If Abs(x1-x2)=<k_radius Or Abs(y1-y2)=<k_radius Goto NeuerVersuch qua#=0 While Not KeyHit(1) Cls: Color 64,255,192 Oval x1-k_radius,y1-k_radius,k_radius*2,k_radius*2,0 Oval x2-k_radius2,y2-k_radius2,k_radius2*2,k_radius2*2,0 Color 255,255,0 a2_wi#=(ATan2(x2-x1,y2-y1)+360)Mod 360 Line Sin(a2_wi)+x2,Cos(a2_wi)+y2 ,Sin(a2_wi)+x1,Cos(a2_wi)+y1 ;Die Linie von Mittelpunkt zu Mittelpunkt laenge# = Sqr(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1))); Abstand der zwei Kreise Color 255,255,255 ; zeichne Mittelpunkt Oval x1+Sin(a2_wi)*laenge/2-7,y1+Cos(a2_wi)*laenge/2-7,15,15,0 Color 255,0,0 ; Erster Kreis a3_wi#=a2_wi+90-qua ;Winkel um 90 Grad erhöhen, wegen des rechten Winkels Line x1,y1,Sin(a3_wi)*k_radius+x1,Cos(a3_wi)*k_radius+y1 Color 0,255,255:Oval Sin(a3_wi)*k_radius+x1-4,Cos(a3_wi)*k_radius+y1-4,9,9,0 punkt1_winkel#=a3_wi:punkt1_x=Sin(a3_wi)*k_radius+x1:punkt1_y=Cos(a3_wi)*k_radius+y1 ; Abfrage ob im/am kleineren Kreis vpunkt1_winkel#=a2_wi-qua plotx#=Sin(vpunkt1_winkel)*(laenge-qua)+punkt1_x ploty#=Cos(vpunkt1_winkel)*(laenge-qua)+punkt1_y If Sqr((x2-plotx)^2+(y2-ploty)^2)=<k_radius2 Exit vpunkt1_winkel#=a2_wi-qua ;Zeichne Tangente Color 0,0,255 Line punkt1_x,punkt1_y,Sin(vpunkt1_winkel)*(laenge-qua)+punkt1_x,Cos(vpunkt1_winkel)*(laenge-qua)+punkt1_y Color 255,0,0 ; Zweiter Kreis a3_wi#=a2_wi-90+qua ;Winkel um 90 Grad erhöhen, wegen des rechten Winkels Line x2,y2,Sin(a3_wi)*k_radius2+x2,Cos(a3_wi)*k_radius2+y2 Color 0,255,255:Oval Sin(a3_wi)*k_radius2+x2-4,Cos(a3_wi)*k_radius2+y2-4,9,9,0 punkt3_winkel#=a3_wi:punkt3_x=Sin(a3_wi)*k_radius2+x2:punkt3_y=Cos(a3_wi)*k_radius2+y2 Color 255,0,0 a3_wi#=a2_wi-90+qua ;Winkel um 180 Grad erniedrigen, wegen des rechten Winkels Line x1,y1,Sin(a3_wi)*k_radius+x1,Cos(a3_wi)*k_radius+y1 Color 0,255,255:Oval Sin(a3_wi)*k_radius+x1-4,Cos(a3_wi)*k_radius+y1-4,9,9,0 punkt2_winkel#=a3_wi:punkt2_x=Sin(a3_wi)*k_radius+x1:punkt2_y=Cos(a3_wi)*k_radius+y1 Color 255,0,0 ;Zweite Gerade a3_wi#=a2_wi+90-qua ;Winkel um 180 Grad erniedrigen, wegen des rechten Winkels Line x2,y2,Sin(a3_wi)*k_radius2+x2,Cos(a3_wi)*k_radius2+y2 Color 0,255,255:Oval Sin(a3_wi)*k_radius2+x2-4,Cos(a3_wi)*k_radius2+y2-4,9,9,0 punkt4_winkel#=a3_wi:punkt4_x=Sin(a3_wi)*k_radius2+x2:punkt4_y=Cos(a3_wi)*k_radius2+y2 Line punkt1_x,punkt1_y,punkt4_x,punkt4_y Flip ;Delay 1 qua=qua+.05 Wend ; Versuche die Punkte rundherum zu zeichnen von punkt1 weg bogen_gr#=2*Pi*k_radius*((180-(qua*2))/360) bogen_kl#=2*Pi*k_radius2*((180-(qua*2))/360) step_rate1#=(180-(qua*2))/bogen_gr step_rate2#=(180-(qua*2))/bogen_kl Color 0,255,0 q=0 i1#=0 While i1=<(180+(qua*2)) Plot x1+Sin(i1+punkt1_winkel)*k_radius,y1+Cos(i1+punkt1_winkel)*k_radius strecke_x(q)=x1+Sin(i1+punkt1_winkel)*k_radius:strecke_y(q)=y1+Cos(i1+punkt1_winkel)*k_radius strecke_image(q)=(ATan2(strecke_x(q)-x1,strecke_y(q)-y1)+360) Mod 360 q=q+1 i1=i1+step_rate1 Wend length = Sqr(((punkt3_x-punkt2_x)*(punkt3_x-punkt2_x))+((punkt3_y-punkt2_y)*(punkt3_y-punkt2_y))) For j=1 To length wink#=(ATan2(punkt3_x-punkt2_x,punkt3_y-punkt2_y)+360)Mod 360 strecke_x(q)=punkt2_x+Sin(wink)*j: strecke_y(q)=punkt2_y+Cos(wink)*j Plot strecke_x(q),strecke_y(q) strecke_image(q)= ((wink+90)+360)Mod 360 q=q+1 Next i1=1 While i1=<(180-(qua*2)) Plot x2+Sin(i1+punkt3_winkel)*k_radius2,y2+Cos(i1+punkt3_winkel)*k_radius2 strecke_x(q)=x2+Sin(i1+punkt3_winkel)*k_radius2:strecke_y(q)=y2+Cos(i1+punkt3_winkel)*k_radius2 strecke_image(q)=(ATan2(strecke_x(q)-x2,strecke_y(q)-y2)+360)Mod 360 q=q+1 i1=i1+step_rate2 Wend length = Sqr(((punkt1_x-punkt4_x)*(punkt1_x-punkt4_x))+((punkt1_y-punkt4_y)*(punkt1_y-punkt4_y))) For j=1 To length wink#=(ATan2(punkt1_x-punkt4_x,punkt1_y-punkt4_y)+360)Mod 360 strecke_x(q)=punkt4_x+Sin(wink)*j: strecke_y(q)=punkt4_y+Cos(wink)*j Plot strecke_x(q),strecke_y(q) strecke_image(q)= ((wink+90)+360)Mod 360 q=q+1 Next q=q-1 ab=q/16 ;Berechnung der Länge der kette For i2#=1 To ab kette(i2)=(i2*16) Next End Function Function baukette() kette_gl=CreateImage(21,12) SetBuffer ImageBuffer(kette_gl) For x = 0 To 21 For y = 0 To 12 Color 10,10,x*10 Plot x,y Next Next SetBuffer BackBuffer() MidHandle kette_gl avc=360 For frames=0 To 364 kette_image(frames)=CopyImage(kette_gl) RotateImage kette_image(frames),avc avc=avc-1 Next End Function |
||
AvaGast |
Sa, März 06, 2004 23:35 Antworten mit Zitat |
|
---|---|---|
Irgendwie ist das sehr sehr cool!! =) *begeistert bestaun* hihi | ||
Firstdeathmaker |
Di, März 09, 2004 10:40 Antworten mit Zitat |
|
---|---|---|
< finds auch cool! | ||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
Übersicht BlitzBasic Codearchiv
Powered by phpBB © 2001 - 2006, phpBB Group