OpenGL 学习笔记(八)

一、多边形

x-扫描思想:

1.确定多边形所占有的最大扫描线,得到多边形顶点的最小和最大y值。

2.从y= ymin 和y = ymax,每次用一条扫描线进行填充

3.对一条扫描线填充的过程可分为四个步骤:

a.求交

b.排序

c.交点配对

d.区间填色

    交点个数=构成这个顶点的两条边位于扫描线上方的条数

 y-向连贯性算法:
1.创建一个链表,存放所有y坐标(节点称为桶)
2.每个节点存放最低y坐标相关的直线
数据结构:
桶表,链表

边缘填充算法(重复访问的点很多)
栅栏填充算法:
按任意顺序处理多边形的每条边(处理每条边与扫描线的交点时,将交点与栅栏之间的像素取补)
边标志算法(先画边界后填色):
1.用一种特殊的颜色在帧缓器中将多边形的边界勾画出来;
2.将着色的像素点依x坐标递增的顺序两两配对;
3.将每一对像素所构成的扫描线区间内的所有像素置为填充色
算法步骤:
1.打标记:将多边形的每条边进行直线扫描转换(将多边形边界所经过的像素打上标记)
2.填充:Inside,初值:假,遇到标记点:取反,真:填充,假:不填充

二、区域填充
        区域的定义:

        指已经表示成点阵形式的填充图形,它是像素集合
种子填充思想(Photoshop的油漆桶)
以边界表示为例看种子填充思想:
边界填充算法:
算法输入:种子点坐标(x,y),填充色和边界颜色
数据结构:栈结构
算法输出:最佳逼近的像素点集.
4-连通边界填充算法步骤:
        种子像素入栈,栈非空时重复执行三步操作:
1.栈顶像素出栈
2.将出栈像素置成填充色
3.检查出栈像素的4-邻接点,若其中某个像素点不是边界色且未置成多边形色,则把该像素入栈
泛填充算法通常用于给区域重新着色

三、必不可少的反走样
1.提高分辨率
2.过取样:重叠过取样
3.区域取样
4.加权区域取样点

探秘造型技术

初识造型技术
        图形的构成:体-面-环-边-顶点的层次记录信息
实体的定义:正则形体+二维流形

         实体的完整定义:对于一个占据有限空间的正则形体,如果其表面是二维流形,则该正则形体为实体

样条
        在绘图术语中,样条是通过一组指定点集而生成平滑曲线的肉韧带.
        样条曲线(spine curve)指由多项式曲线端连接而成的曲线,在每段的边界出满足特定的连续性条件
        样条曲面:可以使用两组样条曲线进行描述
        插值和逼近样条(Photoshop的钢笔):


Bezier曲线和曲面(样条逼近算法)

规则形体
实体模型的三类表示:
1.边界表示(Boundary Representation):比如多边形平面和样条曲面
2.构造实体几何表示(Constructive Solid Geometry):
3.空间分割表示(Space-Partitioning)

不规则形体
1.分形几何
2.粒子系统

裁剪与屏幕映射

编码裁剪算法-Cohen-Sutherland(线段裁剪):
1.直线完全可见
2.直线完全不可见
3.直线与裁剪窗口相交
 

三维空间的多边形
Sutherland-Hodgeman多边裁剪:将多边形边界作为一个整体,每次用窗口的一条边界对要裁剪的多边形进行裁剪
Weiler-Atherton算法:

屏幕映射
顶点着色器->几何着色器->裁剪->屏幕映射
->模型变换->视图变换->投影变换->屏幕映射
建模坐标系->世界坐标系->观察坐标系->观察坐标系->屏幕坐标系
局部空间->世界空间->观察空间->裁剪空间->屏幕空间

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大王算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值