本文整理汇总了C++中PointArray::empty方法的典型用法代码示例。如果您正苦于以下问题:C++ PointArray::empty方法的具体用法?C++ PointArray::empty怎么用?C++ PointArray::empty使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PointArray
的用法示例。
在下文中一共展示了PointArray::empty方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SearchLabelPostion
// 采用近似估计的算法
// 如果是闭合等值线,则搜索整个多边形中最长的边
// 如果是开放等值线,则搜索20%--80%范围内的多边形中最长边
void SearchLabelPostion( const PointArray& cnpts, DT_Point& tpt, double& angle )
{
if( cnpts.empty() ) return;
// 通常情况下,等值线至少有3个点
int s = 0, t = cnpts.size();
if( !IsPointEqual( cnpts.front(), cnpts.back() ) )
{
s = cnpts.size() / 5;
t = cnpts.size() - s;
}
int pos = s;
double maxDist = Distance_2( cnpts[0], cnpts[1] );
for( int i = s; i < t - 1; i++ )
{
double dist = Distance_2( cnpts[i], cnpts[i + 1] );
if( dist > maxDist )
{
pos = i;
maxDist = dist;
}
}
tpt = MidPoint( cnpts[pos], cnpts[pos + 1] );
angle = Direction( cnpts[pos], cnpts[pos + 1] );
}
示例2: ApproximatePolygon
static void ApproximatePolygon( const PointArray& cnpts, PointArray& polygon, double tolerance )
{
if( cnpts.empty() ) return;
int n = cnpts.size();
// 是否封闭等值线???
if( IsPointEqual( cnpts.front(), cnpts.back() ) )
{
n--;
}
int minEdge = n + 1, k = n;
IntArray indexes;
for( int i = 0; i < ( int )cnpts.size(); i++ )
{
indexes.push_back( i );
}
while( k < minEdge )
{
minEdge = k;
int p = 0;
while( p < minEdge - ( n % 2 == 0 ? 3 : 2 ) )
{
double distance = GetPointDistanceToLine( cnpts[indexes[p + 1]], cnpts[indexes[p]], cnpts[indexes[p + 2]] );
if ( distance < tolerance )
{
indexes[p + 1] = -1;
k -= 1;
}
p += 2;
}
UpdateIndexes( indexes );
}
for( int i = 0; i < ( int )indexes.size(); i++ )
{
polygon.push_back( cnpts[indexes[i]] );
}
}
示例3: SmoothPoints
void SmoothPoints( const PointArray& inPts, PointArray& outPts, unsigned int N )
{
if( inPts.empty() ) return;
SplineInterpolate( inPts, outPts, N );
}