Startsidan  ▸  Texter  ▸  Teknikblogg

Anders Hesselbom

Programmerare, skeptiker, sekulärhumanist, antirasist.
Författare till bok om C64 och senbliven lantis.
Röstar pirat.

Linjär interpolering

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

Leave a Reply

Your email address will not be published. Required fields are marked *



En kopp kaffe!

Bjud mig på en kopp kaffe (20:-) som tack för bra innehåll!

Bjud på en kopp kaffe!

Om...

Kontaktuppgifter, med mera, finns här.

Följ mig

Twitter Instagram
GitHub RSS

Public Service

Folkbildning om public service.

Hem   |   linktr.ee/hesselbom   |   winsoft.se   |   80tal.se   |   Filmtips