Mô phỏng hàm Line vẽ đường thẳng trong đồ họa C++
March 07, 2023
Chương trình mô phỏng hàm LINE nâng cao trong đồ họa C++
Bài Giải
/*
Name: Mo phong ham Line trong thu vien Graphics
Copyright: None
Author: Tran Anh
Description: https://gimi.vn
*/
#include<conio.h>
#include<stdio.h>
#include<graphics.h>
#include<math.h>
void DrawLine(int xa, int ya, int xb, int yb, int color)
{
float m=(yb-ya)*1.0/(xb-xa);
float b=ya-m*xa;
if (abs(xb-xa)>abs(yb-ya))
{
int y;
if ((xb-xa)>0)
{
for (int x=xa;x<=xb;x++)
{
y=m*x+b;
putpixel(x,y,color);
}
}
else
{
for (int x=xa;x>=xb;x--)
{
y=m*x+b;
putpixel(x,y,color);
}
}
}
else
{
int x;
if ((yb-ya)>0)
{
for (int y=ya;y<=yb;y++)
{
x=(y-b)/m;
putpixel(x,y,color);
}
}
else
{
for (int y=ya;y>=yb;y--)
{
x=(y-b)/m;
putpixel(x,y,color);
}
}
}
}
void DDA(int x1, int y1, int x2, int y2, int color)
{
int dx=x2-x1;
int dy=y2-y1;
float temp;
if(abs(dx)>abs(dy))
temp=abs(dx);
else
temp=abs(dy);
int xc=dx/int(temp);
int yc=dy/int(temp);
int x=x1, y=y1;
putpixel(x,y,color);
for(int i=1;i<=temp;i++)
{
x=x+xc;
y=y+yc;
putpixel(x,y,color);
}
}
main()
{
initwindow(800,600);
DrawLine(100,500,200,300,12);
DDA(400,400,300,300,12);
getch();
return 0;
}
Name: Mo phong ham Line trong thu vien Graphics
Copyright: None
Author: Tran Anh
Description: https://gimi.vn
*/
#include<conio.h>
#include<stdio.h>
#include<graphics.h>
#include<math.h>
void DrawLine(int xa, int ya, int xb, int yb, int color)
{
float m=(yb-ya)*1.0/(xb-xa);
float b=ya-m*xa;
if (abs(xb-xa)>abs(yb-ya))
{
int y;
if ((xb-xa)>0)
{
for (int x=xa;x<=xb;x++)
{
y=m*x+b;
putpixel(x,y,color);
}
}
else
{
for (int x=xa;x>=xb;x--)
{
y=m*x+b;
putpixel(x,y,color);
}
}
}
else
{
int x;
if ((yb-ya)>0)
{
for (int y=ya;y<=yb;y++)
{
x=(y-b)/m;
putpixel(x,y,color);
}
}
else
{
for (int y=ya;y>=yb;y--)
{
x=(y-b)/m;
putpixel(x,y,color);
}
}
}
}
void DDA(int x1, int y1, int x2, int y2, int color)
{
int dx=x2-x1;
int dy=y2-y1;
float temp;
if(abs(dx)>abs(dy))
temp=abs(dx);
else
temp=abs(dy);
int xc=dx/int(temp);
int yc=dy/int(temp);
int x=x1, y=y1;
putpixel(x,y,color);
for(int i=1;i<=temp;i++)
{
x=x+xc;
y=y+yc;
putpixel(x,y,color);
}
}
main()
{
initwindow(800,600);
DrawLine(100,500,200,300,12);
DDA(400,400,300,300,12);
getch();
return 0;
}
Post a Comment