Page MenuHomec4science

QhullVertex.cpp
No OneTemporary

File Metadata

Created
Fri, Aug 9, 20:36

QhullVertex.cpp

/****************************************************************************
**
** Copyright (c) 2008-2015 C.B. Barber. All rights reserved.
** $Id: //main/2011/qhull/src/libqhullcpp/QhullVertex.cpp#11 $$Change: 1816 $
** $DateTime: 2015/01/21 22:51:49 $$Author: bbarber $
**
****************************************************************************/
#//! QhullVertex -- Qhull's vertex structure, vertexT, as a C++ class
#include "Qhull.h"
#include "QhullPoint.h"
#include "QhullFacetSet.h"
#include "QhullVertex.h"
#include "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

Event Timeline