本文整理汇总了C++中poly::begin方法的典型用法代码示例。如果您正苦于以下问题:C++ poly::begin方法的具体用法?C++ poly::begin怎么用?C++ poly::begin使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类poly
的用法示例。
在下文中一共展示了poly::begin方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: convex_hull
void convex_hull(poly &v,poly &p)
{
p.clear() ;
sort(v.begin(),v.end()) ;
v.resize(unique(v.begin(),v.end())-v.begin()) ;
int n=v.size() ;
int sz=0 ;
for(int i=0;i<n;i++)
{
while(sz>=2 && dcmp(cross(st[sz-2],st[sz-1],v[i]))<0)
sz-- ;
st[sz++]=v[i] ;
}
for(int i=0;i<sz;i++) p.push_back(st[i]) ;
sz=0 ;
for(int i=0;i<n;i++)
{
while(sz>=2 && dcmp(cross(st[sz-2],st[sz-1],v[i])>0))
sz-- ;
st[sz++]=v[i] ;
}
for(int i=sz-1;i>=0;i--)
{
if(i==sz-1 && st[i]==p.back()) continue ;
if(i==0 && st[i]==p[0]) continue ;
p.push_back(st[i]) ;
}
}
示例2: graham
poly graham(poly p){
int i,j,n = p.size();
poly g;
pivo = *min_element(p.begin(), p.end(), cmp_pivo);
sort( p.begin(), p.end(), cmp_radial);
// n previous declared
for( i=j=0; i<n;i++){
while( j>=2 && ccw( g[j-2] , g[j-1], p[i]) >=0){
g.pop_back(); j--;
}
g.push_back(p[i]); j++;
}
return g;
}
示例3: graham
poly graham (poly p) {
for (int i = 1; i < p.size(); ++i) {
if (p[i] < p[0])
swap(p[0],p[i]);
}
pivot = p[0];
sort(p.begin(),p.end(),angleCmp);
poly chull (p.begin(),p.begin()+3);
for (int i = 3; i < p.size(); ++i) {
while(chull.size()>=2 && cross(chull[chull.size()-2],chull[chull.size()-1],p[i]) <= 0) {
chull.erase(chull.end()-1);
}
chull.push_back(p[i]);
}
return chull;
}
示例4: hull
poly hull( poly p ) {
int k = 0, n = p.size();
sort( p.begin(), p.end());
poly h( 2 * n );
for(int i = 0; i < n; i++){
while( k >= 2 && ccw( h[k-2], h[k-1], p[i] ) <= 0 ) k--;
h[ k++ ] = p[ i ];
}
int tmp = k + 1;
for(int i = n - 2; i >= 0; i--){
while( k >= tmp && ccw( h[k-2], h[k-1], p[i] ) <= 0 ) k--;
h[ k++ ] = p[ i ];
}
h.resize( k );
return h;
}
示例5: convex_hull
void convex_hull(poly & t, poly & r) {
unsigned i;
Compare order;
// Search leftmost vertex
order.p0 = t[0];
for (i = 1; i < t.size(); ++i)
if (t[i].real() < order.p0.real())
order.p0 = t[i];
sort(t.begin(), t.end(), order);
for (i = 0; i < t.size(); ++i) {
r.push_back(t[i]);
// Pop vertices that become internal
while (r.size() > 3u && angle(r.end()[-3], r.end()[-2], r.end()[-1])) {
r.end()[-2] = r.back();
r.pop_back();
}
}
return;
}