Example #1
0
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);
}
Example #2
0
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);
}
Example #3
0
double Vector3d::Distance  (const Vector3d &V) const
{
	return (double)sqrt( DistanceSqr(V) );
}