Problem med teckenbaserade linjer (Matematisk utmaning)

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
ToPNoTCH
Inlägg: 5271
Blev medlem: 21 december 2009, 17:59:48

Problem med teckenbaserade linjer (Matematisk utmaning)

Inlägg av ToPNoTCH »

Knepig rubrik men jag hoppas jag kan beskriva mitt problem på ett förståligt sätt.

Jag fipplar med en OSD lösning och den genererar sin overlay i form av färdiga tecken.

Tecknen är definerade av 12X18 bildpunkter.

För att representera en virtuell horizont (styrs av en accelerometer) så har jag skapat 18 tecken med en(1) vit bilpunkt från rad 1 till rad 18.

Området som visar denna horizont är 17X17 tecken (alltså 204X 204 punkter).

Självfallet är mitten tecknet (tecknet på position kolumn 9,rad 9) en fast och centrerad punkt.

Nu vill jag hitta en formel för att lista ut vilket tecken som skall sitta på vilken rad för respektive kolumn, för att representera en linje där centrum tecknet utgör origo.

För att ge ett enkelt exempel så skulle en 45 gradig linje se ut så här:
kolumn 1,rad 1, tecken 9
kolumn 2,rad 2, tecken 9
kolumn 3,rad 3, tecken 9
kolumn 4,rad 4, tecken 9
osv....

En horizontal linje skulle bli:
kolumn 1,rad 9, tecken 9
kolumn 2,rad 9, tecken 9
kolumn 3,rad 9, tecken 9
kolumn 4,rad 9, tecken 9
osv....

När man börjar använda vinklar däremellan så kommer ju de andra tecknen in i matchen och det är här jag inte får till det.

Observera att när jag skriver streck så menar jag egentligen en rad med punkter, dom är ju inte sammanhängande givet hur jag tidigare beskrev att de definerats.

Det borde gå att lösa med en enklare formel tycker jag.

Någon som har någon ide ?

p.s
Det är svårt att beskriva problemet så ställ gärna kompletteringsfrågor.
d.s
sodjan
EF Sponsor
Inlägg: 43288
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Problem med teckenbaserade linjer (Matematisk utmaning)

Inlägg av sodjan »

Några bilder som visar det du försöker beskriva vore
nog väldigt värdefulla.
labmaster
Inlägg: 2919
Blev medlem: 5 april 2011, 01:10:25

Re: Problem med teckenbaserade linjer (Matematisk utmaning)

Inlägg av labmaster »

Inte helt lätt att hänga med i din beskrivning så här dax på dygnet men gör ändå ett försök. Den del av horisontliinjen som startar vid ett givet X-värde är 12 pixlar i X-led stämmer det? Du kan alltså öka eller minska Y vart 12:te X där du skall välja ett tecken med avseende på Y. Den matematiska utmaningen är i så fall inte speciellt kompicerad. Jag antar att du känner till räta linjens ekvation som är Y = kX + M.

Använder du räta linjens ekvation kan du räkna ut vilket tecken du skall välja genom att använda var 12:te sampel av X. k är linjens lutningskoeficient.

Om horisonten lutar så att vänster kant är lägre än den högra när du tittar med näsan mot horisonten är k > 0. Om horisonten lutar åt höger, med den vänstra kanten högre än den högra kanten så är k < 0. Är vänster och höger kant på samma höjd så är k = 0.

Förutsättningen är förstås att du betraktar horisonten som en rät linje.
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Problem med teckenbaserade linjer (Matematisk utmaning)

Inlägg av Andax »

Om k är kolumn, r är rad, t tecken, och fi vinkeln från horisonten (dvs 0 horisontellt, pi/2 vertikalt) borde det bli något i stil med:

r = floor(tan(fi)*(k-9))+9
t = floor(tan(fi)*(k-9)-floor(tan(fi)*(k-9)))*9 + 9
Gimbal
Inlägg: 8840
Blev medlem: 20 april 2005, 15:43:53

Re: Problem med teckenbaserade linjer (Matematisk utmaning)

Inlägg av Gimbal »

Upplösningen är alltså 204 i höjdled och 17 i sidled?
ToPNoTCH
Inlägg: 5271
Blev medlem: 21 december 2009, 17:59:48

Re: Problem med teckenbaserade linjer (Matematisk utmaning)

Inlägg av ToPNoTCH »

@Labmaster
Jag tror du har fattat rätt, givet beskrivningen i ditt första stycke.
Skall försöka översätta din beskrivning i en formel.

@Andax
Jag försökte testköra dina formler i Excel, men jag fattar inte vad "floor" representerar.
Är det klassisk "avrundning nedåt" som avses ?

@Gimbal
Nej det blir 204 punkter (eller 17 tecken) åt varje håll.
ToPNoTCH
Inlägg: 5271
Blev medlem: 21 december 2009, 17:59:48

Re: Problem med teckenbaserade linjer (Matematisk utmaning)

Inlägg av ToPNoTCH »

Nu svammlade jag till det så klart.

Eftersom ett tecken är 12X18 punkter så är det inte lika många tecken på höjden som på bredden.

Det skall vara 17 tecken brett och 11 tecken högt, vilket motsvarar 204x198 bildpunkter.

Sorry för förvirringen.
Gimbal
Inlägg: 8840
Blev medlem: 20 april 2005, 15:43:53

Re: Problem med teckenbaserade linjer (Matematisk utmaning)

Inlägg av Gimbal »

Men hade du inte 18 olika sådana här "_" tecken, där strecket är på olika höjd?
ToPNoTCH
Inlägg: 5271
Blev medlem: 21 december 2009, 17:59:48

Re: Problem med teckenbaserade linjer (Matematisk utmaning)

Inlägg av ToPNoTCH »

Nja. Det är inte ett streck utan en punkt, men annars rätt
Gimbal
Inlägg: 8840
Blev medlem: 20 april 2005, 15:43:53

Re: Problem med teckenbaserade linjer (Matematisk utmaning)

Inlägg av Gimbal »

ok, men då har du väl inte mer än 17 olika positioner i sidled i alla fall?
ToPNoTCH
Inlägg: 5271
Blev medlem: 21 december 2009, 17:59:48

Re: Problem med teckenbaserade linjer (Matematisk utmaning)

Inlägg av ToPNoTCH »

Är det inte så enkelt som att jag har en liksidig triangel där vinkel och ena kateten(x) är känd.

Om jag då beräknar den okända kateten(y) så är det väl bara att dela det värdet med 18 för att få ut tecken position i höjdled och sedan använda modularen för att få ut vilket tecken som skall skrivas.

Sedan öka den kända kateten(x) med 12 och repetera.

Och vad var nu formeln för att beräkna en okänd katet om man har en känd vinkel och en känd katet ??


Puh trigonometri :wacko:
ToPNoTCH
Inlägg: 5271
Blev medlem: 21 december 2009, 17:59:48

Re: Problem med teckenbaserade linjer (Matematisk utmaning)

Inlägg av ToPNoTCH »

Gimbal skrev:ok, men då har du väl inte mer än 17 olika positioner i sidled i alla fall?
Nää.. Helt rätt..
Dessuom är ju position 16 fast.
ToPNoTCH
Inlägg: 5271
Blev medlem: 21 december 2009, 17:59:48

Re: Problem med teckenbaserade linjer (Matematisk utmaning)

Inlägg av ToPNoTCH »

Lutar åt att Sodjan hade en poäng.

Så här representeras alltså 0 grader.
osd.png
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Gimbal
Inlägg: 8840
Blev medlem: 20 april 2005, 15:43:53

Re: Problem med teckenbaserade linjer (Matematisk utmaning)

Inlägg av Gimbal »

Jag skulle börja med att göra en plot(x,y) funktion. dvs så att du enkelt kan sätta en punkt var som helst på skärmen.
sodjan
EF Sponsor
Inlägg: 43288
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Problem med teckenbaserade linjer (Matematisk utmaning)

Inlägg av sodjan »

OK.

Så i varje "tecken-box" så är det enbart *1* punkt som ska aktiveras ?
Inte en hel rad (så som det lät från början).

Och punkten sitter alltid i mitten i tecken-boxen, sett ur ett vänster/höger perspektiv ?
Men på olika höjd i mitten ?

Om nu boxen är 11 punkter hög, så blir det väl bara 11 olika "tecken" ?

> Så här representeras alltså 0 grader.

Just *0* grader var väl kanske det sämsta du kunde välja för ett exempel... :-)
Hur ska t.ex 30 grader se ut ?? Ska vinkeln ta hänsyn till att det är olika
proportioner på boxen ? D.v.s att 45 grader ska inte bara vara en rak trappa
snett uppåt ? Det ger ju mindre än 45 grader efter de är bredare än höga (även
om det inte ser ut så på din bild !?).
Skriv svar