46 const Eigen::Matrix<double, 6, 6> &_Ma,
47 const Eigen::Matrix<double, 6, 1> &_state)
49 Eigen::Matrix<double, 6, 6> Cmat =
50 Eigen::Matrix<double, 6, 6>::Zero();
52 Cmat(0, 4) = - _Ma(2, 2) * _state(2);
53 Cmat(0, 5) = _Ma(1, 1) * _state(1);
54 Cmat(1, 3) = _Ma(2, 2) * _state(2);
55 Cmat(1, 5) = - _Ma(0, 0) * _state(0);
56 Cmat(2, 3) = - _Ma(1, 1) * _state(1);
57 Cmat(2, 4) = _Ma(0, 0) * _state(0);
58 Cmat(3, 1) = - _Ma(2, 2) * _state(2);
59 Cmat(3, 2) = _Ma(1, 1) * _state(1);
60 Cmat(3, 4) = - _Ma(5, 5) * _state(5);
61 Cmat(3, 5) = _Ma(4, 4) * _state(4);
62 Cmat(4, 0) = _Ma(2, 2) * _state(2);
63 Cmat(4, 2) = - _Ma(0, 0) * _state(0);
64 Cmat(4, 3) = _Ma(5, 5) * _state(5);
65 Cmat(4, 5) = - _Ma(3, 3) * _state(3);
66 Cmat(5, 0) = - _Ma(1, 1) * _state(1);
67 Cmat(5, 1) = _Ma(0, 0) * _state(0);
68 Cmat(5, 3) = - _Ma(4, 4) * _state(4);
69 Cmat(5, 4) = _Ma(3, 3) * _state(3);
90 const double (&_linearTerms)[36],
91 const double (&_quadAbsDerivs)[216],
92 const double (&_quadDerivs)[216],
93 const Eigen::Matrix<double, 6, 1> &_state)
95 Eigen::Matrix<double, 6, 6> Dmat =
96 Eigen::Matrix<double, 6, 6>::Zero();
98 for (
int i = 0; i < 6; i++)
100 for (
int j = 0; j < 6; j++)
102 auto coeff = - _linearTerms[i * 6 + j];
103 for (
int k = 0; k < 6; k++)
105 auto index = i * 36 + j * 6 + k;
106 coeff -= _quadAbsDerivs[index] * std::abs(_state(k));
107 coeff -= _quadDerivs[index] * _state(k);
151 const Eigen::Matrix<double, 6, 6> &_Ma,
152 const Eigen::Matrix<double, 6, 1> &_state)
154 Eigen::Vector3d v1 = _state.head<3>();
155 Eigen::Vector3d v2 = _state.tail<3>();
157 Eigen::Matrix3d M11 = _Ma.block<3, 3>(0, 0);
158 Eigen::Matrix3d M12 = _Ma.block<3, 3>(0, 3);
159 Eigen::Matrix3d M21 = _Ma.block<3, 3>(3, 0);
160 Eigen::Matrix3d M22 = _Ma.block<3, 3>(3, 3);
162 Eigen::Vector3d a1 = M11 * v1 + M12 * v2;
163 Eigen::Vector3d a2 = M21 * v1 + M22 * v2;
165 Eigen::Matrix<double, 6, 6> C =
166 Eigen::Matrix<double, 6, 6>::Zero();
167 C.block<3, 3>(0, 3) = -
skew3(a1);
168 C.block<3, 3>(3, 0) = -
skew3(a1);
169 C.block<3, 3>(3, 3) = -
skew3(a2);