diff --git a/geometry.go b/geometry.go
index 64db6fc7eacac3f432768eed1dec882a170e35b1..b426686ad600f6efffeaa61b35f5154b2cfbefe0 100644
--- a/geometry.go
+++ b/geometry.go
@@ -151,3 +151,9 @@ func (r Rect) XYWH() (x, y, w, h float64) {
 func (r Rect) Center() Vec {
 	return r.Pos + r.Size.Scaled(0.5)
 }
+
+// Contains checks whether a vector u is contained within this Rect (including it's borders).
+func (r Rect) Contains(u Vec) bool {
+	min, max := r.Pos, r.Pos+r.Size
+	return min.X() <= u.X() && u.X() <= max.X() && min.Y() <= u.Y() && u.Y() <= max.Y()
+}