逐点比较法插补 c语言程序例子,逐点比较法直线插补c语言程序.doc

这篇博客详细介绍了如何使用C语言实现逐点比较法进行直线和圆的插补程序。文章中展示了直线插补函数`draw_line_cabu`的关键代码,该函数通过计算增量来逐步绘制直线,并提供了动态显示插补过程的示例。此外,还涵盖了图形系统初始化、坐标设置等辅助函数。
摘要由CSDN通过智能技术生成

一、逐点比较法插补程序

#include "conio.h"

#include "graphics.h"

#include "process.h"

#define Ni_circle 0

#define Shun_circle 1

void init_graph();

void draw_Base_circle();

void draw_cabu_circle();

void close_graph();

void acrroods();

static float x0,y0;

void line_cabu(), draw_line(),draw_line_cabu();

void line_cabu() /*此函数控制直线插步两次*/

{

int i;

init_graph();

sleep(1);

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

{

line(0,120,300,120); outtextxy(310,120,"Z");

line(100,10,100,300); outtextxy(110,300,"X");

outtextxy(90,130,"O");

draw_line();

if(i==0)

draw_line_cabu(6);

else draw_line_cabu(2);

gotoxy(50,5);

getch();

cleardevice();

setcolor(WHITE);

}

}

void draw_line()/*画直线*/

{

line(100,120,600,450);

textcolor(YELLOW);

directvideo=0;

gotoxy(45,5); cprintf("Line from:X0 Y0 Z0 ");

gotoxy(45,6); cprintf("Line to :X500 Y0 Z330");

gotoxy(45,7); cprintf("Units :Pixel");

gotoxy(45,8); cprintf("Line now:");

}

void draw_line_cabu(int step)/*关键的直线插补函数*/

{

int Xe=600,Ye=450;

float Fm,Xm=100,Ym=120;

setcolor(RED);

moveto(Xm,Ym);

while(Xm<=Xe&&Ym<=Ye)

{

Fm=(Ym-120)*(Xe-100)-(Xm-100)*(Ye-120);

if(Fm>=0)

Xm=Xm+step;

else

Ym=Ym+step;

lineto(Xm,Ym);

gotoxy(55,8); printf("X%3.0f Y0 Z%3.0f",Xm-100,Ym-120);

delay(1100);

}

}

/* 圆插补部分的函数区*/

void init_graph() /*图形系统初始化*/

{

int gdrive=DETECT,gmode;

initgraph(&gdrive,&gmode,"");

cleardevice();

}

void acrroods() /*屏幕中心坐标*/

{

x0=getmaxx()/2;

y0=getmaxy()/2;

}

void draw_Bas

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值