2013-05-05 98 views
1

我做了一些点的缩放/放大时的转换。我的目标是根据此比例计算偏移量。如何恢复转换?

我的问题是,当从大规模走向更小规模时,我当然会有相同的偏移量。例如,如果我从3缩放到4并从4缩回到3,则3的比例偏移应始终相同。我的公式不是这样的。基于forumla

px = 200 
offset = 0 
scale: 1, and goes always +-1 

计算:我不能让我的头左右我在做什么错newOffset = oldOffset +- px/scale;

scale = 2 => offset = 0  + 200/2 = 100 
scale = 3 => offset = 100 + 200/3 = 166,67 
scale = 4 => offset = 166,67 + 200/4 = 216,67 

我怎样才能恢复比例?

scale = 3 => offset = 216,67 - 200/3 = 150 # //it should evaluate to 166,67 

回答

1

偏移量由递推关系定义:

offset(0) = 0 
offset(i) = offset(i-1) + px/(i+1) 

或者,如果我们写出来的前几个条款,

offset0 = 0 
offset1 = offset0 + px/2 = 100 
offset2 = offset1 + px/3 = offset0 + px/2 + px/3 = 166.67 
offset3 = offset2 + px/4 = offset0 + px/2 + px/3 + px/4 = 216.67 

所以偏移量等于常数,offset0,加上谐波序列的前N项(对于n = 2,3,...的项1/n的总和),由px缩放。

对于谐波序列的前N项,没有闭式代数表达式,因此要么存储数字并根据需要查找它们,要么在“重新缩放”时重新计算该值。