我正在制作一个用 C 显示正弦图的程序,这是程序的一小部分
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static int cxClient, cyClient;
HDC hdc;
int i;
PAINTSTRUCT ps;
POINT apt[NUM];
switch (message)
{
case WM_SIZE:
cXClient = LOWORD(lParam);
cyClient = HIWORD(lParam);
return 0;
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
MoveToEx(hdc, 0, cyClient / 2, 0);
LineTo(hdc, cxClient, cyClient / 2);
for (i = 0; i < NUM; i++)
{
apt[i].x = i * cxClient / NUM;
apt[i].y = (int) (height / 2 * (1 - sin(TWOPI * i / NUM)));
}
Polyline(hdc, apt, NUM);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
其中 NUM 设置为 1000,cxClient 是低字客户区的宽度,cyClient 是高字客户区的高度,TWOPI 全局定义为 (2*3.1459)
我的程序问题是
1.我无法理解apt[i].x 和 apt[i].y行 (包括正弦形式)。
2.当我将 TWOPI 定义为#define TWOPI (2*(22/7))而不是( #define TWOPI (2*3.1459) ) 时,图形是方形的,但两者都是一样的,而是这样更准确为什么会这样。
这些东西在书中没有解释,所以我问你。