新乡市红旗医院招聘:布景的可见性问题

来源:百度文库 编辑:中科新闻网 时间:2024/04/27 21:28:32
摄影师Randon创办了自己的3D工作室,他在自己的工作室内准备布置场景,所有的场景都是由正四棱柱、正四棱锥共两种类型的物体中的一种或两种构成,并且都直接放在地板上。
为了描述这些场景的位置,我们在地板上建立了直角坐标系,原点o处是Randon和他的照相机。对于每一个正四棱柱和正四棱锥的布景,用他们的底面正方形的中心坐标(Xc,Yc)来表示他的位置,用底面边长d和棱柱的高h来表示它的形状。同时,每一布景的放置都是规则的,也就是说,所有棱柱底面的棱都平行于坐标轴。当然,任意两个布景是不允许有重叠的部分的。
对于站在坐标原点o处的Randon而言(假设Randon趴在地上,并设其高度为0,在计算机图形学中将其称为视点),一个四棱柱表面上的某个点,当且仅当他与原点的连线不再穿过任何四棱柱的表面(包括冷和顶点)时,才被认为是可见的,这时,Randon就可以从照相机里看到该布景(可能是全部或者一部分)。关于四棱锥的可见性定义也与四棱柱类似,不再重复。
当Randon布置完这些布景后,他想要了解到从他所站的位置到底能看到多少布景,但是当布景很多时,这是很难一下就知道的。因此,希望您能为Randon完成该项任务,也就是说,基于C++利用程序求出在坐标原点o处可见的四棱柱的个数和四棱锥的个数。
0<=Xc<=65000,0<=Yc<=65000(即所有点都在第一象限内),0<=d<=65000,0<=h<=65000;对于布景的总数N,1<=N<=2000

请那位大侠帮忙指点一下有什么好算法啊~~