Files
allwpilib/wpimath/src/main/native/cpp/geometry/struct/QuaternionStruct.cpp

31 lines
1.1 KiB
C++
Raw Normal View History

// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
2025-11-07 19:56:21 -05:00
#include "wpi/math/geometry/struct/QuaternionStruct.hpp"
namespace {
constexpr size_t kWOff = 0;
constexpr size_t kXOff = kWOff + 8;
constexpr size_t kYOff = kXOff + 8;
constexpr size_t kZOff = kYOff + 8;
} // namespace
2025-11-07 20:00:05 -05:00
using StructType = wpi::util::Struct<wpi::math::Quaternion>;
2025-11-07 20:00:05 -05:00
wpi::math::Quaternion StructType::Unpack(std::span<const uint8_t> data) {
return wpi::math::Quaternion{
wpi::util::UnpackStruct<double, kWOff>(data),
wpi::util::UnpackStruct<double, kXOff>(data),
wpi::util::UnpackStruct<double, kYOff>(data),
wpi::util::UnpackStruct<double, kZOff>(data),
};
}
2025-11-07 20:00:05 -05:00
void StructType::Pack(std::span<uint8_t> data, const wpi::math::Quaternion& value) {
wpi::util::PackStruct<kWOff>(data, value.W());
wpi::util::PackStruct<kXOff>(data, value.X());
wpi::util::PackStruct<kYOff>(data, value.Y());
wpi::util::PackStruct<kZOff>(data, value.Z());
}