コード例 #1
0
ファイル: Frustum.cpp プロジェクト: chengzg/MathGeoLib
void Frustum::Transform(const float3x4 &transform)
{
	assume(transform.HasUniformScale());
	pos = transform.MulPos(pos);
	front = transform.MulDir(front);
	float scaleFactor = front.Normalize();
	up = transform.MulDir(up).Normalized();
	nearPlaneDistance *= scaleFactor;
	farPlaneDistance *= scaleFactor;
	if (type == OrthographicFrustum)
	{
		orthographicWidth *= scaleFactor;
		orthographicHeight *= scaleFactor;
	}
}
コード例 #2
0
ファイル: Circle.cpp プロジェクト: 360degrees-fi/tundra
void Circle::Transform(const float3x4 &transform)
{
	assume(transform.HasUniformScale());
	assume(transform.IsColOrthogonal());
	pos = transform.MulPos(pos);
	normal = transform.MulDir(normal).Normalized();
	r *= transform.Col(0).Length(); // Scale the radius of the circle.
}
コード例 #3
0
ファイル: Ray.cpp プロジェクト: Ilikia/naali
Ray operator *(const float3x4 &transform, const Ray &ray)
{
    return Ray(transform.MulPos(ray.pos), transform.MulDir(ray.dir));
}
コード例 #4
0
ファイル: Ray.cpp プロジェクト: ggf31416/CompGraf1
void Ray::Transform(const float3x4 &transform)
{
	pos = transform.MulPos(pos);
	dir = transform.MulDir(dir);
}
コード例 #5
0
ファイル: Ray.cpp プロジェクト: ggf31416/CompGraf1
Ray operator *(const float3x4 &transform, const Ray &ray)
{
	assume(transform.IsInvertible());
	return Ray(transform.MulPos(ray.pos), transform.MulDir(ray.dir).Normalized());
}
コード例 #6
0
ファイル: Line.cpp プロジェクト: jnmacd/MathGeoLib
Line operator *(const float3x4 &transform, const Line &l)
{
    return Line(transform.MulPos(l.pos), transform.MulDir(l.dir));
}
コード例 #7
0
ファイル: Ray.cpp プロジェクト: 360degrees-fi/tundra
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());
}