From d0916058f4260f17619628b898649a9fd1d917b6 Mon Sep 17 00:00:00 2001 From: Philemon Brakel Date: Thu, 7 Apr 2022 17:14:54 +0100 Subject: [PATCH] Fix outer derivative by replacing cwiseproduct with explicit matvec. --- towr/src/height_map.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/towr/src/height_map.cc b/towr/src/height_map.cc index d5883e4e0..1e89dfcd4 100644 --- a/towr/src/height_map.cc +++ b/towr/src/height_map.cc @@ -86,8 +86,12 @@ HeightMap::GetDerivativeOfNormalizedBasisWrt (Direction basis, Dim2D dim, // outer derivative Vector3d v = GetBasis(basis, x,y, {}); - Vector3d dn_norm_wrt_n = GetDerivativeOfNormalizedVectorWrtNonNormalizedIndex(v, dim); - return dn_norm_wrt_n.cwiseProduct(dv_wrt_dim); + Vector3d result = Vector3d::Zero(); + for (auto inner_dim : {X,Y,Z}) { + auto dn_norm_wrt_n = GetDerivativeOfNormalizedVectorWrtNonNormalizedIndex(v, inner_dim); + result = result + dv_wrt_dim(inner_dim) * dn_norm_wrt_n; + } + return result; } HeightMap::Vector3d