opynsim
Unofficial C++ Documentation
Loading...
Searching...
No Matches
maybe_named_landmark_pair.h
Go to the documentation of this file.
1#pragma once
2
7#include <SimTKcommon/SmallMatrix.h>
8
9#include <concepts>
10#include <optional>
11#include <string>
12#include <utility>
13
14namespace opyn
15{
16 // a possibly-not-completely-paired landmark
18 public:
20 std::string name_,
21 std::optional<osc::Vector3> maybeSourcePosition,
22 std::optional<osc::Vector3> maybeDestinationPosition) :
23
24 m_Name{std::move(name_)},
25 m_MaybeSourcePosition{maybeSourcePosition},
26 m_MaybeDestinationPosition{maybeDestinationPosition}
27 {}
28
29 osc::CStringView name() const { return m_Name; }
30 osc::CStringView getName() const { return name(); }
31
32 template<std::convertible_to<std::string_view> StringLike>
33 void setName(StringLike&& newName) { m_Name = std::forward<StringLike>(newName); }
34
35 bool hasSource() const { return m_MaybeSourcePosition.has_value(); }
36 bool hasDestination() const { return m_MaybeDestinationPosition.has_value(); }
37 bool isFullyPaired() const { return hasSource() && hasDestination(); }
38 std::optional<opyn::LandmarkPair3D<float>> tryGetPairedLocations() const
39 {
40 if (m_MaybeSourcePosition && m_MaybeDestinationPosition) {
41 return opyn::LandmarkPair3D<float>{osc::to<SimTK::fVec3>(*m_MaybeSourcePosition), osc::to<SimTK::fVec3>(*m_MaybeDestinationPosition)};
42 }
43 else {
44 return std::nullopt;
45 }
46 }
47
48 void setDestination(std::optional<osc::Vector3> p) { m_MaybeDestinationPosition = p; }
49 private:
50 std::string m_Name;
51 std::optional<osc::Vector3> m_MaybeSourcePosition;
52 std::optional<osc::Vector3> m_MaybeDestinationPosition;
53 };
54}
Definition maybe_named_landmark_pair.h:17
MaybeNamedLandmarkPair(std::string name_, std::optional< osc::Vector3 > maybeSourcePosition, std::optional< osc::Vector3 > maybeDestinationPosition)
Definition maybe_named_landmark_pair.h:19
void setName(StringLike &&newName)
Definition maybe_named_landmark_pair.h:33
bool hasDestination() const
Definition maybe_named_landmark_pair.h:36
bool isFullyPaired() const
Definition maybe_named_landmark_pair.h:37
std::optional< opyn::LandmarkPair3D< float > > tryGetPairedLocations() const
Definition maybe_named_landmark_pair.h:38
void setDestination(std::optional< osc::Vector3 > p)
Definition maybe_named_landmark_pair.h:48
bool hasSource() const
Definition maybe_named_landmark_pair.h:35
osc::CStringView name() const
Definition maybe_named_landmark_pair.h:29
osc::CStringView getName() const
Definition maybe_named_landmark_pair.h:30
Definition c_string_view.h:12
Definition component_registry.h:14
constexpr U to(T &&value)
Definition conversion.h:56
Definition landmark_pair_3d.h:14