gpt4 book ai didi

C++计算 vector 中两个元素之间的差异

转载 作者:行者123 更新时间:2023-11-30 05:36:49 25 4
gpt4 key购买 nike

我有 2 个大小为 4 的 vector 来存储形状(正方形/矩形)的坐标。第一个 vector 用于 x,第二个 vector 用于 y。要找出形状的面积,我需要它们的长度差。如何找到同一 vector 中两个元素之间的差异?以正方形为例:

vector<int> x(4);
vector<int> y(4);

double Square::computeArea()
{
int length;
double area;

if (x[0] == x[1]) //x coordinates are the same
{
length = y[0] - y[1]; //difference in y coordinates to find the length, need help here
}
else if (x[1] == x[2]
{
length = y[1] - y[2];
}
else if ... //repeat

area = length * length;
if (area < 0) { area = -area; }
setArea(area)
return area;
}

最佳答案

如果你的矩形有平行于轴的边,并且点是顺时针(或逆时针)排列的,你可以简单地使用数组的第一个和第三个元素:

int yedge, xedge;

xedge = abs(x[0] - x[2]);

if ( xedge == 0 ) //beware, this check works well only for ints!
return area = 0.0;
else yedge = abs(y[0] - y[2]);

return area = xedge * yedge;

如果你有更一般的凸四边形使用这样的东西:

int dx20 = x[2] - x[0];
int dy10 = y[1] - y[0];
int dy20 = y[2] - y[0];
int dx10 = x[1] - x[0];
int dy30 = y[3] - y[0];
int dx30 = x[3] - x[0];

area = 0.5*abs(dx20*dy10-dy20*dx10);
area += 0.5*abs(dx20*dy30-dy20*dx30);

关于C++计算 vector 中两个元素之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33442988/

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