学习目标
1、理解标准图形对象的概念
2、能通过数学展示并通过open gl 编程两种平面表示:tables and mesh
3、区分参数和非参数方程的概念,并了解在计算机图形学中使用参数方程的优势
4、能够在OpenGL二次曲面和超二次曲面中进行数学运算和编程
标准图形对象
standard graphics object = a set of (planar) polygons
定义:标准图形对象就是一组平面多边形
专用硬件旨在加快标准图形对象的渲染速度。
两种存储方法:
1、用表格存储(顶点,边,多边形,属性)比如下图
2、四边形网格(quadrilateral mesh
通过一个n*m数组,数组里放顶点位置 (x,y,z)
nxm个顶点可以表示(n-1)x (m-1)个四边形的表面
3、glut常用公式
(GLUT(英文全写:OpenGL Utility Toolkit)是一个处理OpenGL程式的工具库,负责处理和底层操作系统的呼叫以及I/O。)
glutWire #线框
glutSolid #作为填充区域多边形补丁
glutsolidcube(edgelength)
Tetrahedron, Cube, Octahedron, Dodecahedron, Icosahedron
平面的表示
ax+by+cz+d=0
*只有a b c 决定该平面,d用来表示的是该平面是否过原点
法向量 normal vector
1、法向量的计算:选择平面内三个顶点v1 v2和v3,则法向量为 n =(v2-v1)✖️(v3-v2)
2、点与平面的位置关系,若
aX+bY+cZ+d > 0 则在面外
aX+bY+cZ+d = 0 在面上
aX+bY+cZ+d < 0 在面内
3、选取平面内v1 v2 v3 如果
CCW边是逆时针方向 是外面
CW边是顺时针 是里面
内外测试
目的:判断像素点 p 在物体s 的里面还是外面
步骤:
1、从点 p 开始 发出一条射线 p+tv
2、找到在这条射线和物体之间的全部 非退化交点
3、如果交点数目为奇数,则表明p在物体内;反之p在物体外
note: 判断是否为非退化交叉点并不容易。所以我们可以通过随机发出多条射线然后服从多数结果**退化的交点是射线掠过表面的交点
看图释比较好理解
超二次元
二元二次 2D QUADRICS (conic section)
三元二次
二维空间中,我们有:
三维空间中 我们有:
超二次元(下图超椭圆
随着s从0.5-3的改变,图形可能从圆变为4边形
非参数和参数方程
非参数形式:
Z=f(X,Y) 、 f(X,Y,Z)=0
参数形式:
X=f1(u,v) 、 Y=f2(u,v)、 Z=f3(u,v)
参数形式在opengl里的使用更广泛
openGL内 没有超二次元方程式