Kordel
Übersicht

![]() |
KabelbinderSieger des WM-Contest 2006Betreff: Kordel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
Eine Kette aus mehreren mehreren Gliedern, bei der eins immer dem nächsten folgt. Das Problem hierbei ist die Hierarchie in der Kette: Das erste Stück der Kette ist gänzlich unabhängig vom Rest der Kette. Das zweite folgt dem ersten, das dritte dem zweiten usw. D.h. Einfluss hat ein Stück der Kette nur auf alles, das tiefer in dieser Hierarchie steht. In der Realität gibt es solche Ketten-Hierarchien ja nicht wirklich. Jedes Glied hat Einfluss auf seinen Vorgänger und Nachfolger. Darum ist es schwer, realistische Kräfte auf die Kette wirken zu lassen. Einfache Gravitation geht schon. Aber dann kann die Kette z.B. nicht schwingen, weil das aus dem Einfluss eines Gliedes auf den Vorgänger folgt und den gibts nicht. Code: [AUSKLAPPEN] Graphics 640,480,16,2
SetBuffer BackBuffer() Const laenge = 93 Const kraft# = 0.001 Dim gl#(100,2) Function spat#(x1#,y1#,x2#,y2#) Return Sqr((x1-x2)^2+(y1-y2)^2) End Function For i = 0 To laenge gl(i,1)=320 gl(i,2)=100+i*19 Next MoveMouse(320,100) Repeat mx = MouseX() my = MouseY() gl(0,1)=mx gl(0,2)=my Oval gl(0,1)-5,gl(0,2)-5,9,9 For i = 1 To laenge Repeat If spat(gl(i,1),gl(i,2),gl(i-1,1),gl(i-1,2))>9 Then roll#=ATan2(gl(i,2)-gl(i-1,2),gl(i,1)-gl(i-1,1))+180 gl(i,1)=gl(i,1)+Cos(roll)*0.2 EndIf If spat(gl(i,1),gl(i,2),gl(i-1,1),gl(i-1,2))>9 Then roll#=ATan2(gl(i,2)-gl(i-1,2),gl(i,1)-gl(i-1,1))+180 gl(i,2)=gl(i,2)+Sin(roll)*0.2 EndIf Until spat(gl(i,1),gl(i,2),gl(i-1,1),gl(i-1,2))<=9 Oval gl(i,1)-5,gl(i,2)-5,9,9 Next Flip Cls Until KeyHit(1) End |
||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Aber das was du darstelles ist doch nur eien Kordel OHNE Gravitation ^^ | ||
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs |
![]() |
KabelbinderSieger des WM-Contest 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Is richtig. Ich habe auch nur gesagt, das es möglich wäre, "Gravitation" darauf zu wirken.
Etwa so: Code: [AUSKLAPPEN] Graphics 640,480,16,2
SetBuffer BackBuffer() Const laenge = 46 Const kraft# = 0.1 Dim gl#(100,5) Function spat#(x1#,y1#,x2#,y2#) Return Sqr((x1-x2)^2+(y1-y2)^2) End Function For i = 0 To laenge gl(i,1)=320 gl(i,2)=100+i*19 Next MoveMouse(320,100) Repeat mx = MouseX() my = MouseY() gl(0,1)=mx gl(0,2)=my Oval gl(0,1)-5,gl(0,2)-5,9,9 For i = 1 To laenge gl(i,5)=gl(i,5)+kraft gl(i,5)=gl(i,5)*0.992 If gl(i,5)<>0 And (Int(gl(i,1))=Int(gl(i-1,1))) Then gl(i,5)=0 gl(i,2)=gl(i,2)+gl(i,5) Repeat If spat(gl(i,1),gl(i,2),gl(i-1,1),gl(i-1,2))>9 Then roll#=ATan2(gl(i,2)-gl(i-1,2),gl(i,1)-gl(i-1,1))+180 gl(i,1)=gl(i,1)+Cos(roll)*0.2 EndIf If spat(gl(i,1),gl(i,2),gl(i-1,1),gl(i-1,2))>9 Then roll#=ATan2(gl(i,2)-gl(i-1,2),gl(i,1)-gl(i-1,1))+180 gl(i,2)=gl(i,2)+Sin(roll)*0.2 EndIf Until spat(gl(i,1),gl(i,2),gl(i-1,1),gl(i-1,2))<=9 Oval gl(i,1)-5,gl(i,2)-5,9,9 Next Flip Cls Until KeyHit(1) End |
||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey cool, ich hab auch mal sowas gemacht. Mit Gravitation und Geschwindigkeit. Code: [AUSKLAPPEN] Graphics 800,800,0,2
SetBuffer BackBuffer() q%=0;Allgemeine Schleifenvariable ln#=20;Länge der einzelnen Kettenglieder st%=20;Gesamtanzahl der Kettenglieder s1#=0;Ist/länge des aktuellen Kettenglieds s2#=0;Soll/länge des aktuellen Kettenglieds dx#=0;Zwischenvariable für Phytagoraz dy#=0;Zwischenvariable für Phytagoraz wk#=0;Winkel des aktuellen Kettenglieds Dim xp#(st) ;X-Position Dim yp#(st) ;Y-Position Dim x1#(st) ;X-1.Zwischenposition Dim y1#(st) ;Y-1.Zwischenposition Dim xg#(st) ;X-Geschwindigkeit Dim yg#(st) ;Y-Geschwindigkeit hh#=2 ;Steifigkeit einzelner Glieder ;Mausposition auf mitte des Bildschirmes MoveMouse 400,200 ;Kettenposition auf mitte des Bildschirmes For q=0 To st xp(q)=400 yp(q)=200+q*ln;(q Mod 2)*ln x1(q)=xp(q) y1(q)=yp(q) Next While Not KeyHit(1) ;Erstes Kettenglied auf Mausposition setzen xp(0)=MouseX() yp(0)=MouseY() For w=1 To 40 xp(0)=MouseX() yp(0)=MouseY() For q=0 To st-1 wk=(ATan2(yp(q)-yp(q+1),xp(q)-xp(q+1)))Mod 360 dx=(xp(q+1)+Cos(wk)*ln)-xp(q) dy=(yp(q+1)+Sin(wk)*ln)-yp(q) xp(q+1)=xp(q+1)-dx/2.0 yp(q+1)=yp(q+1)-dy/2.0 xg(q+1)=xg(q+1)-dx/2.0 yg(q+1)=yg(q+1)-dy/2.0 xp(q)=xp(q)+dx/2.0 yp(q)=yp(q)+dy/2.0 xg(q)=xg(q)+dx/2 yg(q)=yg(q)+dy/2 Next Next For q=1 To st yg(q)=yg(q)+.02 xg(q)=xg(q)*.999 yg(q)=yg(q)*.999 xp(q)=xp(q)+xg(q) yp(q)=yp(q)+yg(q) Color 120+(q Mod 2)*120,0,0 Line xp(q),yp(q),xp(q-1),yp(q-1) Next ;Cursorspielerei If KeyDown(203) xg(st)=xg(st)-1 If KeyDown(205) xg(st)=xg(st)+1 If KeyDown(200) yg(st)=yg(st)-1 If KeyDown(208) yg(st)=yg(st)+1 ;Mausposition zeichnen Color 200,200,200 Oval xp(0)-4,yp(0)-4,9,9,0 ;Standardkramm Flip Cls Wend End Die Erweiterung dazu, wo beliebige Objekte daraus geformt werden können, hier ein Link (vierter Eintrag von unten). https://www.blitzforum.de/foru...p;start=20 Vielleicht hilfts ja. |
||
FBI-blitz |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey, cool. Das macht richtig Spaß^^
find ich auf jeden Fall interessant... Vor allem die Physik bei hectic ![]() |
||
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+ Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+ |
![]() |
KabelbinderSieger des WM-Contest 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jo. nicht schlecht, hectic. Dein Programm macht auf jeden Fall mehr Sinn als meins ![]() |
||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group