Vinnaren i pepparkakshustävlingen!
2014-10-05, 14:06
  #1
Medlem
Kitakos avatar
Säg att vi har ett koordinatsystem som är indelat i rutor för varje heltal. Vi har bara positiva värden och x-max och y-max är 4, d.v.s. vi har 16 rutor. Vi ritar sedan in en rät linje och vill ta reda på hur många rutor den korsar, hur gör man det på ett effektivt sätt?

Linjens start- och slutpunkt har vi, men vill bara veta generellt hur man löser detta.
__________________
Senast redigerad av Kitako 2014-10-05 kl. 14:14.
Citera
2014-10-05, 16:13
  #2
Medlem
ZethMalkovis avatar
Citat:
Ursprungligen postat av Kitako
Säg att vi har ett koordinatsystem som är indelat i rutor för varje heltal. Vi har bara positiva värden och x-max och y-max är 4, d.v.s. vi har 16 rutor. Vi ritar sedan in en rät linje och vill ta reda på hur många rutor den korsar, hur gör man det på ett effektivt sätt?

Linjens start- och slutpunkt har vi, men vill bara veta generellt hur man löser detta.
För lite information
Citera
2014-10-05, 16:15
  #3
Medlem
Kitakos avatar
Citat:
Ursprungligen postat av ZethMalkovi
För lite information

Vad mer behöver man/du?
Citera
2014-10-05, 16:33
  #4
Medlem
ZethMalkovis avatar
Citat:
Ursprungligen postat av Kitako
Vad mer behöver man/du?
De tva punkernas talpar
Citera
2014-10-05, 19:43
  #5
Medlem
Du behöver veta var linjen börjar och slutar, inte bara vilka två rutor utan också var i rutorna den börjar/slutar: du kan få helt olika svar beroende på om linjen börjar/slutar i ett hörn eller mitt i rutorna.

Sedan bör du ha klart för dig exakt vad du menar med "korsa". Tänk dig en linje som börjar i en ruta och slutar i rutan precis till höger om startrutan. Har den linjen korsat två rutor? Eller inga? Eller kanske en? För min del känns "inga" som rätt svar, men "två" kan vara lika rätt.
Citera
2014-10-06, 09:26
  #6
Medlem
Kitakos avatar
Förstår vad ni menar, var nog väldigt fel av mig att anta att ni skulle tänka att det var alla rutor linjen låg på. Löste det iaf med en DDA algoritm för intresserade.
Citera
2014-10-06, 10:19
  #7
Medlem
Ta ut två koordinater (x1,y1) (x2,y2).
Lutningen på linjen är kvoten av delta y genom delta x.
Dvs k = (y2 - y1)/(x2 - x1)

Eller grafiskt genom att tänka dig att lutningen som en trappa och räkna hur många rutor i y-leds för varje steg i x-led.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback