用C语言图形库画一个心
--philhuan
这次我教大家用代码画一个心,这样你们就可以送给你们的女(男)朋友了。没找到对象的也可以用来表白啊。
1.首先,我去百度找了心形线的函数,如下:
2. 联系高中的数学知识,我们知道:f(x)>0和f(x)<0的点分别在图形线两边
这样我们可以通过
这两个公式筛选出在心里面或者外面的点,然后对他们进行不同的操作。
3. 这样就简单了,只要遍历所有的点,然后判断点是在线上(=)还是在里面或者外面(<或者>),然后对他们进行不同的操作。
如果想画一个红心就可以这样写:
for (i = 0; i<H; i++) //H为画板高 { for (j = 0; j<W; j++) //W为画板宽 { //此处得到的(i,j)为屏幕每一个点的坐标</span><span style="color: #008000;">//</span><span style="color: #008000;">对图形进行平移与放大操作</span> <span style="color: #0000ff;">double</span> t1 = j/<span style="color: #800080;">150.0</span>-<span style="color: #800080;">2</span>, t2 =-(i/<span style="color: #800080;">100.0</span>-<span style="color: #800080;">2.5</span><span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;">在这里判断每一个点是否满足在心图像里面的条件</span> <span style="color: #0000ff;">if</span> (pow(t1, <span style="color: #800080;">2</span>) + pow(t2 - pow(t1*t1, <span style="color: #800080;">1</span> / <span style="color: #800080;">3.0</span>), <span style="color: #800080;">2</span>) <= <span style="color: #800080;">1</span><span style="color: #000000;">) putpixel(j, i, RED);</span><span style="color: #008000;">//</span><span style="color: #008000;">如果这个点在xin里面,就画一个红点(putpixel函数为图形库easyx画点函数)</span>
}
}
这样运行后就是这个样子:
如果把代码改成这样:
for (i = 0; i<H; i++) { for (j = 0; j<W; j++) { double t1 = j/150.0-2, t2 =-(i/100.0-2.5); if (fabs(pow(t1, 2) + pow(t2 - pow(t1*t1, 1 / 3.0), 2)-1)<0.1) putpixel(j, i, RED); } }
结果就是这样:
好了,大概的思路就是这个样子,大家还可以通过这种办法画各种函数的图形
如果没有图形库,请自己去easyx.cn下载安装,里面有详细教程。
附完整代码:
1.
#include <stdio.h> #include<easyx.h> #include<math.h> #define W 640 #define H 480int main()
{
int i, j;
initgraph(W, H);
setbkcolor(WHITE);
cleardevice();
for (i = 0; i<H; i++)
{
for (j = 0; j<W; j++)
{
double t1 = j/150.0-2, t2 =-(i/100.0-2.5);
if (pow(t1, 2) + pow(t2 - pow(t1*t1, 1 / 3.0), 2) <= 1)
putpixel(j, i, RED);
}
}
getchar();
return 0;
}
2.
#include <stdio.h> #include<easyx.h> #include<math.h> #define W 640 #define H 480int main()
{
int i, j;
initgraph(W, H);
setbkcolor(WHITE);
cleardevice();
for (i = 0; i<H; i++)
{
for (j = 0; j<W; j++)
{
double t1 = j/150.0-2, t2 =-(i/100.0-2.5);
if (fabs(pow(t1, 2) + pow(t2 - pow(t1*t1, 1 / 3.0), 2)-1)<0.1)
putpixel(j, i, RED);
}
}
getchar();
return 0;
}
- 本文链接: http://hjwblog.com/archives/用c语言画一个心
- 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!