Ohjelmointipulma matematiikan kanssa.

Mutjake

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ä? :)

3

67

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 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

    1. Millä voin

      Hyvittää kaiken?
      Ikävä
      96
      2685
    2. Jotain puuttuu

      Kun en sinua näe. Et ehkä arvaisi, mutta olen arka kuin alaston koivu lehtiä vailla, talven jäljiltä, kun ajattelen sinu
      Ikävä
      103
      2272
    3. Haluan sut

      Haluatko sinä vielä mut?
      Ikävä
      91
      2020
    4. Ampuminen Iisalmessa

      Älytöntä on tämä maailman meno.
      Iisalmi
      13
      1749
    5. Hei A, osaatko

      sanoa, miksi olet ihan yhtäkkiä ilmestynyt kaveriehdotuksiini Facebookissa? Mitähän kaikkea Facebook tietää mitä minä en
      Ikävä
      44
      1701
    6. Pohjola kadulla paukuteltu

      Iltasanomissa juttua.
      Iisalmi
      36
      1666
    7. Haluaisin aidosti jo luovuttaa ja unohtaa

      Ei tästä mitään tule koskaan.
      Ikävä
      78
      1666
    8. 92
      1593
    9. Synnittömänä syntyminen

      Helluntailaisperäisillä lahkoilla on Raamatunvastainen harhausko että ihminen syntyy synnittömänä.
      Helluntailaisuus
      129
      1467
    10. Mitä tämä tarkoittaa,

      että näkyy vain viimevuotisia? Kirjoitin muutama tunti sitten viestin, onko se häipynyt avaruuteen?
      Ikävä
      41
      1284
    Aihe