Introduction to Computational Geometry Hackson Leung@HW311 Agenda • • • • • • • • Dot, Line and Plane Cartesian Coordinate System Straight Line and Segment Distance – how to measure? Cartesian Coordinate Geometry Vector Geometry Intersections Polygons To begin with DOT, LINE AND PLANE Geometry • ``Geometry (Greek γεωμετρία; geo = earth, metria = measure) is a part of mathematics concerned with questions of size, shape, and relative position of figures and with properties of space.’’ – Wikipedia • What to deal with? • • • • Lines Polygons Planes Objects (in N dimensional!) Geometry • ``Geometry (Greek γεωμετρία; geo = earth, metria = measure) is a part of mathematics concerned with questions of size, shape, and relative position of figures and with properties of space.’’ – Wikipedia • What to deal with (Computationally)? • • • • Lines Polygons Planes Objects (in N dimensional!) Simple geometry revisit • 1-Dimensional • Simply R • a single point and line only • e.g. Number Line • 2-Dimensional • 2-tuple (a.k.a. pair) • Can represent point, line and plane • 3-Dimensional • 3-tuple (a.k.a. Triple) • Can represent…? Computational Geometry • Adopt algorithmic approach to solve problems in terms of geometry • e.g. List out all possible distinct intersection points, given several lines • In this session, we only focus on 2-D geometry only • Further info can be found at ``Advanced Computational Geometry’’ You must have learnt it in Mathematics CARTESIAN COORDINATE SYSTEM Cartesian Coordinate System • Terminologies • Don’t tell me that you don’t know them! y-axis A point with +ve x and y coordinates x-axis Cartesian Coordinate System • Terminologies • Don’t tell me that you don’t know them! y-axis A straight line with negative slope, passing through origin x-axis Cartesian Coordinate System • Terminologies • Don’t tell me that you don’t know them! y-axis A regular pentagon x-axis Cartesian Coordinate System • You may not know this y-axis Two straight lines intersecting at one point x-axis Cartesian Coordinate System • You may not know this y-axis A straight line intersects the pentagon at two points x-axis Cartesian Coordinate System • So how to deal with… y-axis y-axis A straight line intersects the pentagon at two points Two straight lines intersecting at one point x-axis • Learn more and you will know x-axis Diversify LINE AND SEGMENT Line and Segment • Line: infinitely long • Segment: Finite “region” within the line • Line is a more general representation of any line segment within itself Way to describe how far we are DISTANCE Distance • Problem: Given two points, how far are they? • Use ruler to measure… • In computer, no way! • Not precise enough! Length l P1 (x1, y1) P2 (x2, y2) Distance • Problem: Given two points, how far are they? • If we do not care about the actual distance… • Think about that the world is full of grids… • And you can only walk on their sides l x1 x2 y1 y2 • The famous Manhattan Distance Length l P1 (x1, y1) P2 (x2, y2) Distance • Problem: Given two points, how far are they? • If we do care about the actual distance… • Manhattan distance gives us a brief idea to calculate the actual distances • If you have learnt Pythagoras’s Theorem… l ( x1 x2 ) ( y1 y2 ) 2 • Euclidean Distance P1 (x1, y1) 2 P2 (x2, y2) Length l b = | y2 – y1 | a = | x2 – x1 | Distance • Problem: Given a line segment, how long is it? • Treat the two ends as points • Go back to last slide Distance • Problem: Given two line segments, which one is the longest? • Easy • Euclidean Distance • Apply Pythagoras’s Theorem • Compare the length • …Really that easy? Distance • Problem: Given two line segments, which one is the longest? • Difficulties • • • • Length of segment A = √4 = 2 Length of segment B = 1.9999999… In computer, it may turn out that A = B! Known as precision error • Cure • Use Manhattan Distance (does it work?) • LA > LB LA2 > LB2 when LA and LB are non-negative x, y and z CARTESIAN COORDINATE GEOMETRY Coordinate Geometry • Basically from Cartesian Coordinate System • How to describe: • A point? • (x, y) Coordinates for 2D • A line? • Straight line equation • A line segment? • Straight line equation, plus range of x and y • Two points form a segment Coordinate Geometry • For straight line, we need to know its slope • Given two points on the line • slope = m = change of y value / change of x value • What if x = 0? • Common representation: point-slope form • (y-y1) = m(x-x1) • Always possible to represent? • Another choice: two-point form • y - y1 / x – x1 = y1 – y2 / x1 – x2 • If x1 = x2, then? Arrow’s World VECTOR GEOMETRY Vector Geometry • What is a vector? • Geometric object which has both magnitude and direction (think of line segment) • A notation of means a motion from A to B • Notation: (x, y) means a point P from O (0, 0) to (x, y) (Note the terminology!) y-axis A vector from origin to a certain point x-axis Vector Geometry • Properties • Length of vector = x 2 y 2 • Addition: (x1, y1) + (x2, y2) = (x3, y3) • Subtraction: Reverse addition only y-axis (x3, y3) x-axis (x1, y1) (x2, y2) Vector Geometry • Properties • Multiplication • Dot Product: (x1, y1)‧ (x2, y2) = x1*x2 - y1*y2 • Projection of (x1, y1) under (x2, y2) with product of their length • Wedge Product: (x1, y1)^(x2, y2) = x1*y2 - y1*x2 • Dot Product on itself? • Wedge Product on itself? Vector Geometry • Straight line equation • Describe any vectors r that end on a line u, which passes through r0=(a, b) and parallel to r1=(c, d) • u: r = r0 + tr1 , t is any real number When lines hit INTERSECTIONS Intersections • Recall the previous problem y-axis Two straight lines intersecting at one point x-axis • How to find the intersection point, if any? Intersections • How to find the intersection point, if any? • Cartesian coordinate geometry • Given K straight line equations, find all distinct intersection point(s) • Usually a line is defined by giving two arbitrary points which are on the line • How to represent its equation? • What if a line is a vertical line? Intersections • How to find the intersection point, if any? • Cartesian coordinate geometry • Given 2 straight line equations, find all distinct intersection point(s) • HKOI1998 Junior Q1 – Simultaneous Equations • How about K lines? Intersections • How to find the intersection point, if any? • Vector geometry • Given 2 straight line equations, find all distinct intersection point(s) • Need to find their equations? • Two vectors are formed, let them be AB and CD • We let vector itself be a line • In general, r0 = OA, r1 = AB Intersections • How to find the intersection point, if any? • Vector geometry • Given 2 straight line equations, find all distinct intersection point(s) • Two vectors are formed, let them be AB and CD OA u AB OC vCD, u , v OA CD u AB CD OC CD u AB CD (OC OA) CD u (OC OA) CD AB CD AC CD AB CD Intersections • How to find the intersection point, if any? • Vector geometry (OC OA) CD AC CD u AB CD AB CD • Clearly, OA u AB produces the intersection point • What if AB CD is zero? • Parallel but not the same line • Parallel but they are on the same line • How about the segment intersection? Optional topic POLYGON Polygon • If time allows, we would discuss the following topics • Polygon – Convex or Concave • Is a point inside or outside a polygon? • Given N points, can I find a minimum bounded polygon that includes those points? • I have two convex polygons, tell me their intersection area • I have two polygons, tell me if they can combine to a single polygon through rotation and translation Practice Problems • HKOJ2071 Little Stage • HKOJ2074 Storage Centre • HKOJ2980 Simultaneous Equation Q&A • Remember: TFT is coming!