1

在对点进行某种缩放/放大时,我有以下转换。我的目标是根据这个比例计算偏移量。

我的问题是,当从大尺度变为小尺度时,我当然会有相同的偏移量。例如,如果我从 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
4

1 回答 1

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 ​​项(1/nn = 2,3,... 的项之和)按px.

调和级数的前 N ​​项没有封闭形式的代数表达式,因此要么存储数字并根据需要查找它们,要么在“重新调整”时重新计算值。

于 2013-05-05T12:55:09.383 回答