提问人:Eugene 提问时间:11/5/2023 最后编辑:Eugene 更新时间:11/6/2023 访问量:78
计算正方形定位的公式
Formula to calculate square positioning
问:
我正在尝试如图所示排列正方形。每个方块都比前一个方块小一个常数值。在定位正方形时,我知道:
- 它的大小
- 大正方形的大小(正方形在中心)
- 相对于中心的指数,即 ...-2、-1、0、1、2...
- 实际指数,即 0,1,2,3,4...
- 缩进常量(当前平方小于前一个平方的值)
公式必须包含相对于中心的指数的乘法,因为正方形可以通过乘法来改变它们的位置。
我正在为它编写一些代码,但这并不理想。常量 (0.5) 是一个有眼球的值。
Float GetCardPosition(Int Index) {
var Distance = CenterIndex - Index; // index relative to the center
var Size = GetCardSize(index);
var CardCenter = Size / 2;
var Center = MaxWidth / 2;
var CenterIndent = Indent / 2;
var CardPos = Center - CardCenter;
var Pos = (CardCenter + CenterIndent * Math.abs(Distance) * 0.5) * Distance;
return CardPos - Pos;
}
答:
0赞
der da
11/6/2023
#1
我认为一个简单的观察会对你有所帮助。以平方数零开头的正方形的中心是 0、7、12、15、16(在相反方向上为负数)。这是 16 - 16、16 - 9、16 - 4、16 - 1、16 - 0。因此,第 n 个平方中心的简单公式是 f(n) = 16 - (4 - n)^2。
评论
0赞
Eugene
11/6/2023
这是一个很好的公式和解释。对于更通用的方法,要获得公式中的数字 4,我是否应该使用 16 的平方根(汇总宽度的一半)?
0赞
der da
11/7/2023
是的。另外,这里的 4 是中心正方形右侧(或左侧)的正方形数,包括中心正方形。如果你想知道中间有 1 个正方形,每边有 m-1 个正方形的排列的第 n 个正方形的中心,它是 f_m(n) = m^2 - (m - n)^2。这种正方形的边长应为 4m - 2 - 4n。
评论