地球 c语言实现

 #include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <process.h>

#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, "C://soft//TC");
   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);
  setcolor(BLUE);
  settextstyle(TRIPLEX_FONT,HORIZ_DIR,6);
  settextjustify(CENTER_TEXT,CENTER_TEXT);
  outtextxy(midx-70,70,title);
}

void move_picture(viod)
{
  char printmove[2];
  int movex;
  do{
    x=0;
    movex=midx-200;
    setcolor(6);
    while(x<=maxx)
    {
      if(kbhit())break;
      putimage(x,y-IMAGE_SIZE,pt_addr,XOR_PUT);
      x=x+5;
      if(*move!='/0'&& x>movex)
      {
        *(printmove)=*(move++);
        *(printmove+1)='/0';
        outtextxy(movex,y+IMAGE_SIZE+100,printmove);
    movex+=30;
      }
      putimage(x,y-IMAGE_SIZE,pt_addr,XOR_PUT);
      delay(150000);
    }
     putimage(0,y-IMAGE_SIZE,pt_addr,XOR_PUT);
  }while(!kbhit());
}

void draw_image(int x,int y)
{
  setcolor(GREEN);
  setfillstyle(1,4);
  moveto(x+10,y);
  linerel(-3*10,2*10);
  moveto(x+10,y);
  linerel(-3*10,-2*10);
  moveto(x+25,y);
  linerel(-5*10,0);
  fillellipse(x+13,y,8,8);
}

void putpixel_stars(void)
{
  int i,seed=1958;
  int dotx,doty,h,w,color,maxcolor;
  maxcolor=getmaxcolor();
  w=getmaxx();
  h=getmaxy()-20;
  srand(seed);
  for(i=0;i<5000;++i)
  {
    dotx=1+random(w-1);
    doty=1+random(h-1);
    color=random(maxcolor);
    putpixel(dotx,doty,color);
  }
  srand(seed);
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现惯性导航的C语言程序需要使用传感器(如加速度计、陀螺仪、磁力计等)采集飞行器的运动状态,并根据导航算法计算出飞行器的位置、速度和姿态等信息。 以下是一个简单的惯性导航C语言程序的示例代码: ```c #include <stdio.h> #include <math.h> #define PI 3.14159265358979323846 #define RAD_TO_DEG (180/PI) #define G 9.81 int main() { // 初始化变量 double dt = 0.01; // 时间间隔 double ax = 0, ay = 0, az = 0; // 加速度计读数 double gx = 0, gy = 0, gz = 0; // 陀螺仪读数 double mx = 0, my = 0, mz = 0; // 磁力计读数 double pitch = 0, roll = 0, yaw = 0; // 姿态角 double vx = 0, vy = 0, vz = 0; // 速度 double x = 0, y = 0, z = 0; // 位置 // 循环采集传感器数据并更新导航信息 while (1) { // 读取传感器数据 // TODO: 实现传感器数据的读取 // 计算欧拉角 roll = atan2(ay, sqrt(ax*ax + az*az)) * RAD_TO_DEG; pitch = atan2(-ax, sqrt(ay*ay + az*az)) * RAD_TO_DEG; yaw = atan2(my, mx) * RAD_TO_DEG; // 计算加速度在地球坐标系下的分量 double ax_n = ax * cos(pitch/RAD_TO_DEG) * cos(yaw/RAD_TO_DEG); double ay_n = ay * cos(pitch/RAD_TO_DEG) * sin(yaw/RAD_TO_DEG); double az_n = -G + ax * sin(pitch/RAD_TO_DEG); // 计算速度 vx += ax_n * dt; vy += ay_n * dt; vz += az_n * dt; // 计算位置 x += vx * dt; y += vy * dt; z += vz * dt; // 输出导航信息 printf("Pitch: %.2f, Roll: %.2f, Yaw: %.2f\n", pitch, roll, yaw); printf("Vx: %.2f, Vy: %.2f, Vz: %.2f\n", vx, vy, vz); printf("X: %.2f, Y: %.2f, Z: %.2f\n", x, y, z); // TODO: 实现延时函数,控制循环时间间隔 } return 0; } ``` 需要注意的是,该示例代码仅为演示用途,实际应用中需要根据具体的传感器和导航算法进行相应的修改和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值