According to wikipedia, there is bijection (1:1 correspondence) between binary tree of n - 2 nodes and simple n-vertex polygon triangulation. I am wondering, how to convert between each other*?
In other words, how to convert set of triangles to binary tree and how to convert binary tree to set of triangles? Triangle is ccw triplet of vertices (v0, v1, v2) and links neighbour triangles (n0, n1, n2).
* from programmer's view, an algorithm, code example etc.
How to convert binary tree to polygon triangulation and vice versa
1.3k views Asked by wondra At
1
There are 1 answers
Related Questions in ALGORITHM
- MCNP 6 - Doubts about cells
- Given partially sorted array of type x<y => first apperance of x comes before first of y, sort in average O(n)
- What is the algorithm behind math.gcd and why it is faster Euclidean algorithm?
- Purpose of last 2 while loops in the merge algorithm of merge sort sorting technique
- Dots and Boxes with apha-beta pruning
- What is the average and worst-case time complexity of my string searching algorithm?
- Building a School Schedule Generator
- TC problem 5-2:how to calculate the probability of the indicator random variable?
- LCA of a binary tree implemented in Python
- Identify the checksum algorithm
- Algorithm for finding a subset of nodes in a weighted connected graph such that the distance between any pair nodes are under a postive number?
- Creating an efficent and time-saving algorithm to find difference between greater than and lesser than combination
- Algorithm to find neighbours of point by distance with no repeats
- Asking code suggestions about data structure and algorithm
- Heap sort with multithreading
Related Questions in BINARY-TREE
- C++: Program for Deleting a node and return its right child:
- What is the problem in my "sumAtBis" code?
- Binary Tree preorder traversal understanding
- check if object is a binary tree in prolog
- Represent a full, but not complete, binary tree with an array structure
- Perfect binary tree in order and pre order automatic indexing
- Binary Trees Changing Node vs Changing Value of Nodes
- How to create Tree Zipper using Rust?
- in Lua, how to write an iterator for a binary tree?
- A straightforward recursive level-order traversal method?
- Creating an instance of a Binary Tree (Programming Standard ML by Robert Harper)
- Debugging AVL Tree Deletion: Unbalanced Node Not on Deletion Path
- What is the maximum degree of imbalance in a red black tree ? Is it height/2?
- Wrong output when checking whether binary tree is balanced
- Why the height of segment tree is O(logn)
Related Questions in POLYGON
- How can i show the layer like polygon cover all marker in mapbox
- Rotate a multipolygon without changing the inner spatial relation
- fabric.js reset polygon bounding box after a point is moved
- How do I find the line segments formed by the meeting of two sides of two polygons?
- Draw polygon next to an another one
- cannot import name 'RESTClient' from 'polygon'
- Edited polygon not showing up after saving changes in Google Maps API
- Given a convex polygon as a set of edges how to fill the area inside depending on the distance to the closest edge
- Distribution of n number of equi-distant point in polygon
- Subtracting polygons and converting them to not have holes in python
- Algorithm to convert SVG path to CSS clip path polygon
- Update a polygon that have intersections in two or more polygons
- SVG Coordinates not working with % values
- Drawing and editing geofence using @react-google-maps/api
- "QGIS: Displaying labels outside polygons for line features inside using field values"
Related Questions in TRIANGULATION
- How can I generate a concave hull of 3D points?
- Meaning of mesh_size
- Opencv-Triangulation function giving nonsense results
- I am trying to find car motions with two cameras on Carla but the results are meaningless
- Polygon Triangulation is not proper for some polygons using Delaunay Triangulation Method
- xyz (latitude longitude elevation) position on a surface
- Understanding cv2.recoverPose's coordinate frame transformations
- Streamplot on triangulations without grid interpolation?
- How to find center point of 3d convexl hull, 3d polygon or polyhedron (all by Delaunay triangulation) in R
- Polygon triangulation on GPU using OpenGL
- How to detect if an edge is inside a closed curve in a constrained triangulation?
- How to get a specific shape of a contour plot in MATLAB
- Contour detection in 2D scatter plot
- How to find the world location of a feature with opencv stereo camera triangulation?
- How to handle degenerate cases in Seidel's Triangulation Algorithm?
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Here's a recursive bijection.
The base case is that the degenerate 2-vertex polygon corresponds to the empty tree.
Inductively, the tree has at least one interior node. Assume that the vertices of the polygon have preexisting labels from 1 to n in clockwise order. Examine the unique triangle T that includes the edge 12.
If we delete T, we get two triangulated polygons. In this case, we get 2345 and 156. Recursively biject the polygon including 1 to get the left subtree of the root. Recursively biject the polygon including 2 to get the right subtree of the root.
A particularly slick way to view this bijection is that we derive the tree by taking the planar dual graph of the triangulation, deleting the edges incident to the infinite face, and designating the face adjacent to 12 as the root.