curveangle
curveangle
ei tää oo oikeestaan ongelma, mutta miten toi curveangle laskee sen arvon?
ois hyötyy toisissa ohjelmointikielissä
ois hyötyy toisissa ohjelmointikielissä
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: curveangle
Se todennäköisesti laskee kulmien eron, jakaa sen tuolla smooth-arvolla ja palauttaa tämän arvon. Suunnilleen ainakin.Guest wrote:ei tää oo oikeestaan ongelma, mutta miten toi curveangle laskee sen arvon?
ois hyötyy toisissa ohjelmointikielissä
Re: curveangle
Tässä olisi CurveValue:a vastaa funktio esimerkkikoodeineen josta selviää laskukaava. Samaa voit soveltaa CurveAngleen mutta siinä pitää vähän kikkailla kääntösuunnan kanssa.
Code: Select all
SCREEN 800, 600
cow = LoadImage("media/cow.bmp")
x1# = 0
x2# = 0
Repeat
DrawImage cow, x1, 100
DrawImage cow, x2, 200
x1 = CurveValue(770, x1, 80)
x2 = CurveValue2(770, x2, 80)
If KeyHit(cbKeyReturn) Then
x1 = 0
x2 = 0
EndIf
DrawScreen
Forever
Function CurveValue2#(_new#, _old#, _smooth#)
Return _old + (_new - _old) * (1.0 / _smooth)
EndFunction
Re: curveangle
HOX! kyse oli curveANGLEsta ei VALUEsta, curvevaluehan on selvää pässinlihaa mutta pitäminen 360 asteen sisällä on vähä hankalempaa
Re: curveangle
Et tainnut lukea tuota Marcoderin viestiä?Vieras wrote:HOX! kyse oli curveANGLEsta ei VALUEsta, curvevaluehan on selvää pässinlihaa mutta pitäminen 360 asteen sisällä on vähä hankalempaa
Matcoder wrote:Samaa voit soveltaa CurveAngleen mutta siinä pitää vähän kikkailla kääntösuunnan kanssa
CoolBasic henkilökuntaa
Kehittäjä
Kehittäjä
Re: curveangle
Voi hyvänen aika sentään!Vieras wrote:HOX! kyse oli curveANGLEsta ei VALUEsta, curvevaluehan on selvää pässinlihaa mutta pitäminen 360 asteen sisällä on vähä hankalempaa
En laittanut valmista koodia vaan pelkän laskukaavan siksi että saat itse ratkaista ongelman. Tiedäthän että ohjelmoijan yksi tärkeimmistä ominaisuuksista on hyvä ongelmanratkaisukyky.
Mutta jos ei vaan onnistu niin tässä tulee.
Code: Select all
Function CurveAngle2(_new#, _old#, _smooth#)
diff# = WrapAngle(_new) - WrapAngle(_old)
If diff > 180 Then diff = diff - 360
If diff < -180 Then diff = diff + 360
Return _old + (diff) * (1.0 / _smooth)
EndFunction
Re: curveangle
Siinä on vain se, että se asteluku pitäisi saada pysymään lukujen 0 ja 360 välissä, ei lukujen -180 ja 180. En väitä, etten tuota silti osaisi helposti korjata itsekin, pilkunviilaus vain on välillä hauskaa
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Re: curveangle
En testannut koodia itse, mutta väittäisin, että sen kuuluu olla juuri nimen omaan väliltä -180 ja 180, koska tuon tarkoitushan on kääntää objektia pehmeästi lyhimpään suuntaan. Tietäne varmaan, että jos käännyt esim. oikealle, et voi kääntyä enempää kuin 180 astetta, koska jos joutuisit kääntymään esim 190 astetta, olisi nopeampaa kääntyä vasemmalle (vain 170 astetta).OonSuomesta wrote:Siinä on vain se, että se asteluku pitäisi saada pysymään lukujen 0 ja 360 välissä, ei lukujen -180 ja 180. En väitä, etten tuota silti osaisi helposti korjata itsekin, pilkunviilaus vain on välillä hauskaa
CoolBasic henkilökuntaa
Kehittäjä
Kehittäjä
Re: curveangle
No näinhän se on. Silti sen numeroarvon tulisi olla väliltä 0-360, eikä negatiivinen. Tarkoitus on kumminkin saada se "oikea" asteluku välillä 0-360. Katso vaikka mitä CoolBasicin manuaali sanoo:TheFish wrote:En testannut koodia itse, mutta väittäisin, että sen kuuluu olla juuri nimen omaan väliltä -180 ja 180, koska tuon tarkoitushan on kääntää objektia pehmeästi lyhimpään suuntaan. Tietäne varmaan, että jos käännyt esim. oikealle, et voi kääntyä enempää kuin 180 astetta, koska jos joutuisit kääntymään esim 190 astetta, olisi nopeampaa kääntyä vasemmalle (vain 170 astetta).OonSuomesta wrote:Siinä on vain se, että se asteluku pitäisi saada pysymään lukujen 0 ja 360 välissä, ei lukujen -180 ja 180. En väitä, etten tuota silti osaisi helposti korjata itsekin, pilkunviilaus vain on välillä hauskaa
CURVEANGLE
KUVAUS
Sama kuin CurveValue, mutta pitää kulman välillä 0-360. Funktion toinen ihanuus on se, että CoolBasic valitsee automaattisesti sen lyhimmän polun, eli käännytään siihen suuntaan kun se olisi loogisinta.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Re: curveangle
Voi mahoton sentään että yksinkertaisimmatkin asiat pitää saada valmiina käteen.OonSuomesta wrote:Tarkoitus on kumminkin saada se "oikea" asteluku välillä 0-360.
Code: Select all
Function CurveAngle2(_new#, _old#, _smooth#)
diff# = WrapAngle(_new) - WrapAngle(_old)
If diff > 180 Then diff = diff - 360
If diff < -180 Then diff = diff + 360
Return WrapAngle(_old + (diff) * (1.0 / _smooth))
EndFunction
No jos seuraavaksi ihmettelet kuinka tuo WrapAngle toimii niin tässä vastaava koodi
Code: Select all
Function WrapAngle2(_angle#)
ret# = _angle
While ret < 0 : ret + 360 : Wend
While ret >= 360 : ret - 360 : Wend
Return ret
EndFunction
Re: curveangle
Minä en ole missään vaiheessa pyytänyt että kirjoitat näitä koodeja, ilmoitin vain asian niin kuin sen kuuluisi olla.Marcoder wrote:Voi mahoton sentään että yksinkertaisimmatkin asiat pitää saada valmiina käteen.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com