学前知识参考,这篇博文不错https://blog.youkuaiyun.com/liubing8609/article/details/46350491
/// <summary>
/// 将给定的点以识别中心按照da旋转后,确定此点新的坐标(仿射变换)
/// </summary>
/// <param Name="dx">被转换点x</param>
/// <param Name="dy">被转换点y</param>
/// <param Name="da">目标角度</param>
/// <param Name="nx">输出x</param>
/// <param Name="ny">输出y</param>
public static void AffineTransXY(double dx, double dy, double da, out double nx, out double ny, Vector2D center)
{
HTuple homMat2DIdentity;//声明坐标
HOperatorSet.HomMat2dIdentity(out homMat2DIdentity); //创建坐标
HTuple homMat2DRotate;
HTuple rad;
HOperatorSet.TupleRad(da, out rad);
HOperatorSet.HomMat2dRotate(homMat2DIdentity, rad, center.X, center.Y, out homMat2DRotate);
HTuple qx, qy;
HOperatorSet.AffineTransPoint2d(homMat2DRotate, dx, dy, out qx, out qy);
nx = qx.D;
ny = qy.D;
}
内部工作方法
1.将坐标原点平移到旋转中心点
2.旋转固定角度
3.将坐标系统还原
变换公式