c语言环绕,动画技术——卫星环绕地球

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

第二种:

#include 

#include 

#include 

#include 

#include 

#include 

#define TRUE 1

#define FALSE 0

#define IMAGE_SIZE 10

void draw_picture();

void move_picture();

void draw_image(int x, int y);

void putpixel_stars();

char title[]="WELLCOME TO THE";

char *move="COMPUTER WOELD!";

void *pt_addr;

int x,y,maxx,maxy,midx,midy;

int main()

{

int driver = VGA;

int mode=VGAHI;

int errorcode;

initgraph(&driver, &mode, "");

errorcode=graphresult();

if(errorcode!=0){

printf("Graphics error:%s\n",grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

cleardevice();

maxx=getmaxx();

maxy=getmaxy()-20;

midx=maxx/2;

midy=maxy/2;

x=0;

y=midy-25;

setbkcolor(GREEN);

draw_picture();

move_picture();

free(pt_addr);

settextstyle(DEFAULT_FONT,HORIZ_DIR,1);

settextjustify(LEFT_TEXT,TOP_TEXT);

restorecrtmode();

}

void draw_picture(void)

{

unsigned int i,size;

setlinestyle(SOLID_LINE,0,NORM_WIDTH);

setcolor(LIGHTBLUE);

for(i=0;i<=14;i++)

{

ellipse(midx,midy,0,360,108,108-8*i);

ellipse(midx,midy,0,360,108-8*i,108);

}

setcolor(BLUE);

setlinestyle(SOLID_LINE,0,THICK_WIDTH);

ellipse(midx,midy,130,50,170,30);

draw_image(x,y);

size=imagesize(x,y-IMAGE_SIZE,x+(4*IMAGE_SIZE),y+IMAGE_SIZE);

pt_addr=malloc(size);

getimage(x,y-IMAGE_SIZE,x+(4*IMAGE_SIZE),y+IMAGE_SIZE,pt_addr);

putpixel_stars();

setcolor(DARKGRAY);

setlinestyle(SOLID_LINE,0,THICK_WIDTH);

rectangle(0,0,maxx,maxy);

setfillstyle(SOLID_FILL,LIGHTGRAY);

bar(0,getmaxy()-18,getmaxx(),getmaxy());

outtextxy(150,getmaxy()-12,"Program for Demo in CG Lesson ,HUST");

setlinestyle(SOLID_LINE,0,NORM_WIDTH);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现卫星环绕地球动画效果,可以使用OpenGL图形库来绘制图形和动画。下面是一个简单的C语言程序示例,可以实现卫星地球动画效果: ```c #include <GL/glut.h> #define PI 3.1415926 GLfloat angle = 0.0f; // 卫星角度 GLfloat r = 10.0f; // 卫星距离地球表面的距离 void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); // 绘制地球 glColor3f(0.0f, 0.0f, 1.0f); glutWireSphere(5.0f, 20, 20); // 绘制卫星 glColor3f(1.0f, 0.0f, 0.0f); glTranslatef(0.0f, 0.0f, -r); glRotatef(angle, 0.0f, 1.0f, 0.0f); glTranslatef(0.0f, 0.0f, 5.0f); glutWireSphere(0.5f, 8, 8); glutSwapBuffers(); } void update(int value) { angle += 1.0f; if (angle > 360.0f) { angle -= 360.0f; } glutPostRedisplay(); glutTimerFunc(25, update, 0); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(640, 480); glutCreateWindow("Satellite Orbiting Earth"); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glEnable(GL_DEPTH_TEST); glutDisplayFunc(display); glutTimerFunc(25, update, 0); glutMainLoop(); return 0; } ``` 程序中使用了OpenGL的三维图形绘制和动画技术。首先通过glutWireSphere函数绘制了地球,然后通过glTranslatef和glRotatef函数设置卫星的位置和旋转角度,最后再用glutWireSphere函数绘制卫星。 update函数控制卫星的旋转,通过glutTimerFunc函数定时更新卫星的位置和角度,并调用glutPostRedisplay函数来重绘窗口。主函数中注册了display和timer函数,并调用glutMainLoop函数启动程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值