本文整理汇总了C++中line::side方法的典型用法代码示例。如果您正苦于以下问题:C++ line::side方法的具体用法?C++ line::side怎么用?C++ line::side使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类line
的用法示例。
在下文中一共展示了line::side方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: res
pt operator&(const line &l1, const line &l2) {
double d = l1.a * l2.b - l1.b * l2.a;
assert(fabs(d) > eps);
pt res(
(l1.b * l2.c - l1.c * l2.b) / d,
(l1.a * l2.c - l1.c * l2.a) / -d
);
assert(l1.side(res) == 0);
assert(l2.side(res) == 0);
return res;
}
示例2: check_cross
void check_cross(const pt ¢, const double &r, const line &l, int need_cnt) {
vector<pt> res = cross(cent, r, l);
printf("check circle&line\n");
for (int i = 0; i < sz(res); i++) {
printf(" %.2lf %.2lf\n", res[i].x, res[i].y);
assert(l.side(res[i]) == 0);
assert(fabs((cent - res[i]).dist2() - r * r) < eps);
}
assert(sz(res) == need_cnt);
}
示例3: cross
vector<pt> cross(const pt ¢er, double r,
const line &l) {
double di = l.distz(center);
double d2 = l.norm2();
assert(fabs(d2) > eps);
pt mid = center + pt(l.a, l.b) * (-di / d2);
#ifdef DEBUG
assert(l.side(mid) == 0);
#endif
double s = r * r - di * di / d2;
if (s < -eps) return vector<pt>();
if (fabs(di * di - r * r * d2) < eps)
return vector<pt>(1, mid);
pt off = pt(-l.b, l.a) * sqrt(s / d2);
assert(fabs(off.dist2() - s) < eps);
vector<pt> res;
res.pb(mid + off);
res.pb(mid - off);
return res;
}