• 直线栅格化(基于 Bresenham 算法)


    直线栅格化在计算机图形处理中非常常用,看了看网上的介绍比较常用的就是Bresenham 算法,搜索了下网上的算法,试了试,有的有问题,自己写了一个,测试通过。

    #include <stdio.h>
    #include <stdlib.h>
    
    void LinearGrid (int x1, int y1, int x2 , int y2)
    {
        int dx = abs( x2 - x1 );
        int dy = abs( y2 - y1 );
        int x = x1;
        int y = y1;
        int sx = x2 > x1 ? 1 : -1;
        int sy = y2 > y1 ? 1 : -1;
    
        if (dx > dy)
        {
            int e = -dx;
            for (int i = 0; i < dx ; i ++)
            {
                x += sx ;
                e += 2 * dy ;
                if (e >= 0)
                {
                    y += sy ;
                    e -= 2 * dx ;
                }
    
                printf("[%d, %d]\n" , x, y);
            }
        }
        else
        {
            int e = -dy;
            for (int i = 0; i < dy ; i ++)
            {
                y += sy ;
                e += 2 * dx ;
                if (e >= 0)
                {
                    x += sx ;
                    e -= 2 * dy ;
                }
                printf("[%d, %d]\n" , x, y);
            }
        }
    }
    
    void map (int x, int y)
    {
        for (int j = 0; j <= y ; j ++)
        {
            for (int i = 0; i <= x ; i ++)
            {
                printf("[%d, %d]" , i, j);
            }
            printf("\n" );
        }
    
        printf("\n\n\n" );
    }
    
    int main (int argc, char * argv[])
    {
        map(5, 5);
        LinearGrid(3, 2, 1, 0);
    } 
    

      

  • 相关阅读:
    Bresenham画线算法
    DDA算法
    GL_LINES & GL_LINE_STRIP & GL_LINE_LOOP
    贝塞尔曲线
    弱引用
    Lambert模型
    ShadowVolume
    Phong Shading
    求反射向量
    Vertex Modifier of Surface Shader
  • 原文地址:https://www.cnblogs.com/ourroad/p/3078841.html
Copyright © 2020-2023  润新知