open watcom学习记录之——不用库函数实现双向椭圆
#include <stdio.h>#include <string.h>#include<math.h>#define x_dian 640#define banjin0 100#define diansize 2#define yanse 0x4fff#define yanse2 0xf81f#define n 0.6#define dingdian x_dian*80+banjin+20#define yuanxin dingdian+x_dian*banjinint main(void){int b,d,d2,a,banjin=banjin0,c=banjin,i=0;short *p=0xc0000000,*pin=0x200000;_asm{ pushad mov ax,0x4f02;/*4F02H VESA*/ mov bx,0x4111;/*111----640*480-64K(5:6:5),110------640*480-32K(1:5:5:5)*/ int 0x10 popad } for(i=0;i<x_dian*480*diansize;i++) { pin[i]=0; } pin[dingdian]=yanse; pin[yuanxin]=yanse; memcpy(p,pin,x_dian*480*diansize);for (a=0,i=0;i<banjin;i++){b=ceil(sqrt(c*c-a*a));d=640*ceil(b-b/n);pin[yuanxin-d+a++]=yanse2;} for (a=0,i=0;i<banjin;i++){b=ceil(sqrt(c*c-a*a));d2=640*ceil(a++/n);pin[yuanxin-d2+b]=yanse;}for (a=0,i=0;i<banjin;i++){b=ceil(sqrt(c*c-a*a));d=640*ceil(b-b/n);pin[yuanxin+d+a++]=yanse2;} for (a=0,i=0;i<banjin;i++){b=ceil(sqrt(c*c-a*a));d2=640*ceil(a++/n);pin[yuanxin+d2+b]=yanse;}for (a=0,i=0;i<banjin;i++){b=ceil(sqrt(c*c-a*a));d=640*ceil(b-b/n);pin[yuanxin+d-a++]=yanse2;} for (a=0,i=0;i<banjin;i++){b=ceil(sqrt(c*c-a*a));d2=640*ceil(a++/n);pin[yuanxin+d2-b]=yanse;}for (a=0,i=0;i<banjin;i++){b=ceil(sqrt(c*c-a*a));d=640*ceil(b-b/n);pin[yuanxin-d-a++]=yanse2;if(kbhit()!=0)break;memcpy(p,pin,x_dian*480*diansize);} for (a=0,i=0;i<banjin;i++){b=ceil(sqrt(c*c-a*a));d2=640*ceil(a++/n);pin[yuanxin-d2-b]=yanse;if(kbhit()!=0)break;}abc:memcpy(p,pin,x_dian*480*diansize); getch(); _asm { mov ax,3 int 0x10 } _asm{ mov ax,0x4c00 int 0x21 }}#define X_POINT#define RADIUS#define PT_SIZE#define COLOR1#define COLOR2#define N#define VERTEX#define CENTER