Overview
Geometry algorithms deal with solving problems related to geometric shapes, properties, and relationships. These problems often involve coordinates, distances, angles, and areas, and are common in computational geometry, computer graphics, and game development.
Common Techniques in Geometry
1. Point Operations
Distance Between Two Points
- Formula: ( \text{distance} = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2} )
import math
def distance(x1, y1, x2, y2):
return math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
# Example Usage
print(distance(0, 0, 3, 4)) # Output: 5.0
Midpoint Between Two Points
- Formula: ( \text{midpoint} = \left(\frac{x_1 + x_2}{2}, \frac{y_1 + y_2}{2}\right) )
def midpoint(x1, y1, x2, y2):
return ((x1 + x2) / 2, (y1 + y2) / 2)
# Example Usage
print(midpoint(0, 0, 4, 6)) # Output: (2.0, 3.0)
2. Line Operations
Slope of a Line
- Formula: ( \text{slope} = \frac{y_2 - y_1}{x_2 - x_1} )
def slope(x1, y1, x2, y2):
if x1 == x2:
return None # Vertical line (undefined slope)
return (y2 - y1) / (x2 - x1)
# Example Usage
print(slope(1, 2, 3, 6)) # Output: 2.0
Line Equation
- General form: ( y = mx + c )
3. Triangle Operations
Area of a Triangle
- Given vertices ((x_1, y_1), (x_2, y_2), (x_3, y_3)): [ \text{Area} = \frac{1}{2} \left| x_1(y_2-y_3) + x_2(y_3-y_1) + x_3(y_1-y_2) \right| ]
def triangle_area(x1, y1, x2, y2, x3, y3):
return abs(x1*(y2-y3) + x2*(y3-y1) + x3*(y1-y2)) / 2
# Example Usage
print(triangle_area(0, 0, 4, 0, 4, 3)) # Output: 6.0
Check if Points Form a Triangle
- The points form a triangle if the area is non-zero.
4. Polygon Operations
Convex Hull
- The smallest convex polygon that contains all the given points.
- Algorithm: Graham’s Scan or Jarvis March.
Area of a Polygon
- Formula: [ \text{Area} = \frac{1}{2} \left| \sum_{i=1}^{n} (x_i y_{i+1} - y_i x_{i+1}) \right| ]
5. Circle Operations
Equation of a Circle
- Standard form: ( (x - h)^2 + (y - k)^2 = r^2 )
Circumference and Area
- Circumference: ( 2 \pi r )
- Area: ( \pi r^2 )
def circle_circumference(radius):
return 2 * math.pi * radius
def circle_area(radius):
return math.pi * radius**2
# Example Usage
print(circle_circumference(5)) # Output: 31.41592653589793
print(circle_area(5)) # Output: 78.53981633974483
6. Vector Operations
Dot Product
- Formula: ( a \cdot b = a_x b_x + a_y b_y )
Cross Product (2D)
- Formula: ( a \times b = a_x b_y - a_y b_x )
7. Closest Pair of Points
- Divide and Conquer approach to find the closest pair of points in ( O(n \log n) ).
8. Intersection Problems
Line Intersection
- Check if two line segments intersect using orientation and bounding box.
Point in Polygon
- Use the Ray-Casting Algorithm to determine if a point lies inside a polygon.
Geometry Libraries
- Python:
shapely
: Computational geometry library.scipy.spatial
: Contains functions likeConvexHull
andVoronoi
.math
: Basic mathematical operations.
Summary
Geometry algorithms are essential in solving problems involving shapes, distances, and intersections. Mastering these techniques provides a strong foundation for tackling computational geometry challenges.