36 template<
class Po
int,
class Po
intRef>
52 template<
class Po
int,
class Po
intRef>
58 is >> a_ >> b_ >> c_ >> d_;
64 is.
check(
"tetrahedron::tetrahedron(Istream& is)");
70 template<
class Po
int,
class Po
intRef>
77 template<
class Po
int,
class Po
intRef>
84 template<
class Po
int,
class Po
intRef>
91 template<
class Po
int,
class Po
intRef>
98 template<
class Po
int,
class Po
intRef>
105 template<
class Po
int,
class Po
intRef>
112 template<
class Po
int,
class Po
intRef>
119 template<
class Po
int,
class Po
intRef>
126 template<
class Po
int,
class Po
intRef>
129 return 0.25*(a_ + b_ + c_ + d_);
133 template<
class Po
int,
class Po
intRef>
136 return (1.0/6.0)*(((b_ - a_) ^ (c_ - a_)) & (d_ - a_));
140 template<
class Po
int,
class Po
intRef>
147 scalar lamda =
magSqr(c) - (a&c);
153 return a_ + 0.5*(a + (lamda*ba - mu*ca)/(c&ba));
157 template<
class Po
int,
class Po
intRef>
166 template<
class po
int,
class po
intRef>
172 is >> t.a_ >> t.b_ >> t.c_ >> t.d_;
178 is.
check(
"Istream& operator>>(Istream&, tetrahedron&)");
184 template<
class Po
int,
class Po
intRef>
185 inline Ostream& operator<<(Ostream& os, const tetrahedron<Point, PointRef>& t)