📄 rect.py
字号:
# Module 'rect'.## Operations on rectangles.# There is some normalization: all results return the object 'empty'# if their result would contain no points.# Exception.#error = 'rect.error'# The empty rectangle.#empty = (0, 0), (0, 0)# Check if a rectangle is empty.#def is_empty(r): (left, top), (right, bottom) = r return left >= right or top >= bottom# Compute the intersection or two or more rectangles.# This works with a list or tuple argument.#def intersect(list): if not list: raise error, 'intersect called with empty list' if is_empty(list[0]): return empty (left, top), (right, bottom) = list[0] for rect in list[1:]: if is_empty(rect): return empty (l, t), (r, b) = rect if left < l: left = l if top < t: top = t if right > r: right = r if bottom > b: bottom = b if is_empty(((left, top), (right, bottom))): return empty return (left, top), (right, bottom)# Compute the smallest rectangle containing all given rectangles.# This works with a list or tuple argument.#def union(list): (left, top), (right, bottom) = list[0] for (l, t), (r, b) in list[1:]: if not is_empty(((l, t), (r, b))): if l < left: left = l if t < top: top = t if r > right: right = r if b > bottom: bottom = b res = (left, top), (right, bottom) if is_empty(res): return empty return res# Check if a point is in a rectangle.#def pointinrect((h, v), ((left, top), (right, bottom))): return left <= h < right and top <= v < bottom# Return a rectangle that is dh, dv inside another#def inset(((left, top), (right, bottom)), (dh, dv)): left = left + dh top = top + dv right = right - dh bottom = bottom - dv r = (left, top), (right, bottom) if is_empty(r): return empty else: return r# Conversions between rectangles and 'geometry tuples',# given as origin (h, v) and dimensions (width, height).#def rect2geom((left, top), (right, bottom)): return (left, top), (right-left, bottom-top)def geom2rect((h, v), (width, height)): return (h, v), (h+width, v+height)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -