Kordel

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Kabelbinder

Sieger des WM-Contest 2006

Betreff: Kordel

BeitragDo, Apr 05, 2007 21:10
Antworten mit Zitat
Benutzer-Profile anzeigen
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>
 

FWeinb

ehemals "ich"

BeitragDo, Apr 05, 2007 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Kabelbinder

Sieger des WM-Contest 2006

BeitragDo, Apr 05, 2007 22:18
Antworten mit Zitat
Benutzer-Profile anzeigen
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>

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Apr 06, 2007 2:29
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Apr 06, 2007 9:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey, cool. Das macht richtig Spaß^^

find ich auf jeden Fall interessant... Vor allem die Physik bei hectic Smile
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+

Kabelbinder

Sieger des WM-Contest 2006

BeitragFr, Apr 06, 2007 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo. nicht schlecht, hectic. Dein Programm macht auf jeden Fall mehr Sinn als meins Very Happy .
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group