这个参考下,还有点问题。画直线有个算法,我这个可能写错了.亲,觉得好就给我好评吧!
#include
#include
char temp[128][128];
void DrawDot(int x,int y) //画点
{
temp[x][y]='*';
}
void DrawLine(int x1,int y1,int x2,int y2)//画线
{
int x,y,ix,iy,inc,plotx=x1,ploty=y1,i;
int dx,dy;
char flag;
DrawDot(x1,y1);
x=0;y=0;
dx=x2-x1;
ix=abs(dx);
dy=y2-y1;
iy=abs(dy);
inc=ix>iy?ix:iy;
for(i=0;i<=inc;i++)
{
x+=ix;
y+=iy;
flag=0;
if(x>inc)
{
flag=1;
x-=inc;
if(dx> 0) plotx++;
if( dx<0) plotx--;
}
if(y>inc)
{
flag=1;
y-=inc;
if( dy>0) ploty++;
if( dy<0) ploty--;
}
if(flag) DrawDot(plotx,ploty);
}
}
void showDalt()
{
int x,y;
for(x=0;x<128;x++)
{
for(y=0;y<128;y++)
putchar(temp[x][y]);
printf("\n");
}
}
void main()
{
int xa,ya,xb,yb,xc,yc;
printf("请输入A点:\n");
scanf("%d %d",&xa,&ya);
printf("请输入B点:\n");
scanf("%d %d",&xb,&yb);
printf("请输入C点:\n");
scanf("%d %d",&xc,&yc);
DrawLine(xa,ya,xb,yb);
DrawLine(xa,ya,xc,yc);
DrawLine(xb,yb,xc,yc);
showDalt();
}
#include
#include
#include
static const int M = 50;
static const int N = 50;
char d[M][N] = {'\0'};
inline int delta(int x1, int x2)
{
return (x1 == x2 ? 0 : (x1 < x2 ? 1 : -1));
}
inline int near(double f)
{
return static_cast
}
void line(int x1, int y1, int x2, int y2)
{
int dx = delta(x1, x2);
int dy = delta(y1, y2);
if(x1 == x2)
{
for(; y1 != y2; y1 += dy)
{
d[y1][x1] = '*';
}
}
else if(y1 == y2)
{
for(; x1 != x2; x1 += dx)
{
d[y1][x1] = '*';
}
}
else if(abs(x1 - x2) < abs(y1 - y2))
{
double f = static_cast
for(int x = x1; x != x2; x += dx)
{
d[near(y1 + f * dy * abs(x - x1))][x] = '*';
}
}
else
{
double f = static_cast
for(int y = y1; y != y2; y += dy)
{
d[y][near(x1 + f * dx * abs(y - y1))] = '*';
}
}
}
void triangle(int x1, int y1, int x2, int y2, int x3, int y3)
{
line(x1, y1, x2, y2);
line(x2, y2, x3, y3);
line(x3, y3, x1, y1);
}
void ilu()
{
//i
line(0, 0, 3, 0);
line(1, 0, 1, 20);
line(0, 20, 3, 20);
//l
line(6, 0, 6, 20);
line(6, 20, 20, 20);
//u
line(25, 0, 25, 20);
line(25, 20, 40, 20);
line(40, 20, 40, 0);
}
void print()
{
for(int i = 0; i < M; ++i)
{
for(int j = 0; j < N; ++j)
{
std::cout << d[i][j];
}
std::cout << '\n';
}
}
int main(int, char*[])
{
memset(d, ' ', M * N);
triangle(10, 20, 20, 10, 30, 20);
print();
memset(d, ' ', M * N);
ilu();
print();
return 0;
}