Skip to content

Commit

Permalink
Fixed slatnToImagePartials not operating in slant plane (#613)
Browse files Browse the repository at this point in the history
  • Loading branch information
jessemapel authored and Dan Smith committed Dec 15, 2022
1 parent 47c9ed8 commit 3107fc6
Showing 1 changed file with 11 additions and 9 deletions.
20 changes: 11 additions & 9 deletions six/modules/c++/scene/source/ProjectionModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -459,22 +459,24 @@ math::linear::MatrixMxN<2, 2> ProjectionModel::slantToImagePartials(
mTimeCOAPoly(imageGridPoint.row, imageGridPoint.col);
const Vector3 rARP = mARPPoly(timeCOA);
const Vector3 vARP = mARPVelPoly(timeCOA);
const Vector3 imageGridPointECEF = imageGridToECEF(imageGridPoint);
Vector3 slantRange = imageGridPointECEF - rARP;
Vector3 slantRange = mSCP - rARP;
slantRange.normalize();
Vector3 slantNormal = math::linear::cross(slantRange, vARP);
Vector3 slantNormal = math::linear::cross(vARP, slantRange) * mLookDir;
slantNormal.normalize();
Vector3 slantAzimuth = math::linear::cross(slantNormal, slantRange);
slantAzimuth.normalize();

// Second, map image grid point to the slant plane and compute finite differences
const Vector3 refPoint = imageToScene(imageGridPoint, mSCP, slantNormal);
const types::RowCol<double> rangePerturb =
sceneToImage(imageGridPointECEF + delta * slantRange);
sceneToImage(refPoint + delta * slantRange);
const types::RowCol<double> azimuthPerturb =
sceneToImage(imageGridPointECEF + delta * slantAzimuth);
sceneToImage(refPoint + delta * slantAzimuth);
math::linear::MatrixMxN<2, 2> partials(0.0);
partials[0][0] = (imageGridPoint.row - rangePerturb.row) / delta;
partials[0][1] = (imageGridPoint.row - azimuthPerturb.row) / delta;
partials[1][0] = (imageGridPoint.col - rangePerturb.col) / delta;
partials[1][1] = (imageGridPoint.col - azimuthPerturb.col) / delta;
partials[0][0] = (rangePerturb.row - imageGridPoint.row) / delta;
partials[0][1] = (azimuthPerturb.row - imageGridPoint.row) / delta;
partials[1][0] = (rangePerturb.col - imageGridPoint.col) / delta;
partials[1][1] = (azimuthPerturb.col - imageGridPoint.col) / delta;
return partials;
}

Expand Down

0 comments on commit 3107fc6

Please sign in to comment.