zoukankan      html  css  js  c++  java
  • 模拟边缘填充法

    #include<iostream>
    #include<cstring>
    using namespace std;
    struct Node
    {
     int x,y;
    };
    struct Edge
    {
     Node s,e;
    }E[11];
    int map[111][111];
    int v[111][111];
    int maxx,maxy,minx,miny;
    int n;//多边形边的数量
    int fmin(int x,int y)
    {
     if(x<y) return x;
     return y;
    }
    int fmax(int x,int y)
    {
     if(x>y) return x;
     return y;
    }
    void init()
    {
     int i;
     printf("请输入多边形边的数量: ");
     scanf("%d",&n);
     printf("请按照逆时针输入多边形的各个定点: ");
     for(i=1;i<=n;i++)
     {
      scanf("%d%d",&E[i].s.x,&E[i].s.y);
      E[i-1].e.x=E[i].s.x,E[i-1].e.y=E[i].s.y;
      minx=fmin(E[i].s.x,minx);
      maxx=fmax(E[i].s.x,maxx);
      miny=fmin(E[i].s.y,miny);
      maxy=fmax(E[i].s.y,maxy);
      
     }
     E[n].e.x=E[1].s.x;E[n].e.y=E[1].s.y;
    }
    void cover(int x,int y)
    {
    // if(v[x][y]) return ;
    // v[x][y]=1;
     int xx=x;
     while(xx<=maxx)
      map[xx++][y]^=1;
    }
    void DDa(int x0,int y0,int x1,int y1)
    {
     int dx,dy,epsl,k;
     float x,y,xIncre,yIncre;
     dx=x1-x0;dy=y1-y0;
     x=x0;y=y0;
     if(abs(dx)>abs(dy)) epsl=abs(dx);
     else epsl=abs(dy);
     xIncre=(float)dx/(float)epsl;
     yIncre=(float)dy/(float)epsl;
     for(k=0;k<=epsl;k++)
     {
      cover(int(x+0.5),int(y+0.5));
      x+=xIncre;
      y+=yIncre;
     }
    }

    void solve()
    {
     memset(map,0,sizeof(map));
     memset(v,0,sizeof(v));
     int i;
     for(i=1;i<=n;i++)
       DDa(E[i].s.x,E[i].s.y,E[i].e.x,E[i].e.y);
    }
    int main()
    {
     int i,j;
     init();
     solve();
     for(i=maxy;i>=miny;i--)
     {
      for(j=minx;j<=maxx;j++)
       if(map[j][i])
        cout<<"*";
       else cout<<" ";
      printf(" ");
     }
    }

  • 相关阅读:
    javaBean的理解
    配置tomcat8数据源(采用局部数据源方式)
    windows下apache报os 10048错误
    Windows下Apache的下载安装启动停止
    java通过数据库连接池链接oracle
    java连接oracle数据库
    eclipse配置svn方法
    JAVA多线程中start方法与run方法区别
    java程序在没有java环境的电脑上执行的方法(关键词jar,exe)
    js监听不到组合键
  • 原文地址:https://www.cnblogs.com/zhangdashuai/p/4514569.html
Copyright © 2011-2022 走看看