怎么用C实现单位立方体的一点透视?
怎么用C实现单位立方体的一点透视?怎么建立三维立体坐标系?怎么画单位立方体? 问题点数:50、回复次数:4Top
1 楼happy__888([顾问团]寻开心 www.e-jjj.com)回复于 2005-06-02 17:25:17 得分 30
首先,不知道楼主是否已经知道了图形学的透视原理
这个是必备的知识
其次,如果有opengl或者directx作为底层显示平台就很容易了,可以找到这样的例子的
如果必须自己来绘制,那么在知道透视原理的情况下,存在的唯一问题就是组成立方体的各个面之间的遮挡关系问题了
遮挡关系对于所有的凸体(立方体是凸体)可以通过简单的背面剔除方法来解决
那就是给组成凸体的每个面定义一个向外的法向量,
检测视线方向和法向量之间的夹角,如果小于90度则不绘制(两个向量点乘结果为正)
否则就绘制
这样自然就可以把背朝视方向的面忽略掉了,就不会产生遮挡问题了
Top
2 楼happy__888([顾问团]寻开心 www.e-jjj.com)回复于 2005-06-02 17:32:38 得分 0
首先,无论如何你都要懂得计算机图形学当中的三维透视原理,找本书补习一下
同时,需要一点向量矢量计算的知识,不是必须,有最好
其次,如果可以借助opengl或者directx那么,在你网上就可以找到满足你的要求的例子
如果不行,也没有问题,在满足了首要条件后,遗留的只是组成盒子的各个面之间的遮挡问题
解决遮挡问题的方法很多,针对凸体(立方体是凸体)最简单的就是背面剔除方法
给组成凸体的每个面赋予一个法向量
对于固定的视点和视线方向,循环绘制所有的面
对于每个面,检测视线和法向量之间的夹角
如果夹角小于90,则跳过这个面,不绘制(两个向量的点乘结果为正)
否则绘制
记得这个例子在很久以前,应该是92,或者是93年的计算机世界报上刊登过,那篇文章以这个题目为例子,说明大约6,7种解决遮挡问题的算法,并且提供了源码,不知道现在网络上能否搜索出来了Top
3 楼zzwu(未名)回复于 2005-06-02 17:57:48 得分 15
我刚做了一个魔方游戏,用到了单位立方体的一点透视,但是用Pascal实现的。
我隔几天后可以把有关段落转为C在这里贴出(现在有些其他事情)。Top
4 楼summer54(cofd)回复于 2005-06-02 23:34:20 得分 5
学习Top




