| 32 | using namespace Base; |
| 33 | |
| 34 | double Vector2d::GetAngle(const Vector2d& vec) const |
| 35 | { |
| 36 | double fDivid = 0.0; |
| 37 | double fNum = 0.0; |
| 38 | |
| 39 | fDivid = Length() * vec.Length(); |
| 40 | |
| 41 | if ((fDivid < -1e-10) || (fDivid > 1e-10)) { |
| 42 | fNum = (*this * vec) / fDivid; |
| 43 | if (fNum < -1) { |
| 44 | return std::numbers::pi; |
| 45 | } |
| 46 | if (fNum > 1) { |
| 47 | return 0.0; |
| 48 | } |
| 49 | |
| 50 | return acos(fNum); |
| 51 | } |
| 52 | |
| 53 | return -std::numeric_limits<double>::max(); // division by zero |
| 54 | } |
| 55 | |
| 56 | void Vector2d::ProjectToLine(const Vector2d& point, const Vector2d& line) |
| 57 | { |
no test coverage detected