In computer graphics programming, hit-testing (hit detection, picking, or pick correlation
) is the process of determining whether a user-controlled cursor (such as a mouse cursor or touch-point on a touch-screen interface) intersects a given graphical object (such as a shape, line, or curve) drawn on the screen. Hit-testing may be performed on the movement or activation of a mouse or other pointing device.
Hit-testing is used by
GUI environments to respond to user actions, such as selecting a menu item or a target in a game based on its visual location. In Web programming languages such as
HTML,
SVG, and
CSS
Cascading Style Sheets (CSS) is a style sheet language used for describing the presentation of a document written in a markup language such as HTML or XML (including XML dialects such as SVG, MathML or XHTML). CSS is a cornerstone techno ...
, this is associated with the concept of pointer-events (e.g. user-initiated cursor movement or object selection).
Collision detection is a related concept for detecting intersections of two or more different graphical objects, rather than intersection of a cursor with one or more graphical objects.
Algorithm
There are many different algorithms that may be used to perform hit-testing, with different performance or accuracy outcomes. One common hit-test algorithm is presented in the pseudo-code below:
function HitTest(Rectangle r1, Rectangle r2) returns boolean
{
return ((r1.X + r1.Width >= r2.X) and (r1.X <= r2.X + r2.Width) and (r1.Y + r1.Height >= r2.Y) and (r1.Y <= r2.Y + r2.Height));
}
See also
*
Point in polygon
*
Computational geometry
Computational geometry is a branch of computer science devoted to the study of algorithms which can be stated in terms of geometry. Some purely geometrical problems arise out of the study of computational geometric algorithms, and such problems ar ...
*
Collision detection
*
User interface
References
[ Computer Graphics: Principles and Practice 2nd Edition in C, Foley et al, Addison-Wesley, 1997.]
External links
MSDN: Hit Testing in the Visual LayerMSDN: Hit Testing Lines and Curves
Computer graphics
User interfaces
Video game development