cb-hackers / cbEnchanted

A new runtime for CoolBasic
13 stars 3 forks source link

CurveAngle bugaa #88

Closed aXu-AP closed 12 years ago

aXu-AP commented 12 years ago

CurveAngle ei osaa käsitellä vastapäivään 360 asteen ylittämistä:

FrameLimit 60
Repeat
    Angle# = CurveAngle(GetAngle(200, 150, MouseX(), MouseY()), Angle, 7)
    Line 200, 150, 200 + Cos(Angle) * 100, 150 - Sin(Angle) * 100
    Text 0, 0, "Kulma: " + Angle
    DrawScreen
Forever

(pyöritä hiirtä vastapäivään keskipisteen ympäri)

valscion commented 12 years ago

Korjattu sinun CB-koodin tavalla. Kiitos paljon :)

aXu-AP commented 12 years ago

Kiva ettei tullut tehtyä turhaa työtä :) Se minun koodi ei sitten tarkista, onko lopputulos välillä 0-360, eli tuo tarkistus kannattaa tietty muistaa lisätä siihen. Ja se ensimmäisellä rivillä oleva WrapAngle olikin ihan turha, seuraavat rivit pitävät huolen siitä, jos kulmien ero on suurempi kuin 180 korjataan se.

valscion commented 12 years ago

Hyvä huomio. Tein muutokset cbEnchantediin myös ;D

aXu-AP commented 12 years ago

Eh, mitähän minä silloin ajattelin, tuossa ekalla rivillä lisätään uuteen kulmaan 180 astetta, seuraavalla rivillä lisätään toisen kerran 180 astetta (ja vähennetään siitä edellinen)... eli ensimmäinen rivi on täysin turha ja toiselta riviltä se + 180 on myös ylimääräinen (jälkimmäinen kompensoi ensimmäisen aiheuttamaa virhettä). Eli (toivottavasti) lopullinen cb-versio tästä on:

Function CurveAngle2(newA#, oldA#, smooth#)
    ADiff# = oldA - newA
    While ADiff > 180
        ADiff - 360
    Wend
    While ADiff < -180
        ADiff + 360
    Wend
    Return WrapAngle(oldA - ADiff / smooth)
EndFunction
valscion commented 12 years ago

Heh, laitoin vielä tuonkin :D. Voit muuten saada helpommin koodin rivitettyä kun käytät kolmea backtickiä (```), säästyt turhalta HTML-koodilta ja nuo < ja > merkit toimivat myös oikein.

aXu-AP commented 12 years ago

Katsos, niinpä toimiikin :D En ole mistään löytänyt kattavaa selitystä tästä githubin merkintäsysteemistä (vaikka tuo kyllä löytyi cheat sheetistä). Yksi juttu mitä en ole kanssa löytänyt, on yliviivaus.