gpt4 book ai didi

javascript - 仅在象限 I 和 IV 的圆周上均匀分布点

转载 作者:行者123 更新时间:2023-11-30 11:59:00 25 4
gpt4 key购买 nike

我只想在象限 I 和 IV 的圆周上均匀分布 n 点。

作为参数,我有点数 n、圆心坐标 cxcy 以及半径 r

我可以像使用下面的公式一样将点分布在整个圆周上,但我正在寻找仅在象限 I 和 IV 中分布点的公式

var n = 5;
var cx = 1;
var cy = 1;
var r = 2;

//I store each point's coordinates in this array below
var coordinates = [];

for (var i=0; i < n; i++) {
//defining point's angle with the center of the circle in radiant
//this angle distribute the points evenly over all 4 quadrants
var angle = ((360/n) * i) * (Math.PI/180);

//calculating the point's coordinates on the circle circumference
var pointX = cx + r * Math.cos(angle);
var pointY = cx + r * Math.sin(angle);

//storing the point's coordinates
coordinates.push([pointX, pointY]);
}

最佳答案

以下是我将采取的解决此问题的步骤:

  1. 找到两者之间的 Angular 。每个点 var incrementBy = 180/n
  2. 起始 Angular 为 270º,结束 Angular 为 90º
  3. 遍历通过

代码

 var increment = 180 / n
var startAngle = 270
for (var i = 0; i < n; i++)
{
var angle = startAngle + increment * i
var rads = angle * Math.pi / 180

var tx = cx + r * Math.cos(rads)
var ty = cy + r * Math.sin(rads)

coords.push([tx, ty])
}

注意

我没有费心去转换传统的象限(相对于 JS 的 y 轴向下移动)。如果需要,那么在计算之后,只需反转 ty 值即可。当您递增回到 Quad I 时,当 Angular 值超过 360º 时,我也没有费心去减小 Angular 值。

关于javascript - 仅在象限 I 和 IV 的圆周上均匀分布点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37145768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com