本文整理汇总了C++中poly::back方法的典型用法代码示例。如果您正苦于以下问题:C++ poly::back方法的具体用法?C++ poly::back怎么用?C++ poly::back使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类poly
的用法示例。
在下文中一共展示了poly::back方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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: 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;
}