VC绘图/游戏简易教程--5:数学知识在绘图中的运用
2010-4-21 ~ 2022-5-29
(4)
教程总目录:https://codebus.cn/bestans/concise-lesson-contents(里面包括VC下的graphics.h的配置方法)
[学习目标]
理解数学的重要性
- 最简单的,来个全屏的渐变色吧,是上一课的扩展。就是需要将 0~255 的颜色和 0~479 的 y 轴对应起来
c 表示颜色,范围 0~255
y 表示y轴,范围 0~479
于是:
c / 255 = y / 479
c = y / 479 * 255 = y * 255 / 479 (先算乘法再算除法可以提高精度)
看代码:
#include <graphics.h>
#include <conio.h>
int main()
{
initgraph(640, 480);
int c;
for(int y=0; y<480; y++)
{
c = y * 255 / 479;
setlinecolor(RGB(0,0,c));
line(0, y, 639, y);
}
_getch();
closegraph();
return 0;
}
试试效果吧。
- 画一个圆形的渐变色
首先,我们要用到圆形的基本公式:
x * x + y * y = r * r
让弧度从 0~2 * 3.14,然后需要根据弧度和半径算出 (x,y),
用 pi 表示圆周率
用 r 表示半径
用 a 表示弧度(小数)
用 c 表示颜色
于是:
x = r * cos(a)
y = r * sin(a)
c = a * 255 / (2 * pi)
看看代码:
#include <graphics.h>
#include <conio.h>
#include <math.h>
#define PI 3.14159265359
int main()
{
initgraph(640, 480);
int c;
double a;
int x, y, r = 200;
for(a = 0; a < PI * 2; a += 0.0001)
{
x=(int)(r * cos(a) + 320 + 0.5);
y=(int)(r * sin(a) + 240 + 0.5);
c=(int)(a * 255 / (2 * PI) + 0.5);
setlinecolor(RGB(c, 0, 0));
line(320, 240, x, y);
}
_getch();
closegraph();
return 0;
}
[作业]
这次没什么作业,只是理解一下数学的重要性而已。如果读者还在念书,请重视数学。
int iN=(int)(douN+0.5);//对douN 四舍五入取整