Seil auspendeln lassen...
Übersicht

onkelz89Betreff: Seil auspendeln lassen... |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
hab folgenden Code eben erstellt. Klappt soweit auch ganz gut, nur wie lasse ich das Seil auspendeln? Man müsste ja irgendwie die Geschwindigkeit von dem Körper messen (der unten hängt) oder??? Code: [AUSKLAPPEN] Graphics 800,600,32,2
SetBuffer = BackBuffer() laenge=150 x=450 y=300 xa=400 ya=300 timer=CreateTimer(45) While Not KeyHit(1) Cls Color 200,200,200 Line xa,ya,x,y Color 0,0,200 Rect x,y,5,5 y=y+1 ;vereinfacht schwerkraft mom=0 If xa>x Then mom=mom+(xa-x) If xa<x Then mom=mom+(x-xa) If ya>y Then mom=mom+(ya-y) If ya<y Then mom=mom+(y-ya) If mom>laenge Then For i = 0 To (mom-laenge) If xa>x Then x=x+1 If xa<x Then x=x-1 If ya>y Then y=y+1 If ya<y Then y=y-1 Next EndIf If KeyDown(81) Then xa=xa+2 ;Num Pad Tasten 1 & 2 If KeyDown(79) Then xa=xa-2 If KeyDown(74) Then laenge=laenge-1 ;Num Pad + & - If KeyDown(78) Then laenge=laenge+1 Text 10,10,mom+" Meter" WaitTimer(timer) Flip Wend |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, erstmal heisst es ''SetBuffer BackBuffer()'' und nicht ''SetBuffer = BackBuffer()'', ganz wichtig! Sonst ruckelte es nur so rum. ![]() Und jetzt zu deinen Fragen: Zum Auspendeln brauchst du zusätzlich zu deiner Position noch eine Geschwindigkeitsvariable. Was ich gerne wissen würde: Willst du ein Pendel welches an einer Stange verbunden ist, oder an einem Gummiband? |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hectic hat Folgendes geschrieben: Also, erstmal heisst es ''SetBuffer BackBuffer()'' und nicht ''SetBuffer = BackBuffer()'', ganz wichtig! Sonst ruckelte es nur so rum.
![]() Und jetzt zu deinen Fragen: Zum Auspendeln brauchst du zusätzlich zu deiner Position noch eine Geschwindigkeitsvariable. Was ich gerne wissen würde: Willst du ein Pendel welches an einer Stange verbunden ist, oder an einem Gummiband? Oh das mit dem ''SetBuffer = BackBuffer()" hab ich sehr oft gemacht.. hm vielleicht werden ein paar Projekt ab jetzt doch noch was werden ![]() Und bin gerade am testen mit der Geschwindigkeitsvariabel... muss noch en bissel probieren befors klappt. Es soll eigentlich ein Seil sein mit ein wenig toleranz. Aber hab erstmal keine "feinheiten" eingebaut das wär dann ja noch schwerer. Wüsste mom auch gar nicht wie ich es als Seil darstellen könnte... |
||
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kurzer Stand der Dinge:
Code: [AUSKLAPPEN] Graphics 800,600,32,2
SetBuffer BackBuffer() laenge=150 x=450 y=300 xa=400 ya=300 xb=0;backup xs=0;x koordinaten speed timer=CreateTimer(45) While Not KeyHit(1) Cls xb=x Color 200,200,200 Line xa,ya,x,y Color 0,0,200 Rect x,y,5,5 y=y+1 ;vereinfacht schwerkraft x=x+xs mom=0 If xa>x Then mom=mom+(xa-x) If xa<x Then mom=mom+(x-xa) If ya>y Then mom=mom+(ya-y) If ya<y Then mom=mom+(y-ya) If mom>laenge Then For i = 0 To (mom-laenge) If xa>x Then x=x+1 If xa<x Then x=x-1 If ya>y Then y=y+1 If ya<y Then y=y-1 Next EndIf If xb<x Then xs=2 If xb>x Then xs=-2 If KeyDown(81) Then xa=xa+5 If KeyDown(79) Then xa=xa-5 If KeyDown(74) Then If laenge>5 Then laenge=laenge-1 If KeyDown(78) Then If laenge<200 Then laenge=laenge+1 Text 10,10,mom+" Meter" WaitTimer(timer) Flip Wend Jetzt geht es aber naja... halt noch nicht soooo realistisch ![]() Und hat einer ne Idee wie ich das verfeinern könnte? |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Problem ist, dass du es versucht mit If-Abfragen zu machen und dadurch natürlich unrealistisches Verhalten zu beobachten gekommst. Besser ist es auf rein mathematischem Wege zu lösen. Dazu habe ich mal ein Seil gemacht, was aber schon etwas länger her ist und somit sicherlich nicht die eleganteste Lösung ist: 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 20 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 Willst du noch eine Erweiterung dazu, die zudem wesentlich eleganter programmiert wurde, so schaue dir mal folgenden Link an https://www.blitzforum.de/foru...p;start=36 Gleich der erste Beitrag (hier auf 36 gesetzt). |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
![]() Wie kommt man auf sowas? Also ich mein nur durch ausprobieren gehts ja nu net... Gibt es ne Site wo so Formeln drin stehen oder selber im Physikbuch nachgeschaut? Aja noch ne Frage: Wie weit darf man den Quellcode für eigene Projekte benutzen? Und vielen Dank für die Infos |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Idee es nachzuprogrammieren hatte ich, als ich bis zum Umfallen die Demo von ''Bridge Builder'' gespielt habe. Die Formeln dazu habe ich mir selber ausgedacht, doch die Formeln sind nicht neues. Physik-Engines zB nutzen ähnliche Varianten bzw. Methoden um physikalisches Verhalten zu simulieren. Also dem Aufbau einzeln verbundener Knotenpunkte die in ihrer Gesamtstruktur ein Körper bilden.
Was den Code im Codearchiv betrifft, so habe ich mir https://www.blitzforum.de/foru...hp?t=17380 durchgelesen und bin mir im klaren, was es zu bedeuten hat. Den Code den ich hier oben gepostet habe, würde ich dir nicht empfehlen ihn zu nutzen (war nur als Grundgedanke angedacht), da ich es mitlerweile anders machen würde. Aber wenn du genau diesen nutzen möchtest, so bleibt dir auch dieser offen. ![]() Weil du anscheinend so begeistert von diesem Teil bist, hier noch ein kleines Pregame von mir http://www.hectic.de/data/buggy_2d.rar Dabei zuvor die liesmich.txt lesen. Viel Spaß..! |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen Danke für die Hilfe ![]() Das mit der Autophysik is auch cool. Basiert das auf dem gleichen Prinzip? |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, die Autophysik ist bis auf wenige Ausnahmen aus dem oben genannten Editor entnommen worden. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Köntest du Hectic nich mal ein Tutorial zu alle dem Schreiben denn dann würde man das auch alles Verstehen ^^
mfg ich |
||
"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 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmmm, also so schwer ist es ja nun nicht. Kannst ja mal versuchen, dir alle Beiträge durch zu lesen. Viele hatten Fragen an mich und ich habe jedem versucht es zu erklären. Im grunde habe ich es sogar mehrmals immer wieder erklärt und versucht jedesmal anders zu formulieren. Doch bei recht einseitiger Technik, kommt doch immer das selbe bei raus.
Im grunde geht es um KPs (KnotenPunkte beinhalten: Position und Geschwindigkeit) und VKs (VerKlinkungen beinhalten Informationen, welche KPs miteinander verbunden sind). Ein entsprechendes Update beider Schleifen macht das ganze physikalisch so korrekt. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
JA gut aber ich meint ja auch nur damit du es eben nicht ständieg wieder Erklähren must ^^ | ||
"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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group