分别指定将Xmin=-234,Ymin=156和Xmax=66,Ymax=456的2D窗口转换为Umin=45,Vmin=35和Umax=245,Vmax=185的显示视图所需的转换矩阵和缩放矩阵。
上的问题有关
我被要求计算2D窗口中两个点A (-100,300)和B (30,-40)的视图端口位置(U1,V1)和(U2,V2),并确定这两个点是否在视图端口内。
根据变换矩阵,我发现(U1,V1)为be (403/3,407),(U2,v2)为be (221,-103)。事实证明,这两个点都在我们的视图端口之外,但它们之间的一部分线在其中。
现在我对下面这个部分感到困惑:
在上面给出的两点A和B之间的线段上应用2D裁剪方法。
delta x= 221-(403/3) = 260/3
delta y= -103 - 406 = -510
M= delta y/ delta x= -5.88
我从U1,V1开始,因为它在我们的视口之上:
Y= 185
X= 403/3 + (185-407)*(delta x/ delta y)
X= 279.48
第1点- (172、185)
这是正确的吗?因为重点现在在视图端口内。至于第二点,我是否也这样做呢?
发布于 2018-03-21 14:54:14
两个端点都位于不同的区域:在这种非平凡的情况下,算法会找到视口区域之外的两个点中的一个(至少有一个点在外部)。然后计算出输出点和扩展视口边界的交点(即用线的参数方程),这个新点取代了输出点。该算法会重复执行,直到发生琐碎的接受或拒绝。
所以是的,因为你的新的第一点在视口内,但你的第二点在外面,情况是不平凡的(即不“去渲染它的全部”或“去放弃它的全部”),它将重复第二点。然后,这两个点将在视口内,因此这是一个微不足道的抽签,不需要进一步的行动。
https://computergraphics.stackexchange.com/questions/2410
复制相似问题