gpt4 book ai didi

c - 给定一个点和一个正方形面积值作为输入参数的函数返回四个正方形

转载 作者:行者123 更新时间:2023-11-30 16:04:42 25 4
gpt4 key购买 nike

在这段代码中我不明白为什么老师有时使用+value,-value;

/******************************************/
// function void returnSquares(POINT point, int value)
void returnSquares(POINT point, int value) {
SQUARE tabSquares[4]; // table of squares that we are creating
int i;

// getting points of 4 squares
// for first square input point is point C
tabSquares[0].pointA.dimX = point.dimX - value;
tabSquares[0].pointA.dimY = point.dimY + value;
tabSquares[0].pointB.dimX = point.dimX;
tabSquares[0].pointB.dimY = point.dimY + value;
tabSquares[0].pointC.dimX = point.dimX;
tabSquares[0].pointC.dimY = point.dimY;
tabSquares[0].pointD.dimX = point.dimX - value;
tabSquares[0].pointD.dimY = point.dimY;

// for 2nd square input point is point D
tabSquares[1].pointA.dimX = point.dimX;
tabSquares[1].pointA.dimY = point.dimY + value;
tabSquares[1].pointB.dimX = point.dimX + value;
tabSquares[1].pointB.dimY = point.dimY + value;
tabSquares[1].pointC.dimX = point.dimX + value;
tabSquares[1].pointC.dimY = point.dimY;
tabSquares[1].pointD.dimX = point.dimX;
tabSquares[1].pointD.dimY = point.dimY;

// for 3rd square input point is point A
tabSquares[2].pointA.dimX = point.dimX;
tabSquares[2].pointA.dimY = point.dimY;
tabSquares[2].pointB.dimX = point.dimX + value;
tabSquares[2].pointB.dimY = point.dimY;
tabSquares[2].pointC.dimX = point.dimX + value;
tabSquares[2].pointC.dimY = point.dimY - value;
tabSquares[2].pointD.dimX = point.dimX;
tabSquares[2].pointD.dimY = point.dimY - value;

// for 4th square input point is point B
tabSquares[3].pointA.dimX = point.dimX - value;
tabSquares[3].pointA.dimY = point.dimY;
tabSquares[3].pointB.dimX = point.dimX;
tabSquares[3].pointB.dimY = point.dimY;
tabSquares[3].pointC.dimX = point.dimX;
tabSquares[3].pointC.dimY = point.dimY - value;
tabSquares[3].pointD.dimX = point.dimX - value;
tabSquares[3].pointD.dimY = point.dimY - value;


for (i=0; i<4; i++) {
printf("Square number %d\n",i); // now we print parameters of each point in current Square
printf("point A x= %0.2f y= %0.2f\n",tabSquares[i].pointA.dimX,tabSquares[i].pointA.dimY);
printf("point B x= %0.2f y= %0.2f\n",tabSquares[i].pointB.dimX,tabSquares[i].pointB.dimY);
printf("point C x= %0.2f y= %0.2f\n",tabSquares[i].pointC.dimX,tabSquares[i].pointC.dimY);
printf("point D x= %0.2f y= %0.2f\n",tabSquares[i].pointD.dimX,tabSquares[i].pointD.dimY);
}
}

最佳答案

考虑图像:

          C
D *-------*
| |
|Square |
| |
*-------* B
A

点 A、B、C 和 D 按照您的 SQUARE 数据类型中假定的顺序进行标记。

给定点 X 和正方形的长度,该函数会生成四个该长度的正方形。这些方 block 的顺序(由它们在 tabSquares 数组中的索引指示)如下:

*-------*------*
| | |
| Sq-3 | Sq-2 |
| | |
*-------X------*
| | |
| Sq-0 | Sq-1 |
| | |
*-------*------*

因此,tabSquares[0] 是标记为 Sq-0 的正方形,其 pointA 是左下角。该点的 x 坐标比给定点的 x 坐标小 value 个单位,y 坐标比给定点的 y 坐标大 value 个单位。 (x从左到右增加,y从上到下增加 - 原点是绘图区域的左上角)

因此:

tabSquares[0].pointA.dimX = point.dimX - value;
tabSquares[0].pointA.dimY = point.dimY + value;

关于c - 给定一个点和一个正方形面积值作为输入参数的函数返回四个正方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2711588/

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