24 #ifndef MT_TRANSFORM_UTILITY_H
25 #define MT_TRANSFORM_UTILITY_H
55 Empty apply(
const Transform& t,
59 Vector3 apply(
const Transform& t,
64 Unit3 apply(
const Transform& t,
68 Point3 apply(
const Transform& t,
72 Line3 apply(
const Transform& t,
76 Plane3 apply(
const Transform& t,
80 Sphere3 apply(
const Transform& t,
84 Cylinder3 apply(
const Transform& t,
88 Circle3 apply(
const Transform& t,
92 Ellipse3 apply(
const Transform& t,
99 inline Empty apply(
const Transform& t,
106 inline Vector3 apply(
const Transform& t,
113 inline Unit3 apply(
const Transform& t,
116 const Rotation rotation(t.getRotation());
118 return Unit3 (rotation(u));
122 inline Point3 apply(
const Transform& t,
129 inline Line3 apply(
const Transform& t,
132 const Unit3 dir(apply(t, L.getDirection()));
133 const Point3 sup(apply(t, L.getSupport()));
135 return Line3(dir, sup, L.getDirectionType());
139 inline Plane3 apply(
const Transform& t,
142 const Unit3 nor(apply(t, P.getNormal()));
143 const Point3 sup(apply(t, P.getSupport()));
145 return Plane3(nor, sup, P.getDirectionType());
149 inline Sphere3 apply(
const Transform& t,
152 const Point3 center(apply(t, s.getCenter()));
154 return Sphere3(center, s.getRadius());
158 inline Cylinder3 apply(
const Transform& t,
161 const Line3 axis(apply(t, c.getAxis()));
163 return Cylinder3(axis, c.getRadius());
167 inline Circle3 apply(
const Transform& t,
170 const Point3 center(apply(t, c.getCenter()));
171 const Unit3 normal(apply(t, c.getNormal()));
173 return Circle3(center, c.getRadius(), normal);
177 inline Ellipse3 apply(
const Transform& t,
180 const Rotation rotation(t.getRotation());
181 const Point3 center(apply(t, e.getCenter()));
182 const Vector3 axis1(rotation(e.getAxis(1)));
183 const Vector3 axis2(rotation(e.getAxis(2)));
185 return Ellipse3(center, axis1, axis2);
192 #endif // MT_TRANSFORM_UTILITY_H