Skip to main content

Use Graham Scan to incrementally solve delaunay triangulation

Project description

graham-scan-based-incremental-delaunay

Graham Scan-Based Incremental Delaunay Triangulation:

  • Sort the input points by x-coordinate
  • Select the leftmost, bottommost point as the pivot point
  • Sort the other points by angle relative to the pivot point their slopes relative to the pivot
  • Construct the base convex hull using the pivot point and the first two points sorted by angle
  • Incrementally add the next sorted point and use Graham Scan to get the convex hull, saving any edges that were made
  • Flip the current triangulation to Delaunay and repeat until done

TODO LIST:

  • Implement Halfedge data structure, with addleaf and addedge
    • get two sorting algorithms loglinear time, one for x-coord and one for slope
    • Use a stack to track points on the convex hull
    • Use a queue to track edges that need to be flipped
    • Save all the edges made during the convex hull process
    • Check the queued edges if they are locally Delaunay
    • Flip non-locally Delaunay edges
  • Work on visualization
  • Write some tests
    • Test sorting for setting up the points
    • Test Convex Hull triangulation
    • Test Locally Delaunay check
    • Test edge flipping on a simple case

Due Date: final code and presentation on April 29th

Timeline for progress:

  • 4/1
  • 4/8
  • 4/15
  • 4/22
  • 4/29 project due along with presentation

Environment and package info

Please make sure you have installed the pyglet and numpy before running the code, Those two package can be installed using pip command pip install numpy and pip install pyglet

This project has been uploaded to PyPi as a package. You can download the package by the following command: python3 -m pip install grahamscan-delaunay After install the package, you can start the project by python3 and then >>> import grahamscan_delaunay

Visualization

Once you start the program, an empty window will pop up. You can add a point by click inside the window, or randomly generate one by pressing G. Once you finish adding points, press S to start the Delaunay algorithm step-by-step visualization. To go to the next step, press the Space Bar. To reset to the start of the algorithm, press R. To clear all points, press C. The red point indicates the most recently added point. The blue edge indicates that the edge will be checked if it is Locally Delaunay. A black point indicates that the point in in the triangulation while a gray point indicates that it has not yet been added to the triangulation. When the algorithm is complete, the background will turn green. Press R or C to reset the visualization.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

grahamscan-delaunay-0.1.0.tar.gz (3.2 kB view details)

Uploaded Source

Built Distribution

grahamscan_delaunay-0.1.0-py3-none-any.whl (3.3 kB view details)

Uploaded Python 3

File details

Details for the file grahamscan-delaunay-0.1.0.tar.gz.

File metadata

  • Download URL: grahamscan-delaunay-0.1.0.tar.gz
  • Upload date:
  • Size: 3.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.6.9

File hashes

Hashes for grahamscan-delaunay-0.1.0.tar.gz
Algorithm Hash digest
SHA256 59e82e8d7618e6cab79f75aeed93fd9eb9730faa1e97643d10b2340288e7437e
MD5 6cafbdea236d8402b89db5acbe43c093
BLAKE2b-256 5f166d766f863181e58a3c62e54f76f55d0d53ddb512d7c264b28ea63bce4da8

See more details on using hashes here.

File details

Details for the file grahamscan_delaunay-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: grahamscan_delaunay-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 3.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.6.9

File hashes

Hashes for grahamscan_delaunay-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5de38cf3f43307bd7898a93a1446fddc27abaea3e7ae46713ba40729434146de
MD5 d415e3df96066258e4e9a6ac27c0241d
BLAKE2b-256 56bc480dee0ecf6e0743ee014cb6b7c9ff22e832eb9886c3be47b935ac343c97

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page