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

66

    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. Mielessäni vieläkin T

      Harmi että siinä kävi niinkuin kävi, rakastin sinua. Toivotan sulle kaikkea hyvää. Toivottavasti löydät sopivan ja hyvän
      Ikävä
      37
      1826
    2. Nellietä Emmaa ja Amandaa stressaa

      Ukkii minnuu Emmaa ja Amandaa stressaa ihan sikana joten voidaanko me koko kolmikko hypätä ukin kainaloon ja syleilyyn k
      Isovanhempien jutut
      6
      1401
    3. Pupuhuhdasta löytyi lähes sadan kilon miljoonalasti huumeita

      Pupuhuhdasta löytyi lähes sadan kilon miljoonalasti huumeita – neljä Jyväskylän Outlaws MC:n jäsentä vangittu: "Määrät p
      Jyväskylä
      43
      1396
    4. Ei luottoa lakko maahan

      Patria menetti sovitun ksupan.
      Suomen Keskusta
      14
      1362
    5. Nähtäiskö ylihuomenna taas siellä missä viimeksikin?

      Otetaan ruokaöljyä, banaaneita ja tuorekurkkuja sinne messiin. Tehdään taas sitä meidän salakivaa.
      Ikävä
      1
      1355
    6. Persut petti kannattajansa, totaalisesti !

      Peraujen fundamentalisteille, vaihtkaa saittia. Muille, näin sen näimme. On helppo luvata kehareille, eikä ne ymmärrä,
      Maailman menoa
      7
      1324
    7. Sinäkö se olit...

      Vai olitko? Jostain kumman syystä katse venyi.. Ajelin sitten miten sattuu ja sanoin ääneen siinä se nyt meni😅😅... Lis
      Ikävä
      0
      1294
    8. Housuvaippojen käyttö Suomi vs Ulkomaat

      Suomessa housuvaippoja aletaan käyttämään vauvoilla heti, kun ne alkavat ryömiä. Tuntuu, että ulkomailla housuvaippoihin
      Vaipat
      1
      1260
    9. Hyvää yötä ja kauniita unia!

      Täytyy alkaa taas nukkumaan, että jaksaa taas tämän päivän haasteet. Aikainen tipu madon löytää, vai miten se ärsyttävä
      Tunteet
      2
      1210
    10. Lepakot ja lepakkopönttö

      Ajattelin tehdä lepakkopöntön. Tietääkö joku ovatko lepakot talvella lepakkopöntössä ´vai jossain muualla nukkumassa ta
      2
      1183
    Aihe