在对点进行某种缩放/放大时,我有以下转换。我的目标是根据这个比例计算偏移量。
我的问题是,当从大规模扩展到较小规模时,我当然会将偏移量设为相同。例如,如果我从3缩放到4并从4缩放到3,则3的缩放偏差应始终相同。
但是根据我的公式,它不是。我无法理解我做错了什么:
px = 200
offset = 0
scale: 1, and goes always +-1
基于forumla的计算: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
答案 0 :(得分: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个项,没有封闭形式的代数表达式,因此要么存储数字并根据需要查找它们,要么在“重新缩放”时重新计算该值。