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

基于VB6+OpenGL的三维数据建模实例,第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 '画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 总结

以上是内存溢出为你收集整理的基于VB6+OpenGL的三维数据建模实例全部内容,希望文章能够帮你解决基于VB6+OpenGL的三维数据建模实例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1270612.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存