修复 RotateAndMove 平移项缺失旋转分量导致落点错位 #64

Merged
gjm merged 1 commits from home-lenovo-legion-r9000/fix-gidraw-rotatemove AGit into main 2026-10-25 18:41:52 +08:00
@@ -183,7 +183,11 @@ AECDLLIMPEXP AcGeMatrix3d GiDrawUtility::RotateAndMove(const AcGeVector3d &vtOri
AcGeMatrix3d mat(AcGeMatrix3d::kIdentity);
//mat = _vtDist.rotateTo(_vtOrig);
mat = _vtOrig.rotateTo(_vtDist);
mat.setTranslation(ptDist - ptOrig);
// 平移量须为 ptDist - R*ptOrig:先求旋转后的 ptOrig 落点,再算差值。
// 原来写成 ptDist - ptOrig,仅在 ptOrig 位于旋转轴上(含原点)时才正确。
AcGePoint3d ptTmp(ptOrig);
ptTmp.transformBy(mat);
mat.setTranslation(ptDist - ptTmp);
return mat;
}