诚心求助朋友教我用VB绘画 三维立体图形

1. Z=f(x,y)的立体图形
2. 球坐标系 绘制 立体图形
3. 圆柱坐标系 绘制 立体图形
愿意教我的朋友 请加入这个QQ:89618496 群吧!!
另外爱好 计算机图形学、分形学 的朋友 也可以加入这个群,一起学习。。。。

vb里绘制线框的立体图形很简单,用到投影算法即可。
所谓投影算法就是把三维空间里的xyz映射成xy的一种方法,网上查一下“投影算法”关键字就能找到公式。

比如场景里有八个点,它们都各自有xyz坐标,在投影成xy以后,再按照一定顺序用Line连接线即可。再结合上Sin和Cos还能让图形旋转。但一般来说我们习惯的三维图像还涉及光、颜色、纹理填充,这就比较麻烦了。还得有消隐算法……

总之如果打算自己弄得化很复杂,想提高运算效率建议学习一下 DirectX SDK,有VB版的。

3D投影2D计算公式是这样的
P( f ):(x, y, z)==>( f*x / z + XOrigin, f*y / z + YOrigin )
其中f是“焦点距离”,它表示从观察者到屏幕的距离,一般在80到200之间。XOrigin和YOrigin是屏幕中心的坐标。

再给你些对与3D旋转和缩放的矩阵,矩阵转化成公式即可。
二维坐标系公式。
二维笛卡儿坐标系的平移等式。
t( tx, ty ): ( x, y ) ==> ( x + tx, y + ty )

二维笛卡儿坐标系的缩放等式。
s( k ): ( x, y ) ==> ( kx, ky )

旋转等式:
r( q ): ( x, y ) ==> ( x cos(q) - y sin(q), x sin(q) + y cos(q) )

三维坐标系公式。
平移公式:
t( tx, ty, tz ): ( x, y, z ) ==> ( x + tx, y + ty, z + tz )

平移(tx, ty, tz)的矩阵
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 0 |
| tx ty tz 1 |

缩放公式:
s( k ): ( x, y, z ) ==> ( kx, ky, kz )

缩放(sx, sy, sz)的矩阵
| sx 0 0 0 |
| 0 sy 0 0 |
| 0 0 sz 0 |
| 0 0 0 1 |

旋转公式(围绕Z轴):
r( q ): ( x, y, z ) ==> ( x cos(q) - y sin(q), x sin(q) + y cos(q), z )

绕X轴旋转角q的矩阵
| 1 0 0 0 |
| 0 cos(q) sin(q) 0 |
| 0 -sin(q) cos(q) 0 |
| 0 0 0 1 |

绕Y轴旋转角q的矩阵:
| cos(q) 0 -sin(q) 0 |
| 0 1 0 0 |
| sin(q) 0 cos(q) 0 |
| 0 0 0 1 |

绕Z轴旋转角q的矩阵:
| cos(q) sin(q) 0 0 |
|-sin(q) cos(q) 0 0 |
| 0 0 1 0 |
| 0 0 0 1 |
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-04-22
我有源码!

QQ:274716245
相似回答