src/geo3d/ds/pl/lib.hpp
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #pragma once | ||
| 2 | |||
| 3 | #include "../../../geo2d/cross/lib.hpp" | ||
| 4 | #include "../p/lib.hpp" | ||
| 5 | |||
| 6 | namespace tifa_libs { | ||
| 7 | |||
| 8 | template <class FP> | ||
| 9 | struct planev { | ||
| 10 | point3d<FP> const *u, *v, *w; | ||
| 11 | 1399 | CEXP planev(point3d<FP> CR a, point3d<FP> CR b, point3d<FP> CR c) NE : u(&a), v(&b), w(&c) {} | |
| 12 | |||
| 13 | friend auto& operator<<(ostream_c auto& os, planev CR pl) NE { return os << *pl.u << ' ' << *pl.v << ' ' << *pl.w; } | ||
| 14 | 8091 | CEXP point3d<FP> normal() CNE { return cross(*u, *v, *w); } | |
| 15 | 252 | CEXP FP area2() CNE { return normal().norm(); } | |
| 16 | 252 | CEXP FP area() CNE { return area2() * (FP).5; } | |
| 17 | 2670 | CEXP point3d<FP> CR get(u32 i) CNE { | |
| 18 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 2670 times.
|
2670 | assert(i < 3); |
| 19 | 2670 | return **(&(this->u) + i); | |
| 20 | } | ||
| 21 | }; | ||
| 22 | |||
| 23 | } // namespace tifa_libs | ||
| 24 |