这一部分出自《计算机图形学》绿绿的一本、链接如下
链接:http://pan.baidu.com/s/1bpGVHKV 密码:aamh
想着趁假期还有几天把CG的相关知识点过一下(学的时候感觉蛮有兴趣的就是上学期真的boom 所以也没太学好) 有些光看书看不懂的会找资料给补充
然后,OpenGL的代码每一部分都整一下另外放、基本都按章节来
甚至幻想着能结合Maya-(= =)醒醒
概念
坐标
屏幕坐标,基本是从左到右为x,从上到下为y。
三维坐标中点的表示
Point3D {
double x;
double y;
double z;
}
长方体表示
这里长方体最简洁的表示应该还是(三个点)
但不单单要考虑存储大小还要考虑具体应用嘛(老师说的)
所以具体存储方式是下面的
cuboid {
LCS3D local;
double x;
double y;
double z;
}
画线算法
http://blog.csdn.net/clever101/article/details/6076841
DDA算法
数字微分分析仪,线段扫描转换算法
将增量分离成整数和小数部分
Bresenham算法
k<1的时候,下一个位置在当前位置的右侧或右上侧、
蛮神奇的一个算法。后面的一些表现方式基本也在这个基础上。
并行画线算法
1\ 把线段分为n个子段,同时进行
2\ 给每个处理器分配一组像素,计算到像素到线距离d,小于线段粗细则绘制
圆生成算法
基本思路
1\ x为步长
计算量过大(开根号)、不等间距
2\ 转换到极坐标,角度为步长
三角函数计算困难
Bresenham算法
不需要平方根运算、需要平方运算
中点画圆算法
类似Bresenham算法,利用下一个点在 圆内\圆外 判断
椭圆生成算法
类似于圆的、就是圆可以只计算1/8椭圆要计算1/4,然后要在斜率绝对值为1处前后分为两个阶段
几何要素
中心位置编址 - 表示线段的时候长度会出问题
封闭图形 - 内部点
填充区图元
凹多边形 - 凸多边形
凹多边形填充算法比较困难
凹多边形的判断
1\ 邻边叉乘
2\ 顶点在延长线的两侧
分割方法
1\ 向量法
叉积为负数的向量方形
2\ 旋转法
逐一将顶点移动到原点,顺时针旋转多边形知道下一个顶点到x轴上,如果再下一个顶点在x轴下方,分割,并对俩多边形都进行测试。
凸多边形 - 三角形
三个连续顶点
内外测试
1\ 奇偶规则 射线与各边交点数目(其实也就是环绕数是奇数还是偶数)
2\ 非零环绕 逆时针方向环绕某一特定点的次数 - 环绕数
这两种方式得出的内外部区域可能不同
多边形表
1\ 几何数据表:顶点表、边表和面片表
这个应该可以根据信息来做具体的调整没那么呆板
还有一些因素比如错误检验啥的啦
2\ 属性数据表
向前面 & 向后面
判定对象可见性
法向量