从多边形的4个点计算宽度和高度

Tre*_*ott 4 .net c# gdi point

我有四个点形成一个矩形,我允许用户移动任何点并将矩形旋转一个角度(围绕中心点旋转每个点).它保持近乎完美的矩形形状(就PointF精度而言).这是我从四个方面绘制的"矩形"的示例:

在此输入图像描述

但是,我需要能够获得点之间的宽度和高度.当矩形没有旋转时这很容易,但是一旦我旋转它,我的数学返回红色轮廓显示的宽度和高度:

在此输入图像描述

假设我知道点的顺序(例如从左上角顺时针方向),我如何检索它们代表的矩形的宽度和高度?

Ree*_*sey 6

如果通过"width"和"height",你只是指边长,并且你PointF 在列表或数组中有4个结构,你可以这样做:

double width = Math.Sqrt( Math.Pow(point[1].X - point[0].X, 2) + Math.Pow(point[1].Y - point[0].Y, 2));
double height = Math.Sqrt( Math.Pow(point[2].X - point[1].X, 2) + Math.Pow(point[2].Y - point[1].Y, 2));
Run Code Online (Sandbox Code Playgroud)


Ala*_*ain 5

只需将算法用于两点之间的距离即可.如果您有A,B,C,D点,您将获得两个距离.

sqrt((Bx-Ax)^2 + (By-Ay)^2) 将等于 sqrt((Dx-Cx)^2 + (Dy-Cy)^2)

sqrt((Cx-Bx)^2 + (Cy-By)^2) 将等于 sqrt((Ax-Dx)^2 + (Ay-Dy)^2)

选一个作为你的宽度,一个作为你的身高.