方形定位计算公式

问题描述 投票:0回答:1

我正在尝试按 picture 所示排列正方形。每个方格都比前一个方格小一个常数值。当定位一个正方形时,我知道:

  1. 它的尺寸
  2. 大正方形(中心正方形)的大小
  3. 相对于中心的索引,即...-2, -1, 0, 1, 2...
  4. 实际索引,即0,1,2,3,4...
  5. 缩进常数(当前方格比前一个方格小的值)

该公式必须包含乘以相对于中心的索引,因为正方形可以通过与其相乘来改变其位置。

我正在为其编写一些代码,但它并不理想。常数 (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;
  }
user-interface math language-agnostic
1个回答
0
投票

我认为简单的观察会对您有所帮助。从方块编号 0 开始的方块的中心是 0、7、12、15、16(反方向为负)。这是 16 - 16, 16 - 9, 16 - 4, 16 - 1, 16 - 0。所以第 n 个平方中心的简单公式是 f(n) = 16 - (4 - n)^2。

© www.soinside.com 2019 - 2024. All rights reserved.