Snippets

Glotzer Group qhull C++ api test

Created by Joshua Anderson
#include "libqhullcpp/RboxPoints.h"
#include "libqhullcpp/QhullError.h"
#include "libqhullcpp/QhullQh.h"
#include "libqhullcpp/QhullFacet.h"
#include "libqhullcpp/QhullFacetList.h"
#include "libqhullcpp/QhullVertexSet.h"
#include "libqhullcpp/QhullLinkedList.h"
#include "libqhullcpp/QhullVertex.h"
#include "libqhullcpp/Qhull.h"
#include <iostream>

int main(int arc, char **argv)
    {
    double coords[] = {-1.0, -1.0, -1.0,
                       -1.0, -1.0,  1.0,
                       -1.0,  1.0, -1.0,
                       -1.0,  1.0,  1.0,
                        1.0, -1.0, -1.0,
                        1.0, -1.0,  1.0,
                        1.0,  1.0, -1.0,
                        1.0,  1.0,  1.0};

    orgQhull::Qhull q;
    q.runQhull("", 3, 8, coords, "");
    orgQhull::QhullFacetList facets=q.facetList();
    std::cout << "vertices:" << std::endl;
    orgQhull::QhullVertexList verts = q.vertexList();
    for (orgQhull::QhullVertex& v : verts)
        {
        std::cout << "id: " << v.id() << std::endl;
        orgQhull::QhullPoint o = v.point();
        std::cout << "point: " << o[0] << " " << o[1] << " " << o[2] << std::endl;
        }
    std::cout << std::endl;

    std::cout << "faces:" << std::endl;
    for (orgQhull::QhullFacet& f : facets)
        {
        orgQhull::QhullPoint o = f.getCenter();
        orgQhull::QhullHyperplane n = f.hyperplane();
        orgQhull::QhullVertexSet f_verts = f.vertices();

        std::cout << "Center: " << o[0] << " " << o[1] << " " << o[2] << std::endl;
        std::cout << "normal: " << n[0] << " " << n[1] << " " << n[2] << std::endl;
        std::cout << "vertices: ";
        for (orgQhull::QhullVertex v : f_verts)
            {
            std::cout << v.id() << " ";
            }
        std::cout << std::endl;
        std::cout << std::endl;
        }

    }

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.