Exemplo n.º 1
0
void Sphere::Transform(const float3x4 &transform)
{
	assume(transform.HasUniformScale());
	pos = transform.MulPos(pos);
	r *= transform.Col(0).Length();
}
Exemplo n.º 2
0
void Polygon::Transform(const float3x4 &transform)
{
	if (!p.empty())
		transform.BatchTransformPos((vec*)&p[0], (int)p.size());
}
Exemplo n.º 3
0
void Ray::Transform(const float3x4 &transform)
{
	pos = transform.TransformPos(pos);
	dir = transform.TransformDir(dir);
}
Exemplo n.º 4
0
Ray operator *(const float3x4 &transform, const Ray &ray)
{
	assume(transform.IsInvertible(1e-6f)); // Tundra: use smaller epsilon in order to prevent assumption spam when raycasting to non-uniformly scaled objects.
	return Ray(transform.MulPos(ray.pos), transform.MulDir(ray.dir).Normalized());
}
Exemplo n.º 5
0
Line operator *(const float3x4 &transform, const Line &l)
{
	return Line(transform.MulPos(l.pos), transform.MulDir(l.dir));
}
Exemplo n.º 6
0
void Line::Transform(const float3x4 &transform)
{
	pos = transform.MulPos(pos);
	dir = transform.MulDir(dir);
}