本文整理汇总了C++中Polynomial::solve方法的典型用法代码示例。如果您正苦于以下问题:C++ Polynomial::solve方法的具体用法?C++ Polynomial::solve怎么用?C++ Polynomial::solve使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Polynomial
的用法示例。
在下文中一共展示了Polynomial::solve方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: intersect
bool Quadric::intersect(const Point3D &eye, const Point3D &_ray, HitReporter &hr) const
{
Polynomial<2> x, y, z;
const Vector3D ray = _ray - eye;
x[0] = eye[0];
x[1] = ray[0];
y[0] = eye[1];
y[1] = ray[1];
z[0] = eye[2];
z[1] = ray[2];
const Polynomial<2> eqn = A * x * x + B * x * y + C * x * z
+ D * y * y + E * y * z + F * z * z + G * x + H * y + J * z + K;
double ts[2];
auto nhits = eqn.solve(ts);
if(nhits > 0)
{
const Polynomial<2> ddx = 2 * A * x + B * y + C * z + G,
ddy = 2 * D * y + B * x + E * z + H,
ddz = 2 * F * z + C * x + E * y + J;
for(int i = 0; i < nhits; i++)
{
// Figure out the normal.
const double t = ts[i];
const Point3D pt = eye + t * ray;
if(!predicate(pt))
continue;
Vector3D normal(ddx.eval(t), ddy.eval(t), ddz.eval(t));
// Figure out the uv.
Point2D uv;
Vector3D u, v;
get_uv(pt, normal, uv, u, v);
if(!hr.report(ts[i], normal, uv, u, v))
return false;
}
}
return true;
}
示例2: solve
RootFinding::Roots RootFinding::solve(const Polynomial &p,const Polynomial &q)
{
return RootFinding::Roots(p.solve(q));
}