125 double dot00 = v0.
Dot(v0);
126 double dot01 = v0.
Dot(v1);
127 double dot02 = v0.
Dot(v2);
128 double dot11 = v1.
Dot(v1);
129 double dot12 = v1.
Dot(v2);
132 double invDenom = 1.0 / (dot00 * dot11 - dot01 * dot01);
133 double u = (dot11 * dot02 - dot01 * dot12) * invDenom;
134 double v = (dot00 * dot12 - dot01 * dot02) * invDenom;
137 return (u >= 0) && (v >= 0) && (u + v <= 1);
212 double s = this->Perimeter() / 2.0;
213 T a = this->Side(0).Length();
214 T b = this->Side(1).Length();
215 T c = this->Side(2).Length();
219 return sqrt(s * (s-a) * (s-b) * (s-c));