bool Intersect(const Circle& c0, const Circle& c1) { const float fRadii = c0.radius + c1.radius; const float fRadiiSquared = fRadii * fRadii; const float fDistanceSquared = DistanceSqr(c0.center, c1.center); return (fDistanceSquared < fRadiiSquared); }
RGB SpotLight::Sample_L(const Point &p, Float pEpsilon, const LightSample &ls, Vector3f *wi, Float *pdf, VisibilityTester *vis) const { *wi = Normalize(mPos - p); //标准化的点到光源的向量 *pdf = 1.0f; vis->SetSegment(p, pEpsilon, mPos, 0.0f); return mIntensity * Falloff(-*wi) / DistanceSqr(mPos, p); }
double Vector3d::Distance (const Vector3d &V) const { return (double)sqrt( DistanceSqr(V) ); }