计算机图形学中的线形的处理c++程序实现

计算机图形学中的线形的处理c++程序实现

#include<graphics.h>
#include<conio.h> 
#include<stdio.h>
#include<math.h>

//n为循环的周期数,lineFlag为线型,x0,y0为起点坐标,线的总长度为n*21
void drawline(int n,int *lineFlag,int x0,int y0,COLORREF color)  //点画线,短横线
{
 for(int j=0;j<n;j++)
 {
  for(int i=0;i<21;i++)
  {
   if(lineFlag[i] == 1)
   {
    putpixel(x0,y0,color);
   }
   x0++;
  }
 }
}
void MidpointLine2(int x1,int y1,int x2,int y2,COLORREF color,int *lineFlag)  //中点画线法
{
 int count=0;
 int x = x1, y = y1; //初始化x,y
 int a = y1 - y2, b = x2 - x1;      //a,b分别为x和y的增量
 //考虑四种情况,分别计算增量
 int deltx = (b >= 0 ? 1 : (b = -b, -1)); 
 int delty = (a <= 0 ? 1 : (a = -a, -1));

 for(int i=0;i<=400;i++)
 {putpixel(i, 200, color);putpixel(200, i, color);}
 if(lineFlag[count] == 1){putpixel(x+200, y+200, color);}count++;

 int d, delt1, delt2;
 if (-a <= b)  // 斜率绝对值 <= 1
 {
  d = 2 * a + b;
  delt1 = 2 * a;
  delt2 = 2 * (a + b);
  while(x != x2)
  {
   if (d < 0)
    y += delty, d += delt2;
   else
    d += delt1;
   x += deltx;
   if(lineFlag[count] == 1){putpixel(x+200, y+200, color);}count++;
  }
 }
 else    // 斜率绝对值 > 1
 {
  d = 2 * b + a;
  delt1 = 2 * b;
  delt2 = 2 * (a + b);
  while(y != y2)
  {
   if(d < 0)
    d += delt1;
   else
    x += deltx, d += delt2;
   y += delty;
   if(lineFlag[count] == 1){putpixel(x+200, y+200, color);}count++;
  }
 }
}

int main()
{
 initgraph(800,800);

 int lineFlag1[]={1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0};
 drawline(20,lineFlag1,50,100,255);   //画点画线,长度为20*21
 MidpointLine2(0,0,100,100,255,lineFlag1);
 getchar();
 return 0;
}

原文链接: https://www.cnblogs.com/XiaofeiYin/p/5563538.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    计算机图形学中的线形的处理c++程序实现

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/234672

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 下午4:22
下一篇 2023年2月13日 下午4:22

相关推荐