Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F91280941
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, Nov 9, 15:24
Size
4 KB
Mime Type
text/x-c
Expires
Mon, Nov 11, 15:24 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
22235551
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