{"id":36613366,"url":"https://github.com/gwlucastrig/tinfour","last_synced_at":"2026-01-12T09:02:40.593Z","repository":{"id":41485155,"uuid":"60477694","full_name":"gwlucastrig/Tinfour","owner":"gwlucastrig","description":"Delaunay and Constrained Delaunay Triangulations in Java, providing high-performance utilities for modeling surfaces with support for Lidar LAS files, Digital Elevation Models (DEM), finite element analysis, path planning, natural neighbor interpolation, and other applications of Triangulated Irregular Networks (TIN)","archived":false,"fork":false,"pushed_at":"2025-11-29T19:25:46.000Z","size":28042,"stargazers_count":179,"open_issues_count":14,"forks_count":37,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-12-02T00:01:48.044Z","etag":null,"topics":["bathymetry","computational-geometry","delaunay","delaunay-triangulation","digital-elevation-model","gis","hydrography","java","lidar","triangulation"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gwlucastrig.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE.txt","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-06-05T19:45:58.000Z","updated_at":"2025-11-29T19:25:49.000Z","dependencies_parsed_at":"2023-02-16T17:01:24.798Z","dependency_job_id":"e07fabe6-1fe7-4994-9346-4c399078da96","html_url":"https://github.com/gwlucastrig/Tinfour","commit_stats":{"total_commits":645,"total_committers":4,"mean_commits":161.25,"dds":"0.018604651162790753","last_synced_commit":"8e2ca74646a8269b95f1e8c2d4b1ae53fe628a7d"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/gwlucastrig/Tinfour","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gwlucastrig%2FTinfour","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gwlucastrig%2FTinfour/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gwlucastrig%2FTinfour/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gwlucastrig%2FTinfour/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gwlucastrig","download_url":"https://codeload.github.com/gwlucastrig/Tinfour/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gwlucastrig%2FTinfour/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28337615,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T06:09:07.588Z","status":"ssl_error","status_checked_at":"2026-01-12T06:05:18.301Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bathymetry","computational-geometry","delaunay","delaunay-triangulation","digital-elevation-model","gis","hydrography","java","lidar","triangulation"],"created_at":"2026-01-12T09:02:39.840Z","updated_at":"2026-01-12T09:02:40.581Z","avatar_url":"https://github.com/gwlucastrig.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"Tinfour\n========\n\nHigh-Performance 2D Delaunay Triangulation and Related Utilities Written in Java\n\n**Notice**\n\u003e\n\u003e The Tinfour compiled binary files (Jar files) are available at\n\u003e [Sonatype's Maven Central Repository](https://search.maven.org/search?q=Tinfour)\n\u003e or the [Maven Central Repository](https://mvnrepository.com/search?q=tinfour)\n\u003e\n\u003e Notes about the Delaunay triangulation and related algorithms are available at\n\u003e [TinfourDocs](https://gwlucastrig.github.io/TinfourDocs/). For project-specific\n\u003e documentation and implementation guides, take a look at our [Wiki](https://github.com/gwlucastrig/Tinfour/wiki).\n\u003e \n\u003e Recently, we learned about a new .NET port of Tinfour. To find out more, visit\n\u003e [Tinfour.NET](https://github.com/matthewfender/Tinfour.NET) on Github.\n\u003e\n\n### Delaunay Triangulation ###\nThe Delaunay Triangulation defines an optimal form for organizing unstructured or semi-random\nsample points into a triangular mesh. That optimality makes the Delaunay Triangulation\na useful tool for interpolation, grid construction, and surface analysis.  \n\n![Surface Models using TINs](doc/images/TwoTins.png \"Tinfour rendering of surface models based on a Delaunay Triangulation\")\n\n### Tinfour ###\nTinfour is a software library written in Java that provides tools for constructing \nand applying Triangulated Irregular Networks (TINs) that conform to the Delaunay\ncriterion. Because it is intended to process large data sets,\nthe implementation gives a great deal of attention to performance and\nmemory use. On a conventional laptop, Tinfour is capable of processing sample\npoints at a rate of better than one million points per second.\n\nThe Tinfour source code includes extensive documentation. This project also includes\nan informal paper that describes the uses, algorithms, and implementation\nof the software with enough detail to support potential developers \nwho may wish to contribute code or employ Tinfour in their own work. For more details, see\n[Data Elements and Algorithms for the Tinfour Libary](http://gwlucastrig.github.io/Tinfour/doc/TinfourAlgorithmsAndDataElements.pdf).\nIf you would like to discuss the Tinfour project or tell us about your own work, feel free to visit [The Tinfour Discussion Page](https://github.com/gwlucastrig/Tinfour/discussions). \n\n### The Tinfour Viewer ###\nWhen someone first sees a project like Tinfour, they might reasonably ask\nthat most thorny of questions \"What is it good for?\"  To answer that question,\nthis library includes a simple demonstration application called Tinfour Viewer\nthat allows the user to exercise the major functions of the Tinfour library.\nUsing Tinfour Viewer, the user can explore data sets ranging in size from just a few points\nup to the millions.\n\nHere's a screenshot from the Tinfour Viewer showing a collection of Lidar elevation data\ncollected over a section of Interstate highway in the U.S. Northeast.\n\n![Lidar over Guilford, CT](doc/images/TinfourViewerGuilford.jpg \"View of Lidar sample collected over Guilford, Connecticut, U.S.A.\")\n\nThe Tinfour Viewer application is intended to show how the Tinfour library could be integrated\ninto a full-featured GIS application or other analysis tool. It's a simple\nimplementation with a minimum of features.\nInstructions for setting up and running the Tinfour Viewer application\nare provided at the wiki page [Tinfour Execution from the Command Line](https://github.com/gwlucastrig/Tinfour/wiki/Tinfour-Execution-from-the-Command-Line).\nOur wiki page attempts to simplify the process of running Tinfour demostration applications as much as possible. It also\nexplains some of the nuances of the launch procedures and provides the details\nyou will need to set up a command window and run the command-line variations\nfor all the various Tinfour applications.\n\nTo run the Tinfour software, you must have Java installed\non your system.  If you do not have Java installed on your computer, you may\ndownload an installer for free from \n[Oracle Corporation, Java Downloads](https://java.com/en/download/ \"Java downloads from Oracle\").\n\n### Sources of Data ###\nLidar is a system for collecting surface elevation using laser measuring devices\nmounted on low flying aircraft. It's pretty amazing technology.\nThere are excellent sources of Lidar data to be had for free, you might start at \n[Free LiDAR Data Sources](http://gisgeography.com/top-6-free-lidar-data-sources/ \"Gis Geography\")\nor the [USGS 3D Elevation Program](https://www.usgs.gov/core-science-systems/ngp/3dep/data-tools \"USGS 3D Elevation Program Data and Tools\").\nThe Commonwealth of Pennsylvania was one of the first states to collect and post\na comprehensive survey of lidar data, and they did the job right... Their site includes \nnot just lidar data, but the supporting breakline files (Shapefiles), multi-spectral imagery,\nand project metadata (including Dewberry reports). Visit this excellent resource at\n[PAMAP Lidar Elevation Data](http://www.dcnr.state.pa.us/topogeo/pamap/lidar/index.htm \"PAMAP Lidar Elevation Data\").\n\nIf you just want to download a single Lidar file and view it, we recommend PAMAP Tile 4100133PAS\nwhich can be found at ftp://pamap.pasda.psu.edu/pamap_lidar/cycle1/LAS/South/2006/40000000/41001330PAS.zip.\nAt 36.7 megabytes, the PAMAP file isn't dainty. But it does contain interesting land features and sufficient\ndetail to exercise the major functions of the viewer.\n\n### A short demo ###\nRecently, we found an earlier Delaunay triangulation project by \"The Mad Creator\" (Bill Dwyer)\nthat provided a four-line demo. It was such a elegant way of introducing the package,\nthat we decided to include one of our own.\n\n    public static void main(String []args) throws Exception {\n        IncrementalTin tin = new IncrementalTin(1.0);\n        List\u003cVertex\u003evertexList = TestVertices.makeRandomVertices(100, 0);\n        tin.add(vertexList, null);\n        TinRenderingUtility.drawTin(tin, 500, 500, new File(\"tin.png\"));\n    }\n\n\n\n### Does Tinfour require external project dependencies? ###\nThe core Tinfour module has no external dependencies. All it requires\nis the standard Java API. Thus, you can integrate the core classes\ninto your own applications without adding unnecessary object code to\nyour software.\n\nThe associated, extended-functionality modules do depend on object code from external projects.\nThese include modules that can read data from Geographic Information System (GIS) sources\n(Shapefiles and airborne Lidar LAS files) and those that perform advanced mathematical\nand statistical analysis. These modules and dependencies are described in the Tinfour wiki page\n[Tinfour Builds and Dependencies](https://github.com/gwlucastrig/Tinfour/wiki/Tinfour-Builds-and-Dependencies).\n\n\n### What version of Java is required for Tinfour? ###\nTinfour is compiled under Java 11 or higher.\n\n### Configuring Tinfour in an IDE ###\nIn terms of its software and package organization, Tinfour has a relatively simple structure, so opening\nit in an Integrated Development Environment (IDE) is straight forward.\nThe major Java IDEs (Netbeans, Eclipse, and IntelliJ) all support direct access to Maven projects.\nIf you have one of these IDE's you can simply load the Tinfour project and run with it. All work fine.\nMore hints and background information on configuring Tinfour for use in an IDE are included in the Tinfour wiki page\n[Tinfour Builds and Dependencies](https://github.com/gwlucastrig/Tinfour/wiki/Tinfour-Builds-and-Dependencies).\n \n### Current Work ###\nDevelopment work on the Constrained Conforming Delaunay Triangulation is now complete.\n\nRelease 2.1.9 introduces the ability to perform Delaunay Refinement using Ruppert's Algorithm.\nDelaunay Refinement is a technique for improving the quality of the triangles\nformed by a Delaunay Triangulation through the introduction of synthetic vertices\nat well-chosen positions. Refinement techniques are particularly useful in areas near\nthe boundaries of constraints or near the permimeter of a triangulation. These\nareas are often prone to the formation of \"skinny\" triangles (triangles with two small\nangles and one very large angle). \n \nFor more detail about the Tinfour project development plans, see the\n[Tinfour Project Status and Roadmap](https://github.com/gwlucastrig/Tinfour/wiki/Tinfour-Project-Roadmap) page.\n \n### Our Companion Project ###\nVisit the [Gridfour Software Project](https://gwlucastrig.github.io/gridfour/) to learn more about our companion\nsoftware project dedicated to creating open-source software tools for raster (grid) data sets.\n\n### Conclusion ###\nFinally, the whole point of working on a project like Tinfour is to see \nit employed to do something useful. To that end, I welcome ideas, requests, and\nrecommendations for analysis tools and applications that would\nbenefit the open source and scientific communities. Got something\nto say? You can contact the Tinfour project at contact.tinfour@gmail.com\n \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgwlucastrig%2Ftinfour","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgwlucastrig%2Ftinfour","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgwlucastrig%2Ftinfour/lists"}