我正在尝试按 所示排列正方形。每个方格都比前一个方格小一个常数值。当定位一个正方形时,我知道:
该公式必须包含乘以相对于中心的索引,因为正方形可以通过与其相乘来改变其位置。
我正在为其编写一些代码,但它并不理想。常数 (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 开始的方块的中心是 0、7、12、15、16(反方向为负)。这是 16 - 16, 16 - 9, 16 - 4, 16 - 1, 16 - 0。所以第 n 个平方中心的简单公式是 f(n) = 16 - (4 - n)^2。