Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F74464302
QhullPointSet.cpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sat, Jul 27, 23:27
Size
4 KB
Mime Type
text/x-c
Expires
Mon, Jul 29, 23:27 (2 d)
Engine
blob
Format
Raw Data
Handle
19397899
Attached To
rCADDMESH CADD_mesher
QhullPointSet.cpp
View Options
/****************************************************************************
**
** Copyright (c) 2009-2015 C.B. Barber. All rights reserved.
** $Id: //main/2011/qhull/src/libqhullpcpp/QhullPointSet.cpp#2 $$Change: 1810 $
** $DateTime: 2015/01/17 18:28:15 $$Author: bbarber $
**
****************************************************************************/
#include "QhullPointSet.h"
#include <iostream>
#include <algorithm>
#ifdef _MSC_VER // Microsoft Visual C++ -- warning level 4
#endif
namespace orgQhull {
#// Conversion
// See qt-qhull.cpp for QList conversion
#ifndef QHULL_NO_STL
std::vector<QhullPoint> QhullPointSet::
toStdVector() const
{
QhullPointSetIterator i(*this);
std::vector<QhullPoint> vs;
while(i.hasNext()){
vs.push_back(i.next());
}
return vs;
}//toStdVector
#endif //QHULL_NO_STL
#//Element-access
//! Derived from QhullSet::value
QhullPoint QhullPointSet::
value(int idx) const
{
// Avoid call to qh_setsize() and assert in elementPointer()
//const T *n= reinterpret_cast<const T *>(&SETelem_(getSetT(), idx));
void **n= reinterpret_cast<void **>(&SETelem_(getSetT(), idx));
coordT **n2= reinterpret_cast<coordT **>(n);
if(idx>=0 && n<endPointer()){
return QhullPoint(dimension(), *n2);
}else{
return QhullPoint();
}
}//value
//! Non-const since copy is an alias
//! Derived from QhullSet::value
QhullPoint QhullPointSet::
value(int idx, QhullPoint &defaultValue) const
{
// Avoid call to qh_setsize() and assert in elementPointer()
void **n= reinterpret_cast<void **>(&SETelem_(getSetT(), idx));
coordT **n2= reinterpret_cast<coordT **>(n);
if(idx>=0 && n<endPointer()){
return QhullPoint(dimension(), *n2);
}else{
return defaultValue;
}
}//value
#//Read-only
bool QhullPointSet::
operator==(const QhullPointSet &o) const
{
if(dimension()!=o.dimension() || count()!=o.count()){
return false;
}
QhullPointSetIterator i(*this);
QhullPointSetIterator j(o);
while(i.hasNext()){
if(i.next()!=j.next()){
return false;
}
}
return true;
}//operator==
#//Search
bool QhullPointSet::
contains(const QhullPoint &t) const
{
QhullPointSetIterator i(*this);
while(i.hasNext()){
if(i.next()==t){
return true;
}
}
return false;
}//contains
int QhullPointSet::
count(const QhullPoint &t) const
{
int n= 0;
QhullPointSetIterator i(*this);
while(i.hasNext()){
if(i.next()==t){
++n;
}
}
return n;
}//count
int QhullPointSet::
indexOf(const QhullPoint &t) const
{
int idx= 0;
QhullPointSetIterator i(*this);
while(i.hasNext()){
if(i.next()==t){
return idx;
}
++idx;
}
return -1;
}//indexOf
int QhullPointSet::
lastIndexOf(const QhullPoint &t) const
{
int idx= count()-1;
QhullPointSetIterator i(*this);
i.toBack();
while(i.hasPrevious()){
if(i.previous()==t){
break;
}
--idx;
}
return idx;
}//lastIndexOf
#//QhullPointSetIterator
bool QhullPointSetIterator::
findNext(const QhullPoint &p)
{
while(i!=c->constEnd()){
if(*i++ == p){
return true;
}
}
return false;
}//findNext
bool QhullPointSetIterator::
findPrevious(const QhullPoint &p)
{
while(i!=c->constBegin()){
if(*(--i) == p){
return true;
}
}
return false;
}//findPrevious
}//namespace orgQhull
#//Global functions
using std::endl;
using std::ostream;
using orgQhull::QhullPoint;
using orgQhull::QhullPointSet;
using orgQhull::UsingLibQhull;
#//operator<<
ostream &
operator<<(ostream &os, const QhullPointSet &ps)
{
os << ps.print(UsingLibQhull::NOqhRunId);
return os;
}//<<QhullPointSet
ostream &
operator<<(ostream &os, const QhullPointSet::PrintIdentifiers &pr)
{
const QhullPointSet s= *pr.point_set;
if (pr.print_message) {
os << pr.print_message;
}
for(QhullPointSet::const_iterator i=s.begin(); i != s.end(); ++i){
if(i!=s.begin()){
os << " ";
}
const QhullPoint point= *i;
int id= point.id(pr.run_id);
os << "p" << id;
}
os << endl;
return os;
}//PrintIdentifiers
ostream &
operator<<(ostream &os, const QhullPointSet::PrintPointSet &pr)
{
const QhullPointSet s= *pr.point_set;
if (pr.print_message) {
os << pr.print_message;
}
for(QhullPointSet::const_iterator i=s.begin(); i != s.end(); ++i){
const QhullPoint point= *i;
os << point.print(pr.run_id);
}
return os;
}//printPointSet
Event Timeline
Log In to Comment