本文整理汇总了C++中Vec3r::squareNorm方法的典型用法代码示例。如果您正苦于以下问题:C++ Vec3r::squareNorm方法的具体用法?C++ Vec3r::squareNorm怎么用?C++ Vec3r::squareNorm使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Vec3r
的用法示例。
在下文中一共展示了Vec3r::squareNorm方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: sphere_clip_vector
// precondition1: P is inside the sphere
// precondition2: P,V points to the outside of the sphere (i.e. OP.V > 0)
static bool sphere_clip_vector(const Vec3r& O, real r, const Vec3r& P, Vec3r& V)
{
Vec3r W = P - O;
real a = V.squareNorm();
real b = 2.0 * V * W;
real c = W.squareNorm() - r * r;
real delta = b * b - 4 * a * c;
if (delta < 0) {
// Should not happen, but happens sometimes (numerical precision)
return true;
}
real t = - b + ::sqrt(delta) / (2.0 * a);
if (t < 0.0) {
// Should not happen, but happens sometimes (numerical precision)
return true;
}
if (t >= 1.0) {
// Inside the sphere
return false;
}
V[0] = (t * V.x());
V[1] = (t * V.y());
V[2] = (t * V.z());
return true;
}
示例2: angle_from_cotan
static real angle_from_cotan(WVertex *vo, WVertex *v1, WVertex *v2)
{
/* cf. Appendix B and the caption of Table 1 from [Meyer et al 2002] */
real udotv, denom;
Vec3r u (v1->GetVertex() - vo->GetVertex());
Vec3r v(v2->GetVertex() - vo->GetVertex());
udotv = u * v;
denom = sqrt(u.squareNorm() * v.squareNorm() - udotv * udotv);
/* Note: I assume this is what they mean by using atan2(). -Ray Jones */
/* tan = denom/udotv = y/x (see man page for atan2) */
return (fabs(atan2(denom, udotv)));
}