主要是这两个公式:
L/D<C;
f=L/(D*C*D2*(max(c*d2,1));
f<1;
基本上看不懂!!
但是从原理上来思考的话,应该归结为以下两点:
1.所有的长度的方块经过投影之后应该是同一个长度或者比它更大。
(保证一个屏幕上没有过多的三角形)
2.垂直方向上,要么,我们的分解后,产生的高度误差,经过投影之后,产生的像素误差小于某一个阀值k;
第一个:
D1为它的实际边长,那么它经过投影之后的长度为:
D12=D1×(NearH/L);
L为距离,NearH为近裁剪面高度的一般。
如果D12比较大,说明不够精细!!!!!
D12>MAX
这个时候,进行分解。
L/D<NearH/MAX;
把这个值设为C ,那么C×C就是我们能容忍的最少数量。
如过一个每一个小方块没有达到那个不等式标准,正方形的数量就会过少而失真。
只要这个成立就一直分解么!!!
非也!!!!!!!!!!!
因为分解到不能再分解,也就是说:还有个条件:
!!!!!!
D>1;好,现在一切OK!!
现在说第二个问题:
如果失真过多怎么办,也就是在高度上产生的误差很大!!!!!!!!
比如说一个边长为D的正方形,5个点的添加,增加了图像的质量,但是在高度上产生的最大差为D2;
那么,
D2的投影如果比一个定值小,说明不用分解!!因为足够精细了,,,,
但是如果D2的投影比一个定值大,说明必须分解!!因为不够精细了!!!!
MAX 为屏幕视觉上容忍的最大误差。
D2×(NearH/L)>MAX;
联合以上两种情况,可以得出以下方程:
L/D<NearH/MAX;
D2×(NearH/L)>MAX2;
好了,考察L:
L<D*NearH/MAX;
L<D2*NearH/MAX2;
我们发现了什么哈哈!!!!!!!!!!!!很经典吧!!!!!!!!!!!
只要满足其中之一,我们就可以说它可以不用分解了!!!!!!!!!
继续推导!!!
改写为:
D*NearH/(L*MAX)>1;
D2*NearH/(MAX2*L)>L;
设 c=D×MAX2/(D2×MAX)
现在看看多么漂亮吧!!!!!
D/MAX是什么,比值!!它表明了实际的边长和期待的最大边长的比,这个是水平方向
D2/MAX2是什么比值!!它表明了实际的误差和期待的误差的比,这个是垂直方向
逻辑应该是这样:
如果垂直方向比较大,说明实际误差大。。。
如果水平方向比较大,说明水平边长比较大。。。
他们当中我们取最大那一个,如果最大的实际误差都能满足我们的不等式!!!!!!,那么,我们可以肯定的说:
它符合我们的条件!!!!!!!!!!!!!!!!!!!!!
好了!!!!!!!!!!!!!!!c的值说明了我们的期待。。。。。。。。。。
c的值越大,说明了我们对于垂直方向的一个要求精度越高!!!!!!!!!!!!!!!!!!!!!!!!!