mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2026-01-10 00:37:46 -07:00
Move many third-party components' source codes from the src folder to a new folder called deps_src. The goal is to make the code structure clearer and easier to navigate.
112 lines
3.1 KiB
C++
112 lines
3.1 KiB
C++
/****************************************************************************
|
|
**
|
|
** Copyright (c) 2008-2015 C.B. Barber. All rights reserved.
|
|
** $Id: //main/2015/qhull/src/libqhullcpp/QhullVertex.cpp#3 $$Change: 2066 $
|
|
** $DateTime: 2016/01/18 19:29:17 $$Author: bbarber $
|
|
**
|
|
****************************************************************************/
|
|
|
|
#//! QhullVertex -- Qhull's vertex structure, vertexT, as a C++ class
|
|
|
|
#include "libqhullcpp/QhullVertex.h"
|
|
|
|
#include "libqhullcpp/Qhull.h"
|
|
#include "libqhullcpp/QhullPoint.h"
|
|
#include "libqhullcpp/QhullFacetSet.h"
|
|
#include "libqhullcpp/QhullFacet.h"
|
|
|
|
#ifdef _MSC_VER // Microsoft Visual C++ -- warning level 4
|
|
#pragma warning( disable : 4611) // interaction between '_setjmp' and C++ object destruction is non-portable
|
|
#pragma warning( disable : 4996) // function was declared deprecated(strcpy, localtime, etc.)
|
|
#endif
|
|
|
|
namespace orgQhull {
|
|
|
|
#//!\name Class objects
|
|
vertexT QhullVertex::
|
|
s_empty_vertex= {0,0,0,0,0,
|
|
0,0,0,0,0,
|
|
0};
|
|
|
|
#//!\name Constructors
|
|
|
|
QhullVertex::QhullVertex(const Qhull &q)
|
|
: qh_vertex(&s_empty_vertex)
|
|
, qh_qh(q.qh())
|
|
{
|
|
}//Default
|
|
|
|
QhullVertex::QhullVertex(const Qhull &q, vertexT *v)
|
|
: qh_vertex(v ? v : &s_empty_vertex)
|
|
, qh_qh(q.qh())
|
|
{
|
|
}//vertexT
|
|
|
|
#//!\name foreach
|
|
|
|
//! Return neighboring facets for a vertex
|
|
//! If neither merging nor Voronoi diagram, requires Qhull::defineVertexNeighborFacets() beforehand.
|
|
QhullFacetSet QhullVertex::
|
|
neighborFacets() const
|
|
{
|
|
if(!neighborFacetsDefined()){
|
|
throw QhullError(10034, "Qhull error: neighboring facets of vertex %d not defined. Please call Qhull::defineVertexNeighborFacets() beforehand.", id());
|
|
}
|
|
return QhullFacetSet(qh_qh, qh_vertex->neighbors);
|
|
}//neighborFacets
|
|
|
|
}//namespace orgQhull
|
|
|
|
#//!\name Global functions
|
|
|
|
using std::endl;
|
|
using std::ostream;
|
|
using std::string;
|
|
using std::vector;
|
|
using orgQhull::QhullPoint;
|
|
using orgQhull::QhullFacet;
|
|
using orgQhull::QhullFacetSet;
|
|
using orgQhull::QhullFacetSetIterator;
|
|
using orgQhull::QhullVertex;
|
|
|
|
//! Duplicate of qh_printvertex [io_r.c]
|
|
ostream &
|
|
operator<<(ostream &os, const QhullVertex::PrintVertex &pr)
|
|
{
|
|
QhullVertex v= *pr.vertex;
|
|
QhullPoint p= v.point();
|
|
if(*pr.print_message){
|
|
os << pr.print_message << " ";
|
|
}else{
|
|
os << "- ";
|
|
}
|
|
os << "p" << p.id() << " (v" << v.id() << "): ";
|
|
const realT *c= p.coordinates();
|
|
for(int k= p.dimension(); k--; ){
|
|
os << " " << *c++; // FIXUP QH11010 %5.2g
|
|
}
|
|
if(v.getVertexT()->deleted){
|
|
os << " deleted";
|
|
}
|
|
if(v.getVertexT()->delridge){
|
|
os << " ridgedeleted";
|
|
}
|
|
os << endl;
|
|
if(v.neighborFacetsDefined()){
|
|
QhullFacetSetIterator i= v.neighborFacets();
|
|
if(i.hasNext()){
|
|
os << " neighborFacets:";
|
|
countT count= 0;
|
|
while(i.hasNext()){
|
|
if(++count % 100 == 0){
|
|
os << endl << " ";
|
|
}
|
|
QhullFacet f= i.next();
|
|
os << " f" << f.id();
|
|
}
|
|
os << endl;
|
|
}
|
|
}
|
|
return os;
|
|
}//<< PrintVertex
|
|
|