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

grahamscandelaunay-0.1.0.tar.gz (3.2 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file grahamscandelaunay-0.1.0.tar.gz.

File metadata

  • Download URL: grahamscandelaunay-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 grahamscandelaunay-0.1.0.tar.gz
Algorithm Hash digest
SHA256 aeb89f06896028d5da11628eebade61b074448fadbcbe054869a5aed07b05b5a
MD5 e7f3b0d6ee41c45fc48406bdc8ee7eb1
BLAKE2b-256 6ff805fa48bf5a988c69c15be7b53413df7d96b8dd58266cf65ceb448f903a0a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: grahamscandelaunay-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 grahamscandelaunay-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ec079234fcd13154dbda9f35e29de8fa357cb72495e108f1cedfed223011cf61
MD5 cbf6470fb9db2f3aaa15ef4e7a4bcd4a
BLAKE2b-256 a7d977e4d435c7648088349ddecb2e57aa93c656cddb282c45c096cf122e7d54

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