@@ -587,6 +587,9 @@ int warpImage(DestImageT &destImage, SrcImageT const &srcImage,
587587 int endCol = edgeColList[colBand];
588588 yDeltaSrcPosList[colBand] =
589589 (bottomSrcPosList[colBand] - srcPosView[endCol]) * interpInvHeight;
590+ if ((!std::isnan (yDeltaSrcPosList[colBand][0 ])) && (endRow < 20 ) && (endCol < 500 )) {
591+ std::cerr << " not nan " << endRow << " " << endCol << yDeltaSrcPosList[colBand] << std::endl;
592+ }
590593 }
591594
592595 for (int row = prevEndRow + 1 ; row <= endRow; ++row) {
@@ -604,10 +607,25 @@ int warpImage(DestImageT &destImage, SrcImageT const &srcImage,
604607 lsst::geom::Point2D leftSrcPos = srcPosView[prevEndCol];
605608 lsst::geom::Point2D rightSrcPos = srcPosView[endCol] + yDeltaSrcPosList[colBand];
606609 lsst::geom::Extent2D xDeltaSrcPos = (rightSrcPos - leftSrcPos) * invWidthList[colBand];
610+ if (!std::isnan (bottomSrcPosList[colBand][0 ])) {
611+ if ((row < 30 ) && (row > 9 ) && (colBand < 50 )) {
612+ std::cerr << " prev col: " << prevEndCol << " " << srcPosView[prevEndCol] << std::endl;
613+ std::cerr << row << " " << colBand << " " << bottomSrcPosList[colBand] << " " << srcPosView[endCol] << " " << yDeltaSrcPosList[colBand] << " " << xDeltaSrcPos << std::endl;
614+ }
615+ }
607616
608617 for (int col = prevEndCol + 1 ; col <= endCol; ++col, ++destXIter) {
609618 lsst::geom::Point2D leftSrcPos = srcPosView[col - 1 ];
610- lsst::geom::Point2D srcPos = leftSrcPos + xDeltaSrcPos;
619+ lsst::geom::Point2D srcPos;
620+ if (col == endCol) {
621+ if ((row < 30 ) && (row > 9 ) && (colBand < 50 )) {
622+ std::cerr << " resetting at endCol: " << row << " " << col << " " << leftSrcPos + xDeltaSrcPos << " " << rightSrcPos << std::endl;
623+ }
624+ srcPos = rightSrcPos;
625+ }
626+ else {
627+ srcPos = leftSrcPos + xDeltaSrcPos;
628+ }
611629 double relativeArea = computeRelativeArea (srcPos, leftSrcPos, srcPosView[col]);
612630
613631 srcPosView[col] = srcPos;
@@ -618,6 +636,17 @@ int warpImage(DestImageT &destImage, SrcImageT const &srcImage,
618636 ++numGoodPixels;
619637 }
620638 } // for col
639+ if (row == endRow) {
640+ // Set srcPosView to correct bottowSrcPosList to override nans:
641+ if ((row < 30 ) && (row >= 9 ) && (colBand < 50 )) {
642+ std::cerr << " before reset: " << endRow << " " << colBand << " " << srcPosView[endCol] << " " << bottomSrcPosList[colBand] << std::endl;
643+ }
644+ srcPosView[endCol] = bottomSrcPosList[colBand];
645+ if ((row < 30 ) && (row >= 9 ) && (colBand < 50 )){
646+ std::cerr << " after reset: " << srcPosView[endCol] << " " << bottomSrcPosList[colBand] << std::endl;
647+ }
648+
649+ }
621650 } // for col band
622651 } // for row
623652 } // while next row band
0 commit comments