Example #1
0
void float3::Orthonormalize(float3 &a, float3 &b, float3 &c)
{
	assume(!a.IsZero());
	a.Normalize();
	b -= b.ProjectToNorm(a);
	assume(!b.IsZero());
	b.Normalize();
	c -= c.ProjectToNorm(a);
	c -= c.ProjectToNorm(b);
	assume(!c.IsZero());
	c.Normalize();
}
Example #2
0
float3 Circle::ExtremePoint(const float3 &direction) const
{
	float3 d = direction - direction.ProjectToNorm(normal);
	if (d.IsZero())
		return pos;
	else
		return pos + d.ScaledToLength(r);
}
Example #3
0
Plane::Plane(const Line &line, const float3 &normal)
{
	float3 perpNormal = normal - normal.ProjectToNorm(line.dir);
	Set(line.pos, perpNormal.Normalized());
}
Example #4
0
Plane::Plane(const Ray &ray, const float3 &normal)
{
	float3 perpNormal = normal - normal.ProjectToNorm(ray.dir);
	Set(ray.pos, perpNormal.Normalized());
}