zoukankan      html  css  js  c++  java
  • 通过Bresenham算法实现完成矢量线性多边形向栅格数据的转化

    1、实验目的与要求

          目的:通过本次实验,完成矢量线性多边形向栅格数据的转化过程;

          要求:采用VC++6.0实现。

    2、实验方法

          采用Bresenham算法实现

    3、实验材料

          直线的定义:y = x/3, 起点为(0, 0),终点为(12, 4);

          网格坐标要求:网格分辨率为0.2,网格起点同直角坐标系原点相同

    4、实验结果

          程序运行的结果,要依次输出栅格单元的栅格坐标

    注意事项:本实验中,栅格的分辨率同实际坐标不等,注意格子单位的输出过程以及矢量坐标向格子坐标的转化。

    5、程序源代码

     1 //采用Bresenham算法实现完成矢量线性多边形向栅格数据的转化过程
     2 
     3 #include<stdio.h>
     4 //Bresenham函数
     5 //其中(x0,y0)是起点,(x1,y1)是终点,k是斜率,pixel是网格分辨率
     6 void Bresenham(int x0,int y0,int x1,int y1,float k,float pixel)
     7 {
     8     int x,y;
     9     float e;
    10     e=-0.5;
    11     x=x0;
    12     y=y0;
    13     for(x=x0;x<=(x1/pixel);x++)
    14     {
    15         e=e+k;
    16         if(e>0)
    17         {
    18             y++;
    19             e=e-1;
    20         }
    21         
    22         printf("x=%d y=%d",x,y);
    23         printf("
    ");        
    24     }
    25 }
    26 
    27 void main()
    28 {
    29 //调用Bresenham函数
    30  Bresenham(0,0,12,4,1.0/3.0,0.2);
    31 
    32 }

    六、运行结果

    特别注意:float k=1/3,这时的k是0,涉及到一个类型转换问题。必须使用float k=1.0/3.0,这里的k才是0.33333...。

                                                                                                                                                                     石头 

                                                                                                                                                                     2014年11月27日

    宣言:在此记录自己学习过程中的心得体会,同时积累经验,不断提高自己! 文章未经说明均属原创,学习笔记可能有大段的引用,一般会注明参考文献。 欢迎大家留言交流。转载请注明出处。
  • 相关阅读:
    sqlmap使用教程-安装教程
    SQL注入攻击总结
    mysql 创建函数失败解决办法,版本 8.0.26
    【VUE3.0体验】axios引入以及property的替代
    异化的房价周期
    vue使用websoket
    spring依赖注入方式及springBoot如何解决循环依赖
    范型的正确使用
    mysql GROUP_CONCAT使用
    Mybatis-MySQL 中使用IFNUL
  • 原文地址:https://www.cnblogs.com/vegetable/p/4126731.html
Copyright © 2011-2022 走看看