C++ C++;如何计算正方形、矩形和十字的面积。用户将输入坐标
正如我在标题中提到的,我如何计算正方形、长方形和十字形的面积? 用户将输入所有坐标。对于正方形和矩形,面积很容易,但是交叉,我该怎么做?如果用户十字交叉输入坐标,如何获得这三个坐标的长度和宽度,从而使我的面积计算准确?? 下面是一个十字架的插图,这很棘手C++ C++;如何计算正方形、矩形和十字的面积。用户将输入坐标,c++,math,C++,Math,正如我在标题中提到的,我如何计算正方形、长方形和十字形的面积? 用户将输入所有坐标。对于正方形和矩形,面积很容易,但是交叉,我该怎么做?如果用户十字交叉输入坐标,如何获得这三个坐标的长度和宽度,从而使我的面积计算准确?? 下面是一个十字架的插图,这很棘手 **** * * **** **** * * **** **** * * **** //this is for square and rectangle,but to take no
****
* *
**** ****
* *
**** ****
* *
****
//this is for square and rectangle,but to take note,user will input from from bottom left to right, then top right to left, so the caculation below will than work
l = (((x1-x2)^2 + (y1-y2)^2))^(1/2);
w = (((x1-x4)^2 + (y1-y4)^2))^(1/2);
A=l*w;
我如何得到形状上的坐标点和形状上的坐标点
示例:正方形的坐标为(1,1)、(3,1)、(1,3)、(3,3)
所以正方形中的坐标是(2,2)
正方形上的坐标是(1,2),(2,1),(3,2),(2,3)交叉点是两个矩形的叠加,但只需对重叠区域进行一次计数 总面积为: 以下领域:
****
* *
* *
* *
* *
* *
****
****
* *
****
加上
**********
* *
**********
减去以下面积:
****
* *
* *
* *
* *
* *
****
****
* *
****
获取结果的绝对值,以避免出现坐标顺序错误的问题-区域始终为正
a
|--|
c ****
|--* *
-**** ****
b|* *
-**** ****
* *
****
A = (a+b) * (2c+a) - a*b
所以,你只需要识别4个坐标。垂直条的左上角和右上角,以及水平条的左上角和左下角坐标
左上角垂直:y_tlv=y_max,x_tlv={x_min,其中y=y_max}
右上角垂直:
y_trv=y_max,x_trv={x_max,其中y=y_max}
左上水平:
y_tlh={y_max其中x=x_min},x_tlh=x_min
左下水平:
y_blh={y_min其中x=x_min},x_blh=x_min
a = abs(x_trv - x_tlv)
b = abs(y_tlh - y_blh)
c = abs(x_tlv - x_tlh)
我将留给您找出识别所需坐标点的算法。我假设用户将被要求输入至少以下4个坐标:
C1 * * *
* *
* *
C2 * * * * * * *
* *
* *
* * * * * * * C3
* *
* *
* * * C4
现在,您可以从中计算3个矩形的坐标:
* * * *
* 1 *
* *
* * * * **** * * * *
* 2 *
* *
* * * * **** * * * *
* 3 *
* *
* * * *
最后是十字架的面积。给出一个简单的十字形状,如下所示:
A---B
| |
C--D E--------F
| X Y |
G--H I--------J
| |
K---L
如上所述,你可以找到三个四边形的面积,然后计算出整个图形的面积。。。ABLK+CFJG-DEHI。这甚至适用于没有直角的斜交
如何计算十字的质心取决于实际需要的是什么,X或Y。要得到Y,必须先找到十字的边界四边形,然后再找到该四边形的质心。记住,如果你允许像我上面画的那样手臂长度不相等,那么点Y不需要包含在十字架本身中
要找到质心X,需要求出AB和KL的中点,以及CG和FJ的中点。然后,您可以找到这两条线的交点AB-KL和CG-FJ,以找到交叉点X,该交叉点将位于十字架内部,只要十字架具有规则形状
如果你允许一个任意的十字架形状(例如,十字架上可能根本没有直角),我不认为你能保证点X也会在这个形状内,但我太懒了,无法用这种或那种方式证明这一点
在形状的周长上找到任意点很容易;您只需拾取由边(例如,EF或KH)链接的任意一对角点,并在两个交叉点之间的向量上拾取一个点,这两个交叉点由5个矩形组成,因此计算应该很容易。交叉点的面积可以按如下方式计算:面积(水平条)+面积(垂直条)-面积(水平条和垂直条之间的交点)。因此,您只需要4个坐标。交点的面积是(垂直条的宽度*水平条的高度)。所谓“正方形坐标”和“正方形坐标”是指“正方形的中心”和“正方形边上的一点”?@Rook是,“正方形坐标”是正方形的中心,“正方形上的坐标”是组成正方形的直线上的点,不包括用户输入坐标(仅从4个坐标计算出的十字形状),或者用户输入每个角点的坐标(其中有8个),或者其他什么?