【问题标题】:arrange div elements in square using javascript and maths使用 javascript 和数学将 div 元素排列成正方形
【发布时间】:2014-05-19 15:00:39
【问题描述】:

I n 个使用 JavaScript 排列成圆形的 div。现在我将每个 div 的维度设置为40×40。以下是我到目前为止能够实现的目标。这就是我找到每个 div 的 X 和 Y 的方式。

x = 100 * Math.cos(angle) + hCenter;
y = 100 * Math.sin(angle) + vCenter;

其中 hCenter 和 vCenter 是屏幕的中心点

  1. 当有许多圆圈时,它们开始相互重叠。如何 我可以找到每个 div 的高度和宽度,以便它们适合圆圈吗 彼此之间有一点空间。

  2. 如何在正方形中排列相同的圆圈。表示动画从 圆形到方形。如何找到每个 div 的新 X、Y 位置。

【问题讨论】:

  • 在哪个方格?你想如何安排它们? “新位置”是什么意思,你指的是动画吗?圆在动画中应该走什么路径?
  • 屏幕本身就是正方形。我希望元素排列在边缘。那么我应该如何移动每个圆圈,以便所有圆圈都是方形的。通过动画,我的意思只是 jQuery 动画,用于将圆圈从当前位置移动到新位置,即方形。就像把这个圆圈延伸到正方形
  • 拉伸以使它们等距,或拉伸以保持它们的角度?
  • 让他们保持自己的角度

标签: javascript trigonometry


【解决方案1】:

我怎样才能找到每个 div 的高度和宽度,以便它们适合圆形,彼此之间有一点空间。

每个圆的宽度和高度都与它的直径相同,它(加上小间距)相当于由它们的位置形成的多边形的边的长度。您知道其中排列的大正方形/圆形的大小(“直径”),因此您可以轻松计算 length of the sides 和项目数。然后减去一个小的常数或因子,就得到了结果。

如何找到每个 div 的新 X,Y 位置,使它们排列成一个正方形?

从他们将坐在正方形的哪一侧的角度计算。你有你的第一个坐标。然后,使用sin/cos计算那一侧的位置。

var dir = Math.round(angle / Math.PI * 2) % 4,
    dis = dir<2 ? 100 : -100;
if (dir % 2 == 0) {
    x = hCenter + dis;
    y = vCenter + dis * Math.tan(angle);
} else {
    x = hCenter + dis / Math.tan(angle);
    y = vCenter + dis;
}

【讨论】:

  • 嘿兄弟,我想你不明白我找到高度和宽度的第一点。现在我有 15 个圆圈排列在一个圆形区域中。如果我再添加一个圆圈,那么我必须减小每个圆圈的大小,以便新的圆圈适合圆形图形。所以缩小到我的问题是什么?
  • 不,这只是我回答的问题。您可以通过计算正多边形的边长来计算圆的大小。
  • 嘿,如果我也需要保持距离怎么办?抱歉重复的问题,但我的数学很弱
猜你喜欢
  • 2012-01-04
  • 1970-01-01
  • 2016-01-21
  • 2016-01-23
  • 2013-01-14
  • 2012-09-17
  • 1970-01-01
  • 2010-09-25
  • 2012-06-02
相关资源
最近更新 更多