亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? -+

?? ASM需要的一些很經(jīng)典的資料
??
字號:
畫線、畫圓、填充、變換等 
圖形學(xué)算法(偽代碼) 
-----------------------------------------------------------------------
//bresenham 圓
void MyCircle(CDC* pDC, int x0, int y0, int r)
{   int d, x, y ;

    d = 1-r;
    x = 0;  y = r;
    CirclePoint( pDC, x0, y0, x, y ) ;
    while( y>x )
    { if( d<=0 ) d += 2*x+3; 
        else { d += 2*(x-y);  y--; }
      x++;
      CirclePoint( pDC, x0, y0, x, y ) ;}
}

void CirclePoint( CDC* pDC, int x0, int y0, int x, int y)
{   
        pDC->SetPixel( pDC, x0+x, y0+y ) ;
        pDC->SetPixel( pDC, x0+y, y0+x ) ;
        pDC->SetPixel( pDC, x0-y, y0+x ) ;
        pDC->SetPixel( pDC, x0-x, y0+y ) ;
        pDC->SetPixel( pDC, x0+y, y0-x ) ;
        pDC->SetPixel( pDC, x0+x, y0-y ) ;
        pDC->SetPixel( pDC, x0-x, y0-y ) ;
        pDC->SetPixel( pDC, x0-y, y0-x ) ;
}
-----------------------------------------------------------------------
//bresenham 直線
void MyLine( CDC* pDC, int x1, int y1, int x2, int y2, COLORREF color )
{
  int x, y, e, a, b ;

  a = x2 - x1 ;
  b = y2 - y1 ;
  e = 2 * b - a ;
  x = x1 ; y = y1 ;
  MySetPixel( pDC, x, y, color ) ;
  while( (x != x2) || ( y != y2 ))
   { if ( e >= 0 ) 
        { y ++ ; e -= 2 * a ; }
         x ++ ;  
         e += 2 * b ; }
     pDC->SetPixel( x, y, color ) ; 
        }
}
-----------------------------------------------------------------------
//四連通點(diǎn)填充 (邊界)
void MyFloodFill( CDC* pDC, int x, int y, COLORREF color, COLORREF BoundColor )
{
        pDC->SetPixel(x,y,color);
        if ( pDC->GetPixel(x-1,y) != BoundColor )
                MyFloodFill( pDC, x-1, y, color, BoundColor ) ;
        if ( pDC->GetPixel(x+1,y) != BoundColor )
                MyFloodFill( pDC, x+1, y, color, BoundColor ) ;
        if ( pDC->GetPixel(x,y+1) != BoundColor )
                MyFloodFill( pDC, x, y+1, color, BoundColor ) ;
        if ( pDC->GetPixel(x,y-1) != BoundColor )
                MyFloodFill( pDC, x, y-1, color, BoundColor ) ;
}
-----------------------------------------------------------------------
//四連通點(diǎn)填充 (內(nèi)部)
void MyFloodFill( CDC* pDC, int x, int y, COLORREF color, COLORREF OldColor )
{
        pDC->SetPixel(x,y,color);
        if ( pDC->GetPixel(x-1,y) == OldColor )
                MyFloodFill( pDC, x-1, y, color, OldColor ) ;
        if ( pDC->GetPixel(x+1,y) == OldColor )
                MyFloodFill( pDC, x+1, y, color, OldColor ) ;
        if ( pDC->GetPixel(x,y+1) == OldColor )
                MyFloodFill( pDC, x, y+1, color, OldColor ) ;
        if ( pDC->GetPixel(x,y-1) == OldColor )
                MyFloodFill( pDC, x, y-1, color, OldColor ) ;
}
-----------------------------------------------------------------------
//bezier 分裂
void BezierSplit( CDC * pDC, double px[], double py[], int n, int k)
{
  double qx[MAX], qy[MAX] ;
  register i, j ;

  for( i = 0 ; i <= n ; i++ )
   { qx[i] = px[0] ;
     qy[i] = py[0] ;
     for( j = 0 ; j < n-i ; j++ )
      {         px[j] =(px[j] + px[j+1]) / 2. ;
                 py[j] =(py[j] + py[j+1]) / 2. ; } }
  if ( k > 1 )
   { BezierSplit( pDC, qx, qy, n, k-1) ;
         BezierSplit( pDC, px, py, n, k-1) ; }
  else
   { DrawLine( pDC, qx, qy, n ) ;
         DrawLine( pDC, px, py, n ) ; }
}

void DrawLine(CDC * pDC, double px[], double py[], int n)
{ register i ;

  pDC->MoveTo((int)px[0], (int)py[0]) ;
  for( i = 1 ; i <= n ; i++ )
    pDC->LineTo((int)px[i], (int)py[i]) ;
}
-----------------------------------------------------------------------
//逐點(diǎn) Bezier
void BezierPoint( CDC * pDC,  double px[], double py[], int n, int count)
{
  double qx[MAX], qy[MAX], u ;
  register i, j, k ;

  pDC->MoveTo((int)px[0], (int)py[0]) ;
  for( k = 1 ; k < count ; k++ )
   { u = (double)k / (double)count ;
     for( i = 0 ; i <= n ; i++ )
      { qx[i] = px[i] ;
                qy[i] = py[i] ; }
     for( i = 0 ; i < n ; i++ )
       for( j = 0 ; j < n-i ; j++ )
                { qx[j] = (1.-u) * qx[j] + u * qx[j+1] ;
                  qy[j] =(1.-u) * qy[j] + u * qy[j+1];}
     pDC->LineTo((int)qx[0], (int)qy[0]) ; }
  pDC->LineTo((int)px[i], (int)py[i]) ;
}
-----------------------------------------------------------------------
//二次B樣條
void Bspline2( CDC * pDC, double px[], double py[], int n, int count)
{ double mar2[4][4] = {{0.5, -1., 0.5, 0.}, {-1., 1., 0., 0.},
                      {0.5, 0.5, 0., 0.} , { 0., 0., 0., 0.}} ;
  register i ;

  pDC->MoveTo((int) ceil((px[0]+px[1])/2.), (int) ceil((py[0]+py[1])/2.)) ;
  for( i = 0 ; i <= n - 2 ; )
   { BsplinePoint( pDC, mar2, 2, px, py, i++, count ) ;
     pDC->LineTo((int) ceil((px[i]+px[i+1])/2.), (int) ceil((py[i]+py[i+1])/2.))
; }
     pDC->SelectObject(oldpen);
}

void BsplinePoint( CDC * pDC,  double mar[][4], int k, double px[], double py[],
                   int m, int count )
{ double t, u, x, y, sx, sy ;
  register i, j, l ;

  for( l = 1 ; l < count ; l++ )
   { t = (double)l / (double)count ;
     u = 1. ; x = y = 0. ;
     for( i = k ; i >= 0 ; i-- )
      { sx = sy = 0. ;
           for( j = 0 ; j <= k ; j++ )
           { sx += mar[i][j] * px[m+j] ;
             sy += mar[i][j] * py[m+j] ; }
           x += u * sx ; y += u * sy ;
           u *= t ; }
       pDC->LineTo((int)x, (int)y) ; }
}
-----------------------------------------------------------------------
//三次B樣條
void Bspline3(CDC* pDC,double px[], double py[], int n, int count)
{  double mar3[4][4] = {
          {-0.166667, 0.5, -0.5, 0.166667},
          {0.5, -1., 0.5, 0.},
           {-0.5, 0., 0.5, 0.} , 
          { 0.166667, 0.666667, 0.166667, 0.}  } ;
  register i ;

  pDC->MoveTo((px[0]+4.*px[1]+px[2])/6., 
                (py[0]+4.*py[1]+py[2])/6.);
  for( i = 0 ; i <= n - 3 ; )
   { BsplinePoint(pDC, mar3, 3, px, py, i++, count ) ;
     pDC->LineTo((int)((px[i]+4.*px[i+1]+px[i+2])/6.),
                (int) (py[i]+4.*py[i+1]+py[i+2])/6.)) ; }
}

void BsplinePoint( CDC * pDC,  double mar[][4], int k, double px[], double py[],
                   int m, int count )
{
  double t, u, x, y, sx, sy ;
  register i, j, l ;

  for( l = 1 ; l < count ; l++ )
   { t = (double)l / (double)count ;
     u = 1. ; x = y = 0. ;
     for( i = k ; i >= 0 ; i-- )
      { sx = sy = 0. ;
                for( j = 0 ; j <= k ; j++ )
                { sx += mar[i][j] * px[m+j] ;
              sy += mar[i][j] * py[m+j] ; }
                x += u * sx ; y += u * sy ;
                u *= t ; }
     pDC->LineTo((int)x, (int)y) ; }
}

-----------------------------------------------------------------------
//線填充Etable
void SortXrank( PETable ETable[], int Xrank[], int k )
{//冒泡排序
  int i, j, tmp ;
  for( i=0; i     for( j = 0; j       if (ETable[Xrank[j]]->x > ETable[Xrank[j+1]]->x )
        { tmp = Xrank[j] ; Xrank[j] = Xrank[j+1] ;
           Xrank[j+1] = tmp ; }
}

void AddETable( PETable ETable[], int i, int n )
{
  if ( i == -1 ) i = n ;
  switch( ETable[i]->flag )
      { case 0 :
          ETable[i]->flag = 1 ;
          break ;
        case 1 :
          ETable[i]->flag = -1 ;
          break ;
      }
}

PETable RequestETable(int x0, int y0, int x, int y)
{//生成一個(gè)表
  PETable p ;

  p = new ETable ;
  if ( y >= y0 )
   { p->x = (float)x0 ;
         p->dx = (float)(x-x0)/(float)(y-y0) ; } 
  else
   { p->x = (float)x ;
         p->dx = (float)(x0-x)/(float)(y0-y) ; }
  p->flag = 0 ;
  return(p) ;
}

void MyFillPolygon( CDC* pDC, float p[][2], int n, int color)
{
//p為點(diǎn)數(shù)組,n條邊,n個(gè)頂點(diǎn)
  PETable ETable[10] ;
  int Yrank[10], Xrank[10], flag[10] ;
  int i, j, k, tmp ;
  int x0, y0, x, y ;

  //畫多變形
  DrawPolygon( pDC, p, n, color ) ;
  //排序頂點(diǎn),Yrank[]為頂點(diǎn)下標(biāo)
  for( i=0; i<=n; i++ )
    Yrank[i] = i ;
  for( i=0; i   for( j = 0; j     if ( p[Yrank[j]][1] > p[Yrank[j+1]][1] ) //按y值冒泡排序
          { tmp = Yrank[j] ; Yrank[j] = Yrank[j+1] ;
            Yrank[j+1] = tmp ; }
  //初始化ET表
  x0 = (int)p[0][0]; y0 = (int)p[0][1] ;
  for( i=1; i<=n; i++ )
   { x = (int)p[i][0] ; y = (int)p[i][1] ;
     ETable[i-1] = RequestETable(x0, y0, x, y) ;
     x0 = x ; y0 = y ;
   }
  x = (int)p[0][0]; y = (int)p[0][1] ;//最后一條邊
  ETable[n] = RequestETable(x0, y0, x, y) ;


  //遍歷填色
  i = 0 ;
  y = p[Yrank[0]][1] ;
  while( i < n )
   { //引進(jìn)二邊表
     do
      { AddETable( ETable, Yrank[i], n ) ;
        AddETable( ETable, Yrank[i]-1, n ) ;
        i++ ;
      } while( p[Yrank[i]][1] == p[Yrank[i-1]][1] ) ;
     //計(jì)算x新值
     k = 0 ;
     for( j=0; j<=n; j++ )
       if (ETable[j]->flag == 1)
                { ETable[j]->x += ETable[j]->dx ;
                  Xrank[k++] = j ; 
                }
     k-- ;
     SortXrank( ETable, Xrank, k ) ;  //排序新x值
         //重復(fù)畫線填色
     for( ; y <= p[Yrank[i]][1]; y++ )
      { for( j = 0 ; j <= k ; j+=2 )
                { vline( pDC, (int)(ETable[Xrank[j]]->x+1.5),(int)(ETable[Xrank[j+1]]->x+0.5), y, color ) ;
                        ETable[Xrank[j]]->x += ETable[Xrank[j]]->dx ;
                        ETable[Xrank[j+1]]->x +=ETable[Xrank[j+1]]->dx;
       }}}
}
////////////////////////////////////////////////////////////////////////
(1)將頂點(diǎn)按y值升序排列 Ri
(2)置初值:y=y[R[0]]
(3)For(i=0;i<=N;i++)
        {引進(jìn)p[R[i]]的兩邊,L,R
        如果邊在AET表中刪除,不在加入
        重新對AET排序,否則先比較x,x相等,比較dx
        for(;y        {
                遍歷AET表(j=0;j                do{
                        Lineto(x[i,j],y)
                        遍歷AET表
                        x[i]=do[i]直到結(jié)束
}
 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
高清久久久久久| 欧洲人成人精品| 国产一区二区免费在线| 久久精品国产一区二区三| 免费成人在线播放| 免费观看在线综合| 久热成人在线视频| 国精产品一区一区三区mba桃花 | 丝袜亚洲另类欧美| 日韩成人伦理电影在线观看| 亚洲18色成人| 免费三级欧美电影| 国产在线一区二区综合免费视频| 成人性生交大片| 日韩亚洲欧美综合| 99久久99久久免费精品蜜臀| 97久久久精品综合88久久| 91亚洲精品久久久蜜桃| 在线观看亚洲精品| 91精品午夜视频| 久久这里只有精品首页| 国产精品久久久久久久久果冻传媒| 综合久久一区二区三区| 亚洲电影在线播放| 九九热在线视频观看这里只有精品| 国产一区二区三区不卡在线观看| av高清久久久| 欧美剧情电影在线观看完整版免费励志电影| 6080yy午夜一二三区久久| 26uuu国产日韩综合| 亚洲欧洲性图库| 首页亚洲欧美制服丝腿| 国产乱对白刺激视频不卡| www.日韩大片| 在线观看91av| 国产蜜臀97一区二区三区| 亚洲欧洲制服丝袜| 免费观看在线综合| 成人app网站| 91麻豆精品国产91久久久资源速度| 久久综合成人精品亚洲另类欧美| 亚洲视频在线观看一区| 日韩二区在线观看| 白白色 亚洲乱淫| 欧美一区二区三区四区视频| 中文字幕av一区二区三区高| 亚洲国产毛片aaaaa无费看| 黑人巨大精品欧美黑白配亚洲| 色综合久久天天| 精品国产凹凸成av人网站| 一区二区三区中文在线| 精品一区二区三区免费观看| 91免费国产在线| 久久理论电影网| 婷婷综合另类小说色区| 99免费精品视频| 久久综合久久鬼色| 午夜一区二区三区视频| 成人免费毛片a| 日韩欧美成人激情| 夜夜嗨av一区二区三区四季av| 国产精品一二三区在线| 欧美日韩国产一级二级| 亚洲色图视频网| 国产精品1区二区.| 日韩欧美www| 午夜精品123| 色天使久久综合网天天| 2024国产精品| 另类综合日韩欧美亚洲| 欧美日韩一区精品| 亚洲人成网站精品片在线观看| 国产九色sp调教91| 欧美一级久久久| 视频一区欧美精品| 在线观看www91| 亚洲欧美色图小说| 不卡高清视频专区| 欧美国产一区二区| 国内精品免费**视频| 日韩一区二区三区免费看| 亚洲综合视频网| 91麻豆免费看| 亚洲品质自拍视频网站| www.综合网.com| 国产精品久久久久久久久久免费看 | 欧美性videosxxxxx| 国产精品蜜臀av| 丁香六月综合激情| 久久品道一品道久久精品| 久久成人免费网| 日韩一区二区电影在线| 日韩高清电影一区| 欧美一区二区三区在| 日本不卡视频在线| 日韩午夜激情视频| 麻豆精品在线看| 日韩欧美国产电影| 国产在线精品一区在线观看麻豆| 日韩一区二区影院| 六月丁香综合在线视频| 欧美大片免费久久精品三p| 蜜桃av噜噜一区二区三区小说| 欧美喷潮久久久xxxxx| 日本 国产 欧美色综合| 日韩欧美二区三区| 国产一本一道久久香蕉| 国产日韩精品一区| 成人av动漫在线| 一区二区三区丝袜| 欧美日韩一区二区欧美激情| 日韩精品免费专区| 精品人伦一区二区色婷婷| 国产麻豆成人精品| 国产精品美女一区二区三区| 94-欧美-setu| 午夜不卡av在线| 日韩欧美高清一区| 成人黄色777网| 亚洲自拍偷拍九九九| 欧美精品日日鲁夜夜添| 精品一区中文字幕| 国产精品国产三级国产aⅴ入口 | 欧美一区二区三区四区高清| 国产一区日韩二区欧美三区| 中文字幕乱码一区二区免费| 波波电影院一区二区三区| 亚洲国产一区二区三区青草影视| 欧美一区二区三区在线| 国产成人精品一区二区三区四区 | 九九视频精品免费| 亚洲欧洲日本在线| 欧美肥妇bbw| 福利电影一区二区| 亚洲第一福利一区| 精品播放一区二区| 色呦呦国产精品| 奇米色777欧美一区二区| 国产欧美精品一区二区色综合| 91啪亚洲精品| 久久成人av少妇免费| 亚洲色图清纯唯美| 日韩精品一区二区三区四区视频| 成人免费福利片| 日本中文一区二区三区| 国产精品免费免费| 欧美一个色资源| 91亚洲午夜精品久久久久久| 欧美a一区二区| 亚洲视频每日更新| 久久先锋影音av| 欧美日韩综合不卡| 国产成人在线网站| 日产精品久久久久久久性色| 国产精品国产a级| 欧美一区二区精品| 色综合天天做天天爱| 国内精品久久久久影院一蜜桃| 亚洲卡通动漫在线| 国产欧美精品在线观看| 欧美一区日韩一区| 色偷偷一区二区三区| 精品午夜久久福利影院| 亚洲一区二区欧美日韩| 国产精品免费网站在线观看| 日韩你懂的在线播放| 欧美色图天堂网| jlzzjlzz欧美大全| 国产毛片精品一区| 日本成人在线网站| 一个色综合av| 中文字幕中文字幕在线一区| 精品99999| 日韩欧美在线综合网| 91行情网站电视在线观看高清版| 国产精品12区| 国产一区二区看久久| 日韩高清不卡在线| 亚洲成人综合视频| 国产精品动漫网站| 久久精品亚洲国产奇米99| 日韩美女在线视频 | 日韩在线播放一区二区| 亚洲欧美一区二区三区久本道91 | 久久99精品一区二区三区三区| 亚洲成a人片综合在线| 亚洲色图丝袜美腿| 一区在线中文字幕| 国产精品短视频| 中文字幕在线播放不卡一区| 国产欧美一区二区在线| 久久久久久久久一| 精品国产污网站| 欧美精品一区二区久久婷婷| 91精品国产色综合久久不卡蜜臀| 欧美日韩国产免费一区二区| 色www精品视频在线观看| 色婷婷综合久久久久中文一区二区| 97精品超碰一区二区三区| 不卡欧美aaaaa|