22 class PointPositionNormal
29 using Scalar = _Scalar;
30 using VectorType = Eigen::Matrix<Scalar, Dim, 1>;
31 using MatrixType = Eigen::Matrix<Scalar, Dim, Dim>;
33 PONCA_MULTIARCH
inline PointPositionNormal(
const VectorType&
pos = VectorType::Zero(),
34 const VectorType&
normal = VectorType::Zero())
40 PONCA_MULTIARCH [[nodiscard]]
inline const VectorType&
pos()
const {
return m_pos; }
42 PONCA_MULTIARCH [[nodiscard]]
inline const VectorType&
normal()
const {
return m_normal; }
44 PONCA_MULTIARCH [[nodiscard]]
inline VectorType&
pos() {
return m_pos; }
46 PONCA_MULTIARCH [[nodiscard]]
inline VectorType&
normal() {
return m_normal; }
49 VectorType m_pos, m_normal;
63 using Scalar = _Scalar;
64 using VectorType = Eigen::Matrix<Scalar, Dim, 1>;
65 using MatrixType = Eigen::Matrix<Scalar, Dim, Dim>;
67 PONCA_MULTIARCH
inline PointPosition(
const VectorType&
pos = VectorType::Zero()) : m_pos(
pos) {}
70 PONCA_MULTIARCH [[nodiscard]]
inline const VectorType&
pos()
const {
return m_pos; }
72 PONCA_MULTIARCH [[nodiscard]]
inline VectorType&
pos() {
return m_pos; }
90 class PointPositionNormalBinding
97 using Scalar = _Scalar;
98 using VectorType = Eigen::Matrix<Scalar, Dim, 1>;
99 using MatrixType = Eigen::Matrix<Scalar, Dim, Dim>;
101 PONCA_MULTIARCH
inline PointPositionNormalBinding(
const Scalar* _interlacedArray,
const int _pId)
102 : m_pos(Eigen::Map<const VectorType>(_interlacedArray + Dim * 2 * _pId)),
103 m_normal(Eigen::Map<const VectorType>(_interlacedArray + Dim * 2 * _pId + Dim))
108 PONCA_MULTIARCH [[nodiscard]]
inline const Eigen::Map<const VectorType>&
pos()
const {
return m_pos; }
110 PONCA_MULTIARCH [[nodiscard]]
inline const Eigen::Map<const VectorType>&
normal()
const {
return m_normal; }
113 const Eigen::Map<const VectorType> m_pos, m_normal;
129 class PointPositionNormalLazyBinding
136 using Scalar = _Scalar;
137 using VectorType = Eigen::Matrix<Scalar, Dim, 1>;
138 using MatrixType = Eigen::Matrix<Scalar, Dim, Dim>;
140 PONCA_MULTIARCH
inline PointPositionNormalLazyBinding(Scalar* _interlacedArray,
const int _pId)
141 : m_interlacedArray(_interlacedArray), m_id(_pId)
146 PONCA_MULTIARCH
inline void bind(Scalar* _interlacedArray) { m_interlacedArray = _interlacedArray; }
149 PONCA_MULTIARCH [[nodiscard]]
inline Eigen::Map<const VectorType>
pos()
const
151 return Eigen::Map<const VectorType>(m_interlacedArray + Dim * 2 * m_id);
154 PONCA_MULTIARCH [[nodiscard]]
inline Eigen::Map<const VectorType>
normal()
const
156 return Eigen::Map<const VectorType>(m_interlacedArray + Dim * 2 * m_id + Dim);
160 Scalar* m_interlacedArray;