Optech does it like R3(heading) * R1(-pitch) * R2(-roll)
| 78 | |
| 79 | // Optech does it like R3(heading) * R1(-pitch) * R2(-roll) |
| 80 | inline pdal::georeference::RotationMatrix |
| 81 | createOptechRotationMatrix(double roll, double pitch, double heading) |
| 82 | { |
| 83 | return georeference::RotationMatrix( |
| 84 | std::cos(roll) * std::cos(heading) + |
| 85 | std::sin(pitch) * std::sin(roll) * std::sin(heading), // m00 |
| 86 | std::cos(pitch) * std::sin(heading), // m01 |
| 87 | std::cos(heading) * std::sin(roll) - |
| 88 | std::cos(roll) * std::sin(pitch) * std::sin(heading), // m02 |
| 89 | std::cos(heading) * std::sin(pitch) * std::sin(roll) - |
| 90 | std::cos(roll) * std::sin(heading), // m10 |
| 91 | std::cos(pitch) * std::cos(heading), // m11 |
| 92 | -std::sin(roll) * std::sin(heading) - |
| 93 | std::cos(roll) * std::cos(heading) * std::sin(pitch), // m12 |
| 94 | -std::cos(pitch) * std::sin(roll), // m20 |
| 95 | std::sin(pitch), // m21 |
| 96 | std::cos(pitch) * std::cos(roll) // m22 |
| 97 | ); |
| 98 | } |
| 99 | } |
no test coverage detected