{"id":13731570,"url":"https://github.com/akuukka/quickhull","last_synced_at":"2025-05-08T05:30:21.208Z","repository":{"id":2605878,"uuid":"42016201","full_name":"akuukka/quickhull","owner":"akuukka","description":"C++ implementation of the 3D QuickHull algorithm","archived":false,"fork":false,"pushed_at":"2024-07-10T10:17:31.000Z","size":149,"stargazers_count":268,"open_issues_count":7,"forks_count":52,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-11-14T22:35:30.148Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akuukka.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-09-06T19:31:50.000Z","updated_at":"2024-11-10T12:51:28.000Z","dependencies_parsed_at":"2024-11-14T22:42:07.034Z","dependency_job_id":null,"html_url":"https://github.com/akuukka/quickhull","commit_stats":{"total_commits":100,"total_committers":7,"mean_commits":"14.285714285714286","dds":"0.29000000000000004","last_synced_commit":"9f81d1ec984a13e3596d02f61c6523e5f2971e82"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akuukka%2Fquickhull","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akuukka%2Fquickhull/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akuukka%2Fquickhull/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akuukka%2Fquickhull/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akuukka","download_url":"https://codeload.github.com/akuukka/quickhull/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253008262,"owners_count":21839623,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-08-03T02:01:33.160Z","updated_at":"2025-05-08T05:30:21.198Z","avatar_url":"https://github.com/akuukka.png","language":"C++","readme":"This implementation is 100% Public Domain.\n\nFeel free to use.\n \nC++11 is needed to compile it.\n\nBasic usage:\n\n\t#include \"quickhull/quickhull.hpp\"\n\n\tusing namespace quickhull;\n\tQuickHull\u003cfloat\u003e qh; // Could be double as well\n\tstd::vector\u003cVector3\u003cfloat\u003e\u003e pointCloud;\n\t// Add points to point cloud\n\t...\n\tauto hull = qh.getConvexHull(pointCloud, true, false);\n\tconst auto\u0026 indexBuffer = hull.getIndexBuffer();\n\tconst auto\u0026 vertexBuffer = hull.getVertexBuffer();\n\t// Do what you want with the convex triangle mesh\n\nVertex data can be passed as a pointer to float/double as long as the data is in X_0,Y_0,Z_0,X_1,Y_1,Z_1,...,X_N,Y_N_Z_N format:\n\n\tauto hull = qh.getConvexHull(\u0026pointCloud[0].x, pointCloud.size(), true, false);\n\nThe first boolean parameter of getConvexHull specifies whether the resulting mesh should have its triangles in CCW orientation.\n\nThe second boolean parameter specifies whether the mesh should use vertex indices of the original point cloud. If it is false, a new vertex buffer is generated which consists only of those vertices that are part of the convex hull. In this case, the new vertex buffer is owned by the returned ConvexHull object. Otherwise, the original point cloud is used as vertex buffer and since the vertices are not copied, make sure you don't call ConvexHull::getVertexBuffer after releasing the memory that contains the original point cloud data.\n\nThis implementation is fast, because the convex hull is internally built using a half edge mesh representation which provides quick access to adjacent faces. It is also possible to get the output convex hull as a half edge mesh:\n\n\tauto mesh = qh.getConvexHullAsMesh(\u0026pointCloud[0].x, pointCloud.size(), true);\n","funding_links":[],"categories":["Maths"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakuukka%2Fquickhull","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakuukka%2Fquickhull","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakuukka%2Fquickhull/lists"}