加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

基于VB6+OpenGL的三维数据建模实例

发布时间:2020-12-17 07:47:52 所属栏目:百科 来源:网络整理
导读:'画n片四边形组成连续的彩色体(三维极坐标): Dim vx(0 To 3),vy(0 To 3),vz(0 To 3) '四顶点坐标 Dim ad(0 To 3),bd(0 To 3) '四顶点因子 ad(0) = 0: ad(1) = 1: ad(2) = 1: ad(3) = 0: bd(0) = 0: bd(1) = 0: bd(2) = 1: bd(3) = 1: gluLookAt 0,0.005,1,1 '
'画n片四边形组成连续的彩色体(三维极坐标):
Dim vx(0 To 3),vy(0 To 3),vz(0 To 3) '四顶点坐标
Dim ad(0 To 3),bd(0 To 3) '四顶点因子
ad(0) = 0: ad(1) = 1: ad(2) = 1: ad(3) = 0:
bd(0) = 0: bd(1) = 0: bd(2) = 1: bd(3) = 1:
gluLookAt 0,0.005,1,1 '视角(眼睛,中心,顶点)
glScalef 0.35,0.35,0.35 '对象缩放
Dim x,y,z1,z2,dlt,v As Single
dlt = 0.25
glLineWidth 0 '线粗
glPointSize 0 '点大小
glPushName 6
For bk = -3.2 To 3.2 Step dlt
For ak = -3.2 To 3.2 Step dlt


glBegin GL.GL_QUADS
For i = 0 To 3
av = ak + ad(i) * dlt: bv = bk + bd(i) * dlt
glColor3f (1 - Sin(bv)) / 2,(1 - Sin(av Xor bv)) / 2,(1 + Sin(bv)) / 2 ' 设置当前色
'av = Format("0.00",av)
'bv = Format("0.00",bv)
'使用表达式:expr1 = "2*sin(" & bv & ")" '''EvaluateExpr(expr1) '
'初始: lmda(0)=1: lmda(1)=1: lmda(2)=1: lmda(3)=1: lmda(4)=1: lmda(5)=1: lmda(6)=1: lmda(7)=1: lmda(8)=1: lmda(9)=1
'=================================
vc1 = Tan(av / 3.5 - bv / 8) '<<<=============
vc2 = Tan(bv / 3.5 - av / 8) '<<<=============
vc3 = 1 * Sin(av - bv) '<<<===========


vx(i) = Cos(av) * Cos(bv) * vc1
vy(i) = Sin(av) * Cos(bv) * vc2
vz(i) = Sin(bv) * vc3
'==================================
Next

'画正面:
glVertex3f vx(0),vy(0),vz(0)
glVertex3f vx(1),vy(1),vz(1)
glVertex3f vx(2),vy(2),vz(2)
glVertex3f vx(3),vy(3),vz(3)
'画反面:
glVertex3f vx(3),vz(3)
glVertex3f vx(2),vz(2)
glVertex3f vx(1),vz(1)
glVertex3f vx(0),vz(0) glEnd ' '''---------------外积计算,求单位法向量----------------- c = vx(0) - vx(1): b = vy(0) - vy(1): a = vz(0) - vz(1) g = vx(2) - vx(1): f = vy(2) - vy(1): e = vz(2) - vz(1) fx0 = (a * f - b * e) fy0 = (e * c - a * g) fz0 = (b * g - f * c) m = Sqr((a * f - b * e) ^ 2 + (e * c - a * g) ^ 2 + (b * g - f * c) ^ 2) fx = fx0 / m: fy = fy0 / m: fz = fz0 / m ' '''------------------------------- ' ' '再画法向量: glBegin GL_LINES glColor3f (1 + Sin(bv)) / 2,(1 - Sin(av + bv)) / 2,(1 - Sin(bv)) / 2 ' 设置当前色 glVertex3f vx(0),vz(0) glVertex3f 1.05 * vx(0),1.05 * vy(0),1.05 * vz(0) '统一朝外面 glVertex3f vx(0) - 0.12 * fx,vy(0) - 0.12 * fy,vz(0) - 0.12 * fz '按正面与反面 glEnd ' ' '再画线: ' glBegin GL_LINES ' glColor3f (1 + Sin(av)) / 2,(1 + Sin(av Xor bv)) / 2,(1 - Sin(av)) / 2 ' 设置当前色 ' glVertex3f vx(3),vz(3) ' glVertex3f vx(1),vz(1) ' glVertex3f vx(2),vz(2) ' glVertex3f vx(0),vz(0) ' glEnd Next Next glPopName

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读