⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 piston.c

📁 Many C samples. It is a good sample for students to learn C language.
💻 C
字号:
/* Minh hoa chuyen dong cua mot piston */
#include <conio.h>
#include <graphics.h>
#include <math.h>
#include <dos.h>

/* 1 / sqrt(2) */
#define FCT 0.7071067
/* he so doi tu do sang radian */
#define RADS 0.017453293

#define RADIUS1 50
#define SQRRADIUS1 2500
#define RADIUS2 150
#define SQRRADIUS2 22500

void piston()
{
  double angle = 45, xc, yc, x1, y1, y2;
  xc = getmaxx() / 2;
  yc = getmaxy() / 2 + 100;
  setcolor(WHITE);
  line(xc - 31, 110, xc-31, 265);
  line(xc - 32, 110, xc-32, 265);
  line(xc + 31, 110, xc+31, 265);
  line(xc + 32, 110, xc+32, 265);
  while (!kbhit())
  {
    x1 = xc + RADIUS1 * cos(angle * RADS);
    y1 = yc + RADIUS1 * sin(angle * RADS);
    y2 = y1 - sqrt(SQRRADIUS2 - SQRRADIUS1*cos((angle+90)*RADS)*cos((angle+90)*RADS));
    setcolor(YELLOW);
    rectangle(xc-30, y2 - 35, xc+30,y2+35);
    line(xc, yc, x1, y1);
    line(xc, y2, x1, y1);
    setfillstyle(SOLID_FILL, BLACK);
    fillellipse(xc, yc, 2, 2);
    fillellipse(x1, y1, 2, 2);
    fillellipse(xc, y2, 2, 2);
    delay(100);
    setcolor(BLACK);
    rectangle(xc-30, y2 - 35, xc+30,y2+35);
    line(xc, yc, x1, y1);
    line(xc, y2, x1, y1);
    fillellipse(xc, yc, 2, 2);
    fillellipse(x1, y1, 2, 2);
    fillellipse(xc, y2, 2, 2);
    angle += 5;
  }
}

void main()
{
  int gr_drive = DETECT, gr_mode;

  initgraph(&gr_drive, &gr_mode, "");
  piston();
  getch();
  closegraph();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -