Programmerare, skeptiker, sekulärhumanist, antirasist.
Författare till bok om C64 och senbliven lantis.
Röstar pirat.
2014-05-03
Jag använder min Commodore 128 för detta exempel, eftersom jag vill komma åt den höga upplösningen i 80-kolumnsläget, men koden är körbar även på C64, Vic 20 och Pet, med reservation för radbryten och annat. Jag använder alltså en skärm som rymmer 80 tecken per rad, och kan representera talen 0 till och med 80 grafiskt med ett tecken. Denna kod kan representera talen 1 till 80 och här får 70 minustecken representera talet 70:
När helst ett värde måste skalas om, kan linjär interpolering användas. Låt säga att du vill presentera värden mellan, säg 50 och 550 under förutsättningen att du bara får plats med 80 tecken på en rad. Här laddar jag tio tal mellan 50 och 550 i vektorn A:
Algoritmen för att interpolera ett värde måste veta vad som ska interpoleras, vilken skala värdet ligger på (min och max) och vilken skala som värdet ska presenteras i (min och max). Själva formeln ser ut så här: NyttVärde = NyMin + (Värde – GammalMin) * (NyMax – NyMin) / (GammalMax – GammalMin).
Om vi sätter ihop nummerserien med presentationen får vi detta:
Vilket ger:
Om vi inte skriver ut det nya numret i klartext, utan använder iterationen från första bilden, enligt följande:
…så får vi detta resultat:
Categories: General
Tags: C128
Bjud mig på en kopp kaffe (20:-) som tack för bra innehåll!
Leave a Reply