zoukankan      html  css  js  c++  java
  • 用C语言画一个心

    用C语言图形库画一个心

    --环家伟

    这次我教大家用代码画一个心,这样你们就可以送给你们的女(男)朋友了。没找到对象的也可以用来表白啊。

    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)为屏幕每一个点的坐标
                            
                //对图形进行平移与放大操作
                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);//如果这个点在xin里面,就画一个红点(putpixel函数为图形库easyx画点函数)
            }
        }                                        

    这样运行后就是这个样子:

     如果把代码改成这样:

    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 480
    
    int 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 480
    
    int 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;
    }
  • 相关阅读:
    查找表包含的页和页所在的表
    一次死锁追踪经历
    SQL语句实现取消自增列属性
    如何修改SQL Server 2005服务器名称
    出身在二三线城市软件工作者的悲哀
    (转)Android 混淆器 ProGuard (一定程度防止反编译)
    《Java 并发编程实战》第一、二章阅读笔记
    在 Visual Studio 2010 中配置 OpenGL 开发环境
    《Java 学习笔记》 第七、八章阅读体验
    2012年上半年阅读书籍清单
  • 原文地址:https://www.cnblogs.com/hjw1/p/7832026.html
Copyright © 2011-2022 走看看