Kahden pisteen välinen "köysi"
Kahden pisteen välinen "köysi"
Tarvitsisin sivustapäin kuvattuun peliin funktion, joka piirtää tietyn pituisen viivan kahden pisteen välille. Köyden pitää siis olla kiinni molemmissa pisteissä, ja sen pitäisi muodostaa ikään kuin riippusilta pisteiden välille. Molempia pisteitä sekä köyden pituutta pitäisi pystyä muuttamaan reaaliajassa. Miten tällaista funktiota kannattaisi ruveta toteuttamaan? (Suunnittelin että köysi olisi paraabelin muotoinen, mutta tällöin kaaren pituuden määrittäminen integraalilla meni aivan liian monimutkaiseksi)
Projektit:
Jotain pientä (Ehkä vähän suurempaakin)
-Tuxi- (myös Tuxi4321)
Jotain pientä (Ehkä vähän suurempaakin)
-Tuxi- (myös Tuxi4321)
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: Kahden pisteen välinen "köysi"
Esimerkiksi jousijärjestelmällä:
Code: Select all
SCREEN 640, 480
Const amount = 99
Dim points#(amount, 3)
For i = 0 To amount
points(i, 0) = 320+i*100.0/amount
points(i, 1) = 240
Next i
plen# = 100.0/amount
k# = 2.0
PositionMouse 420, 240
Repeat
plen = plen + (KeyDown(200)-KeyDown(208))*.1
For k = 0 To 9
For i = 0 To amount-1
xd# = points(i,0)-points(i+1,0)
yd# = points(i,1)-points(i+1,1)
d# = Sqrt(xd*xd+yd*yd)
d = -(d-plen)*k/d
points(i ,2) = points(i ,2)+xd*d
points(i ,3) = points(i ,3)+yd*d
points(i+1,2) = points(i+1,2)-xd*d
points(i+1,3) = points(i+1,3)-yd*d
Next i
For i = 0 To amount
points(i,0) = points(i,0)+points(i,2)*.002
points(i,1) = points(i,1)+points(i,3)*.002
points(i,2) = points(i,2)*.995
points(i,3) = points(i,3)*.995+.5
Next i
points(0,0) = 320
points(0,1) = 240
points(amount,0) = MouseX()
points(amount,1) = MouseY()
Next k
Lock
For i= 0 to amount-1
Line points(i,0), points(i,1), points(i+1,0), points(i+1,1)
Next i
Unlock
DrawScreen
Forever