Heippa!
Viimeisistä matematiikantunnistani on jo yli 6v ja nyt ei meinaa taas lanttu leikata ohjelmoinnin parissa. En millään hoksaa mitä keinoa tässä pitäisi soveltaa
Hakussa olisi siis täydennystä if lausekkeeseen, mutta satunnaisen kokeilun sijaan olisi mukava oppia miten tällaiset tilanteet voisi tulevaisuudessa ratkaista esim Wolframalphan avulla, kun muutamia numeroita tunnetaan.
Gif demonstraatio halutusta tuloksesta:
https://dl.dropboxusercontent.com/u/25020981/Postatut kuvat/blokkianimaatio.gif
Mustaharmaa kuutio on tässä ns pelaaja ja ympärillä palikoista koostuva maa tulisi saada reagoimaan animaation tavoin useilla eri muuttujien arvoilla.
Muutama muuttuja:
minY = -3; maapalikan minimikorkeus
maxY = 0; maapalikan maksimikorkeus
distanceClose = 2;
distanceFar = 5; pelaajan etäisyys maapalikkaan näiden 2 arvon välillä tulisi liikuttaa palikkojen korkeutta lineaarisesti.
distance; yksittäisen palikan etäisyys pelaajaan vaaka-akselilla, korkeutta ei siis huomioida.
Maapalikoiden korkeus vaihtelee siis -3 ja 0 yksikön välillä. Pelaajan ollessa lähempänä kuin 5 yksikön päässä maapalikasta, palikan tulisi nousta lineaarisesti ylöspäin, kunnes etäisyys on 2, jolloin saavutettaisiin korkeus 0. Palikat ovat 2 yksikön etäisyyden sisällä korkeudessa 0, eli pelaajan juuri pelaajan alapuolella
Elikkä:
if (distance < distanceFar && distance > distanceClose)
maapalikan korkeus = ???
Osaisitteko neuvoa, vai tarvitseeko tapaus lisää selvennystä? :)
Ohjelmointipulma matematiikan kanssa.
3
67
Vastaukset
- matikisti
Yleinen tapa lienee käyttää kaavaa f(x)=ax. Eli nyt ääriarvot ovat f(0)=0 ja f(1)=a. Siten esim puolessa välissä f(1/2)=a/2. Jos taas haluat kuvata välin [0,1] välille [a,b] lineaarisesti, niin kokeilepa kaavaa f(x)=(b-a)x a.
- Mutjake
Ei tainnut ihan vielä tällä selvitä.
Jos nyt koodin kannalta miettii niin a ja b olisivat tässä tapauksessa ilmeisesti distanceFar ja distanceClose, mutta jos haettava x olisi etäisyys, ei sitä voi ainakaan ilman yhtälön pyörittelyä tuonne väliin lisätä. Ja tästä varmaankin jäi huomioimatta muuttuva minimikorkeus, minY = -3. Se tulisi myös huomioida kaavassa.
Kokeilin kuitenkin kaavaa niin että x olisi distance elikkä:
korkeus = (((distanceClose-distanceFar))*(distance distanceFar))
Kuva tuloksesta: https://dl.dropboxusercontent.com/u/25020981/Postatut kuvat/korkeus.PNG
Mutta palikan muuttuva korkeus heittää pahasti halutusta 0 | -3 väliltä ja liikkuminen tapahtuu muutenkin korkeuksien -30 | -21 välillä. - Mutjake
Päätä hakkaamalla seinään kaava selvisi kun paperilla vähän töhersi, mutta eipä tästä oikein mitään kätevää oppinut, esim Wolframalphan käyttöä.
Jos jotakuta kiinnosta niin kaava oli lopulta:
(((distance-distanceClose)/(distanceClose-distanceFar))*(maxY-minY))
Eli ensin lasketaan mitenkä lähellä ollaan pistettä, jolloin korkeus on maksimissaan eli (distance-distanceClose).
Tulos jaetaan etäisyydellä, jonka aikana korkeus on muuttuva eli (distanceClose-distanceFar)
Näin saadaan prosenttiosuus kuljetusta matkasta jolloin korkeuden pitää muuttua ja lopulta tulos kerrotaan mahdollisen korkeuden muutoksen määrällä eli (maxY-minY)
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 962685
Jotain puuttuu
Kun en sinua näe. Et ehkä arvaisi, mutta olen arka kuin alaston koivu lehtiä vailla, talven jäljiltä, kun ajattelen sinu1032272- 912020
- 131749
Hei A, osaatko
sanoa, miksi olet ihan yhtäkkiä ilmestynyt kaveriehdotuksiini Facebookissa? Mitähän kaikkea Facebook tietää mitä minä en441701- 361666
- 781666
Persuilla ja Saksi-Riikalla meni sitten pornon levittämiseksi koko touhu.
Onko kenellekään yllätys?921593Synnittömänä syntyminen
Helluntailaisperäisillä lahkoilla on Raamatunvastainen harhausko että ihminen syntyy synnittömänä.1291467Mitä tämä tarkoittaa,
että näkyy vain viimevuotisia? Kirjoitin muutama tunti sitten viestin, onko se häipynyt avaruuteen?411284