消隐处理
一,实验名称:消隐处理
二,实验目的:消隐处理在三维图形显示中经常用到,通过对可见面,可见线加以显示,不
可见面,不可见线加以消隐,以达到图形显示的真实性。通过该实验了解三维图形消隐
处理的常用方法,掌握利用外法线法进行面消隐的原理和方法,为真实感图形的现实和
处理作准备。
三,实验原理:
四,实验内容:给定一立体小房子的各个顶点坐标,用表面模型建立起该三维立体的模型表
示,并观察坐标系对该立体小房子进行透视投影,以观察小房子的外形。此间要对不可
见面线进行消隐处理,编制 C 语言程序实现该功能。
五,算法步骤:
a) 给定顶点坐标。
b) 给顶个个对应的顶点学历和顶点个数。
c) 计算每个边的外法线。
d) 根据法线和观察视线的关系确定表面的可见性。
e) 把可见面上的边放到边数组中。
f) 对在可见面上的边加以显示。
六,代码:
#include
#include
#include
#define
#define
#define
#define
PHI
S1
C1
S2
1.20
sin ( THETA )
cos ( THETA )
sin ( PHI )
cos ( PHI )
C2
#define
RHO 80.0
#define
#define
D 30.0
float THETA = 0.90;
void InitGraph(void)
{int
GraphDriver=DETECT,GraphMode=VG
e1=s[i][0];wx=xe-v[e1-1][0];wy=ye-v[e1
-1][1];wz=ze-v[e1-1][2];
if((n[i][0]*wx+n[i][1]*wy+n[i][2]*wz)>0.
0){
for(j=1;j
七,结果及分析: