Count Integral points inside a Triangle - GeeksforGeeks



Count Integral points inside a Triangle - GeeksforGeeks

Given three non-collinear integral points in XY plane, find the number of integral points inside the triangle formed by the three points. (A point in XY plane is said to be integral/lattice point if both its co-ordinates are integral).

Example:

Input: p = (0, 0), q = (0, 5) and r = (5,0)     Output: 6    Explanation: The points (1,1) (1,2) (1,3) (2,1)               (2,2) and (3,1) are the integral               points inside the triangle.    traingle  

We can use the Pick's theorem, which states that the following equation holds true for a simple Polygon.

Pick's Theeorem:   A = I + (B/2) -1    A ==> Area of Polygon  B ==> Number of integral points on edges of polygon  I ==> Number of integral points inside the polygon    Using the above formula, we can deduce,  I = (2A - B + 2) / 2 

We can find A (area of triangle) using below Shoelace formula.

A =  1/2 * abs(x1(y2 - y3) + x2(y3 - y1) + x3(y1 - y2)) 

How to find B (number of integral points on edges of a triangle)?
We can find the number of integral points between any two vertex (V1, V2) of the triangle using the following algorithm.

1. If the edge formed by joining V1 and V2 is parallel      to the X-axis, then the number of integral points      between the vertices is :           abs(V1.y - V2.y)-1    2. Similarly if edge is parallel to the Y-axis, then      the number of integral points in between is :      abs(V1.x - V2.y)-1    3. Else, we can find the integral points between the     vertices using below formula:       GCD(abs(V1.x-V2.x), abs(V1.y-V2.y)) - 1     The above formula is a well known fact and can be      verified using simple geometry. (Hint: Shift the      edge such that one of the vertex lies at the Origin.) 


Read full article from Count Integral points inside a Triangle - GeeksforGeeks


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts