Träfftestning
I datorgrafikprogrammering är träfftestning ( träffdetektion , plockning eller plockkorrelation ) processen för att avgöra om en användarkontrollerad markör (som en muspekare eller pekpunkt på ett pekskärmsgränssnitt) skär en given grafik objekt (som en form, linje eller kurva) ritat på skärmen. Träfftestning kan utföras på rörelse eller aktivering av en mus eller annan pekanordning.
Träfftestning används av GUI- miljöer för att svara på användaråtgärder, som att välja ett menyalternativ eller ett mål i ett spel baserat på dess visuella plats. I webbprogrammeringsspråk som HTML , SVG och CSS associeras detta med konceptet med pekarhändelser (t.ex. användarinitierad markörrörelse eller objektval).
Kollisionsdetektering är ett relaterat koncept för att upptäcka skärningspunkter mellan två eller flera olika grafiska objekt, snarare än korsning av en markör med ett eller flera grafiska objekt.
Algoritm
Det finns många olika algoritmer som kan användas för att utföra träfftestning, med olika prestanda eller exakta resultat. En vanlig träfftestalgoritm presenteras i pseudokoden nedan:
funktion HitTest ( Rektangel r1 , Rektangel r2 ) returnerar boolean { return (( r1 . X + r1 . Width >= r2 . X ) och ( r1 . X <= r2 . X + r2 . Width ) och ( r1 . Y + r1 höjd >= r2 . Y ) och ( rl . Y <= r2 . Y + r2 . Höjd )) ; }
I Python :
def hit_test ( r1 : Rectangle , r2 : Rectangle ) -> bool : """Returnera sant om det träffar annars returnerar falskt.""" return ( ( r1 . x + r1 . width >= r2 . x ) och ( r1 . x <= r2 . x + r2 . bredd ) och ( r1 . y + r1 . Höjd >= r2 . y ) och ( r1 . y <= r2 . y + r2 . höjd ) )
Se även
- ^ Computer Graphics: Principles and Practice 2nd Edition i C, Foley et al, Addison-Wesley , 1997.