• 大小: 1.23MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-05
  • 语言: C/C++
  • 标签:

资源简介

实现一个带参数控制五角星形状的绘制函数,并在不同位置绘制多个大小、颜色不同的五角星。(要求采用随机数生成大小和颜色,大小需要限定在一个范围内,每帧五角星也发生变化) 在VC6.0的环境下利用opengl绘制五角星,半径大小和颜色用了随机数,所以每个五角星的大小颜色实现了变化,也可以删除变成静态的,代码里有详细注释,可以自己修改

资源截图

代码片段和文件信息

#include 

#include 
#include 
#include 
#include 
#include 
#include 

//添加这3条语句
#pragma comment (lib “opengl32.lib“)  
#pragma comment (lib “glu32.lib“)  
#pragma comment (lib “glaux.lib“)  

#pragma comment( linker “/subsystem:\“windows\“ /entry:\“mainCRTStartup\““ ) //这句是不让控制台窗体出现,如果想要出现,去掉即可。

const GLfloat Pi = 3.1415926536f;  //定义Pi值

float X[5] Y[5];  //用数组声明5组坐标,外圈坐标
float X1[5] Y1[5];//内圈坐标
int R=0 yd=0;  //定义半径偏转角度

void init()
{
      glClearColor(0.00.00.01.0);//黑色背景
 // glClearColor(1.0 1.0 1.0 0.0);  //设置背景颜色
   
}

//绘制图形函数
float r=1g=0b=0x=0y=0;

//绘制图形函数
void CALLBACK draw()
{
     glClear(GL_COLOR_BUFFER_BIT);

    glColor3f(rgb); //红色
    glBegin(GL_LINE_LOOP);  //按照顺序开始画线,AI->IB->BG->...->FA
        glVertex2f(X[0] Y[0]);
glVertex2f(X1[0] Y1[0]);
glVertex2f(X[1] Y[1]);
glVertex2f(X1[1] Y1[1]);
        glVertex2f(X[2] Y[2]);
glVertex2f(X1[2] Y1[2]);
glVertex2f(X[3] Y[3]);
        glVertex2f(X1[3] Y1[3]);
        glVertex2f(X[4] Y[4]);
        glVertex2f(X1[4] Y1[4]);
     glEnd();

     glFinish();//强制之前的绘图函数执行
}

void CALLBACK change()
{
int i; 
srand(time(NULL)); //srand(int)来设种子
//i=rand()%200+1;/* i是[1,200]区间内的一个整数 */

i=rand()%200+20;
R = i ;   //半径为一个随机数,也可以删掉,修改

i=rand()%200+20;
yd=i;   //偏转角度

i=rand()%200;
r = i / 200.0f;//RGB颜色随机变化
   
i=rand()%200;
g = i / 200.0f;

i=rand()%200;
b = i / 200.0f;
x=i+150;
y=i+400;
 for (int q = 0; q <= 4; q++)
    {
        //在外圆上初始化5个坐标点
        X[q] = x+R*cos((q*2)*Pi / 5+yd);
        Y[q] = y+R*sin((q*2)*Pi / 5+yd);
    }
 for(int w = 0;w <= 4; w++)
 {
 //在外圆上初始化5个坐标点
 X1[w] = x+0.4*R*cos((w*2)*Pi / 5+72*Pi/360+yd);
     Y1[w] = y+0.4*R*sin((w*2)*Pi / 5+72*Pi/360+yd);

 }
draw();         
}

//主函数
void main()
{
    auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);
    auxInitPosition(100100700700);
    auxInitWindow(“CGOpenGL“);

    init();
auxIdleFunc(change);//一定要在auxMainLoop前面
    auxMainLoop(draw);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2302  2018-05-09 17:59  111\111.cpp

     文件       3365  2018-05-09 15:36  111\111.dsp

     文件        512  2018-05-09 15:37  111\111.dsw

     文件      41984  2018-05-09 17:59  111\111.ncb

     文件      48640  2018-05-09 17:59  111\111.opt

     文件       1832  2018-05-09 17:37  111\111.plg

     文件     241721  2018-05-09 17:37  111\Debug\111.exe

     文件     345680  2018-05-09 17:37  111\Debug\111.ilk

     文件      17566  2018-05-09 17:37  111\Debug\111.obj

     文件    3701596  2018-05-09 17:21  111\Debug\111.pch

     文件     525312  2018-05-09 17:37  111\Debug\111.pdb

     文件     148480  2018-05-09 17:37  111\Debug\vc60.idb

     文件      77824  2018-05-09 17:37  111\Debug\vc60.pdb

     目录          0  2018-05-09 17:37  111\Debug

     目录          0  2018-05-09 17:59  111

----------- ---------  ---------- -----  ----

              5156814                    15


评论

共有 条评论