mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-07-21 21:50:35 +08:00
Construct Vector from Slice<1,M> alias row()
This commit is contained in:
@@ -40,6 +40,15 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<size_t P, size_t Q, size_t DUMMY = 1>
|
||||||
|
Vector(const Slice<Type, 1, M, P, Q>& slice_in)
|
||||||
|
{
|
||||||
|
Vector &self(*this);
|
||||||
|
for (size_t i = 0; i<M; i++) {
|
||||||
|
self(i) = slice_in(0, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
inline const Type &operator()(size_t i) const
|
inline const Type &operator()(size_t i) const
|
||||||
{
|
{
|
||||||
assert(i < M);
|
assert(i < M);
|
||||||
|
|||||||
@@ -48,6 +48,11 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<size_t P, size_t Q>
|
||||||
|
Vector2(const Slice<Type, 1, 2, P, Q>& slice_in) : Vector<Type, 2>(slice_in)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
explicit Vector2(const Vector3 & other)
|
explicit Vector2(const Vector3 & other)
|
||||||
{
|
{
|
||||||
Vector2 &v(*this);
|
Vector2 &v(*this);
|
||||||
|
|||||||
@@ -56,6 +56,11 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<size_t P, size_t Q>
|
||||||
|
Vector3(const Slice<Type, 1, 3, P, Q>& slice_in) : Vector<Type, 3>(slice_in)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
Vector3 cross(const Matrix31 & b) const {
|
Vector3 cross(const Matrix31 & b) const {
|
||||||
const Vector3 &a(*this);
|
const Vector3 &a(*this);
|
||||||
return {a(1)*b(2,0) - a(2)*b(1,0), -a(0)*b(2,0) + a(2)*b(0,0), a(0)*b(1,0) - a(1)*b(0,0)};
|
return {a(1)*b(2,0) - a(2)*b(1,0), -a(0)*b(2,0) + a(2)*b(0,0), a(0)*b(1,0) - a(1)*b(0,0)};
|
||||||
|
|||||||
@@ -153,6 +153,12 @@ int main()
|
|||||||
Vector2f v8 = N.slice<3,2>(0,1).diag();
|
Vector2f v8 = N.slice<3,2>(0,1).diag();
|
||||||
Vector2f v8_check = {2, 6};
|
Vector2f v8_check = {2, 6};
|
||||||
TEST(isEqual(v8,v8_check));
|
TEST(isEqual(v8,v8_check));
|
||||||
|
Vector2f v9(N.slice<1,2>(1,1));
|
||||||
|
Vector2f v9_check = {5, 6};
|
||||||
|
TEST(isEqual(v9,v9_check));
|
||||||
|
Vector3f v10(N.slice<1,3>(1,0));
|
||||||
|
Vector3f v10_check = {4, 5, 6};
|
||||||
|
TEST(isEqual(v10,v10_check));
|
||||||
|
|
||||||
// Different assignment operators
|
// Different assignment operators
|
||||||
SquareMatrix3f O(data);
|
SquareMatrix3f O(data);
|
||||||
|
|||||||
Reference in New Issue
Block a user