围绕圆非均匀地绘制点

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

我想在代码中创建这种效果 - 在一个圆周围绘制一系列点,但是我想将圆的左右两侧的点集中在一起,并将它们进一步(均匀地)间隔开顶部和底部分开。

我觉得使用标准 sin/cos/tan 函数应该可以实现这一点,但我无法弄清楚。

这是我到目前为止创建一个圆但具有均匀分布点的伪代码:

    var angleIncrement = (2 * Math.PI) / numPoints;
    
    for (var i = 0; i < numPoints; i++) {
      var angle = i * angleIncrement;
      var x = centerX + radius * Math.cos(angle);
      var y = centerY + radius * Math.sin(angle);

      points.push(x, y);
    }
math trigonometry
1个回答
0
投票

您可以尝试从角度中减去两倍相同角度的正弦值的一半。这应该将角度的线性函数转换为“向上的正弦波”,其在 π 的倍数处具有零导数,并且它也与线性函数相交。像这样的东西(未经测试!):

    var angleIncrement = (2 * Math.PI) / numPoints;
    
    for (var i = 0; i < numPoints; i++) {
      var linearAngle = i * angleIncrement;
      var angle = linearAngle - 0.5 * Math.sin(angle * 2);
      var x = centerX + radius * Math.cos(angle);
      var y = centerY + radius * Math.sin(angle);

      points.push(x, y);
    }
© www.soinside.com 2019 - 2024. All rights reserved.