📄 uline.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include "Uline.h"
#include "stdio.h"
int XS ; /*起点横坐标*/
int YS ; /*起点纵坐标*/
int XE0; /*终点横坐标*/
int YE0; /*终点纵坐标*/
int STEP=1; /*步长*/
int XE; /*变换后终点横坐标*/
int YE; /*变换后终点纵坐标*/
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
int XOY; /*用来存放直线位置值*/
int FM, p_xe,p_ye,p_xs,p_ys; /*定义偏差及相对坐标*/
void initial(void) /*确定直线位置*/
{ FM=0;/*偏差置0*/
if(XE>0&&YE>0)
{if(XE>YE) XOY=1;
if(XE==YE)XOY=2;
if(XE<YE) XOY=3;}
if(XE<0&&YE>0)
{if(fabs(XE)<YE) XOY=4;
if(fabs(XE)==YE)XOY=5;
if(fabs(XE)>YE) XOY=6;}
if(XE<0&&YE<0)
{if(fabs(XE)>fabs(YE)) XOY=7;
if(fabs(XE)==fabs(YE))XOY=8;
if(fabs(XE)<fabs(YE)) XOY=9;}
if(XE>0&&YE<0)
{if(XE<fabs(YE)) XOY=10;
if(XE==fabs(YE))XOY=11;
if(XE>fabs(YE)) XOY=12;}
if(XE>0&&YE==0) XOY=13;
if(XE==0&&YE>0) XOY=14;
if(XE<0&&YE==0) XOY=15;
if(XE==0&&YE<0) XOY=16;
}
void xoy1() /*插补函数*/
{if(FM>=0) {XS=XS+STEP;FM=FM-YE;}
else {XS=XS+STEP;YS=YS+STEP;FM=FM+XE-YE;}
}
void xoy2()
{XS=XS+STEP;YS=YS+STEP;}
void xoy3()
{if(FM>=0) {XS=XS+STEP;YS=YS+STEP;FM=FM-YE+XE;}
else {YS=YS+STEP;FM=FM+XE;}
}
void xoy4()
{if(FM>=0) {XS=XS-STEP;YS=YS+STEP;FM=FM+fabs(XE)-YE;}
else {YS=YS+STEP;FM=FM+fabs(XE);}
}
void xoy5()
{XS=XS-STEP;YS=YS+STEP;}
void xoy6()
{if(FM>=0) {XS=XS-STEP;FM=FM-YE;}
else {XS=XS-STEP;YS=YS+STEP;FM=FM+fabs(XE)-YE;}
}
void xoy7()
{if(FM>=0) {XS=XS-STEP;FM=FM-fabs(YE);}
else {XS=XS-STEP;YS=YS-STEP;FM=FM+fabs(XE)-fabs(YE);}
}
void xoy8()
{XS=XS-STEP;YS=YS-STEP;}
void xoy9()
{if(FM>=0) {XS=XS-STEP;YS=YS-STEP;FM=FM+fabs(XE)-fabs(YE);}
else {YS=YS-STEP;FM=FM+fabs(XE);}
}
void xoy10()
{if(FM>=0) {XS=XS+STEP;YS=YS-STEP;FM=FM-fabs(YE)+XE;}
else { YS=YS-STEP;FM=FM+XE;}
}
void xoy11()
{XS=XS+STEP;YS=YS-STEP;}
void xoy12()
{if(FM>=0) {XS=XS+STEP;FM=FM-fabs(YE);}
else {XS=XS+STEP;YS=YS-STEP;FM=FM-fabs(YE)+XE;}
}
void xoy13()
{ XS=XS+STEP;}
void xoy14()
{ YS=YS+STEP; }
void xoy15()
{ XS=XS-STEP; }
void xoy16()
{ YS=YS-STEP; }
void __fastcall TForm1::FormPaint(TObject *Sender) /*主函数*/
{
Canvas->Pen->Color=clBlack; /*画相对坐标原点(160,160)*/
Canvas->MoveTo(10,160);Canvas->LineTo(310,160);
Canvas->MoveTo(160,10);Canvas->LineTo(160,310);
{ int k=0;
FILE *open; /*定义指向打开文本的指针*/
FILE *yfp; /*定义指向存储原直线文本的指针*/
FILE *fp; /*定义指明向存储插补后直线文本的指针*/
char p[]="pline";
open=fopen("d:/line.txt","r");
fp=fopen("d:\\line_pro.scr","w");
fprintf(fp,"%s\n",p);
yfp=fopen("d:\\yuan_line.scr","w");
fprintf(yfp,"%s\n",p);
for(;;)
{if(!feof(open))
{if(k==0)
{fscanf(open,"%d,%d",&XS,&YS);
fprintf(yfp,"%d,%d\n",XS,YS);
fprintf(fp,"%d,%d\n",XS,YS);
fscanf(open,"%d,%d",&XE0,&YE0);
fprintf(yfp,"%d,%d\n",XE0,YE0);
k++;
}
else if(k!=0)
{XS=XE0,YS=YE0;
fscanf(open,"%d,%d",&XE0,&YE0);
if(feof(open)) break;
fprintf(yfp,"%d,%d\n",XE0,YE0);
}
}
if(feof(open)) break;
p_xs=XS+160; /*进行坐标转换*/
p_ys=-YS+160;
p_xe=XE0+160;
p_ye=-YE0+160;
XE=XE0-XS,YE=YE0-YS;
Canvas->MoveTo(p_xs,p_ys); /*画出起点相对坐标*/
initial();/*初始化*/
for(;;)
{
switch(XOY)
{case 1:xoy1();break;
case 2:xoy2();break;
case 3:xoy3();break;
case 4:xoy4();break;
case 5:xoy5();break;
case 6:xoy6();break;
case 7:xoy7();break;
case 8:xoy8();break;
case 9:xoy9();break;
case 10:xoy10();break;
case 11:xoy11();break;
case 12:xoy12();break;
case 13:xoy13();break;
case 14:xoy14();break;
case 15:xoy15();break;
case 16:xoy16();break;
}
Canvas->LineTo(XS+160,-YS+160);
fprintf(fp,"%d,%d\n",XS,YS);
if((fabs(XS-XE0)<=STEP*1/2)&&(fabs(YS-YE0)<=STEP*1/2))
{ XE0=XS;YE0=YS; break;}/*判断步数*/
}
}
fprintf(fp,"\n\n");fclose(fp);
fprintf(yfp,"\n\n");fclose(yfp);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -