169 std::unique_ptr<Tri3> tri(
new Tri3());
171 std::unique_ptr<Node> n0(
new Node(
Point(0.0, 0.0, 0.0), 0));
172 std::unique_ptr<Node> n1(
new Node(
Point(1.0, 0.0, 1.0), 1));
173 std::unique_ptr<Node> n2(
new Node(
Point(0.0, 1.0, 1.0), 2));
175 tri->set_node(0) = n0.get();
176 tri->set_node(1) = n1.get();
177 tri->set_node(2) = n2.get();
180 Point n = bnd_tri.normal();
183 const double inv_sqrt3 = 1.0 / std::sqrt(3.0);
184 EXPECT_NEAR(n(0), -inv_sqrt3, 1e-12);
185 EXPECT_NEAR(n(1), -inv_sqrt3, 1e-12);
186 EXPECT_NEAR(n(2), inv_sqrt3, 1e-12);
192 EXPECT_TRUE(bnd_tri.intersect(line_segment_ab));
198 EXPECT_FALSE(bnd_tri.intersect(line_segment_cd));
201 Point pt(2.0, 0.0, 2.0);
202 Point dist = bnd_tri.distanceFrom(pt);
203 EXPECT_NEAR(dist(0), -1.0, 1e-12);
204 EXPECT_NEAR(dist(1), 0.0, 1e-12);
205 EXPECT_NEAR(dist(2), -1.0, 1e-12);
207 Point pt2(0.0, 0.0, 0.0);
208 Point dist2 = bnd_tri.distanceFrom(pt2);
209 EXPECT_NEAR(dist2(0), 0.0, 1e-12);
210 EXPECT_NEAR(dist2(1), 0.0, 1e-12);
211 EXPECT_NEAR(dist2(2), 0.0, 1e-12);
Derived class for 3-node triangular elements (Tri3) Triangle is listed first so it is initialized bef...