本文整理汇总了C++中poly::s方法的典型用法代码示例。如果您正苦于以下问题:C++ poly::s方法的具体用法?C++ poly::s怎么用?C++ poly::s使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类poly
的用法示例。
在下文中一共展示了poly::s方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: cut
void cut(poly &p){
bool flag = 1;
while(flag && p.s() > eps){
flag = 0;
rep(i, n)
if(cross(l[i], p)){
poly *L = new poly();
int st = 0, sz = p.ver.size();
for(; !cross(line(p.ver[st], p.ver[(st + 1) % sz]), l[i]); st = (st + 1) % sz);
L->ver.pb(crossPoint(line(p.ver[st], p.ver[(st + 1) % sz]), l[i]));
for(st = (st + 1) % sz; !cross(line(p.ver[st], p.ver[(st + 1) % sz]), l[i]); st = (st + 1) % sz)
L->ver.pb(p.ver[st]);
L->ver.pb(p.ver[st]);
L->ver.pb(crossPoint(line(p.ver[st], p.ver[(st + 1) % sz]), l[i]));
cut(*L);
L->ver.clear();
L->ver.pb(crossPoint(line(p.ver[st], p.ver[(st + 1) % sz]), l[i]));
for(st = (st + 1) % sz; !cross(line(p.ver[st], p.ver[(st + 1) % sz]), l[i]); st = (st + 1) % sz)
L->ver.pb(p.ver[st]);
L->ver.pb(p.ver[st]);
L->ver.pb(crossPoint(line(p.ver[st], p.ver[(st + 1) % sz]), l[i]));
p.ver = L->ver;
delete(L);
flag = 1;
}
}
double s = p.s();
if(s > eps && s < inf)
ans.pb(s);
}