我有两点的图像,对齐方式如下:

|----------------|
|                |
|    .           |
|                |
|          .     |
|                |
|----------------|

我的两个点都有X,Y坐标,我需要将图像旋转X度,因此看起来像这样:
|----------------|
|                |
|                |
|    .     .     |
|                |
|                |
|----------------|

从根本上讲,它们彼此并排排列,这有什么数学意义? (C#中的代码示例会更好,但不是必需的)

最佳答案

这取决于要用作旋转“中心”的点。让我们将点称为上,左pointA,将点称为右,下pointB。如果要围绕点A旋转以使点B与其对齐,则以弧度为单位计算旋转角度将如下所示:

double angle = Math.Atan2(pointB.Y - pointA.Y, pointB.X - pointA.X);

我没有处理图像的方式,因此以下内容仅在使用System.Drawing.Graphics时适用:
myImage.TranslateTransform(-pointA.X, -pointA.Y);
myImage.RotateTransform((float) angle, MatrixOrder.Append);
myImage.TranslateTransform(pointA.X, pointA.Y, MatrixOrder.Append);

希望能帮助到你。

关于c# - 旋转图像数学(C#),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/472428/

10-09 14:13