gpt4 book ai didi

c++ - 如何在不知道宽度或高度的情况下最好地对矩形的角进行排序?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:53:39 24 4
gpt4 key购买 nike

我有一个检测到的矩形的四个坐标。我想找出其中哪些是左上角、右上角、左下角和右下角点。我自己写的方法(不必要地)很长并且没有真正起作用(可能是因为我在某处犯了错误)。无论哪种方式,我确信有一种更简单的方法,但我找不到使用谷歌的方法。因此,我们将不胜感激。

我的方法是找到最大 y(最上)、最小 y(最下)、最大 x(最右)、最小 x(最左)的角。然后如果 most-left.y > the most-right.y 则左上点是 most-left,右上点是 most-top 等。这种方法是否正确?还有更简单的方法吗?

我的代码,抱歉,它凌乱而困惑...... squareX[0] 是第一个 x 坐标 squareY[0] 是第一个 y 坐标等。

编辑:事实证明我的方法很好,它只是 max() 没有按照我的想法执行(从所有输入的数字中返回最大数字)。

            maxx = max(squareX[0], squareX[1], squareX[2], squareX[3]);
maxy = max(squareY[0], squareY[1], squareY[2], squareY[3]);
minx = min(squareX[0], squareX[1], squareX[2], squareX[3]);
miny = min(squareY[0], squareY[1], squareY[2], squareY[3]);

if (squareX[0] == maxx)
{
mx = 0;
}
if (squareX[1] == maxx)
{
mx = 1;
}
if (squareX[2] == maxx)
{
mx = 2;
}
if (squareX[3] == maxx)
{
mx =3;
}

if (squareX[0] == minx)
{
mix = 0;
}
if (squareX[1] == minx)
{
mix = 1;
}
if (squareX[2] == minx)
{
mix = 2;
}
if (squareX[3] == minx)
{
mix = 3;
}

if (squareY[0] == maxy)
{
my = 0;
}
if (squareY[1] == maxy)
{
my = 1;
}
if (squareY[2] == maxy)
{
my = 2;
}
if (squareY[3] == maxy)
{
my = 3;
}

if (squareY[0] == miny)
{
miy = 0;
}
if (squareY[1] == miny)
{
miy = 1;
}
if (squareY[2] == miny)
{
miy = 2;
}
if (squareY[3] == miny)
{
miy = 3;
}

if (squareY[mix] > squareY[mx])
{
Pt1.x = squareX[mix];
Pt1.y = squareY[mix];
Pt2.x = squareX[my];
Pt2.y = squareY[my];
Pt3.x = squareX[mx];
Pt3.y = squareY[mx];
Pt4.x = squareX[miy];
Pt4.y = squareY[miy];
}
else
{
Pt1.x = squareX[my];
Pt1.y = squareY[my];
Pt2.x = squareX[mx];
Pt2.y = squareY[mx];
Pt3.x = squareX[miy];
Pt3.y = squareY[miy];
Pt4.x = squareX[mix];
Pt4.y = squareY[mix];
}

谢谢

最佳答案

根据点的左边距离对点进行排序。前两个点是矩形的左侧。按高度对这两个点进行排序。最高的是左上角,另一个是左下角。对右边的两个做同样的事情。

关于c++ - 如何在不知道宽度或高度的情况下最好地对矩形的角进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22385776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com