Javascript 使用Math.PI计算在画布上绘制点

Javascript 使用Math.PI计算在画布上绘制点,javascript,math,canvas,Javascript,Math,Canvas,我在画布上画点时遇到了一些数学问题,这些点是围绕一个圆隔开的。 我有半径,每个点的间距,甚至圆周围的角度,但问题是我希望它以指定的角度开始,以指定的角度结束 代码 函数获取点(x、y、半径、刻度) { 变量间距=数学PI*2/刻度; var点=[]; 对于(var i=0;i您的间距值基于360度(或数学.PI*2弧度) 您的起始值(参见角度计算)是数学.PI(或180度) 因此,您的跨度为180度到540度(Math.PI到3*Math.PI弧度) 您可能需要更改角度计算(可能应重命名为弧度)

我在画布上画点时遇到了一些数学问题,这些点是围绕一个圆隔开的。 我有半径,每个点的间距,甚至圆周围的角度,但问题是我希望它以指定的角度开始,以指定的角度结束

代码

函数获取点(x、y、半径、刻度)
{
变量间距=数学PI*2/刻度;
var点=[];

对于(var i=0;i您的
间距
值基于360度(或
数学.PI*2
弧度)

您的起始值(参见
角度
计算)是
数学.PI
(或180度)

因此,您的跨度为180度到540度(
Math.PI
3*Math.PI
弧度)

您可能需要更改
角度
计算(可能应重命名为
弧度
)以具有不同的起始角度


您还需要根据所需圆弧的度数/弧度修改
间距
计算。

((x*y)/x)
=
y
,因此
变量角度=(间距*i)+(Math.PI)
…所以你要从角度
Math.PI
3*Math.PI
。可能你想要的是
var角度=(间距*i)+(起始角度)
?这里标记为“角度”的词实际上是“弧度”。我采纳了你的建议,相应地将开始改为135,结束改为280,然后在var间距中添加了这个(obj.endDegreesMath.PI/180)/ticks;变量角度=(间距*i)+(ticks*(obj.startdgreesMath.PI/180))/ticks);虽然看起来大的没有正确排列,但我将开始研究。您希望
间距
基于圆弧。上述基于0到
结束度
,而不是
开始度
结束度
。尝试
变量间距=(结束度-开始度)*Math.PI/180
。另外
var-nextRadians=(间距*i)+(startDegrees*Math.PI/180)
.PS-我讨厌将弧度/度计算内联。我更喜欢编写并使用
toRadian
toDegree
函数。存储
startRadians
值也不是一个坏主意(而不是为每个刻度重新计算相同的值)。虽然我使用了(enddegrees startdegrees),但仍然存在大刻度排列不正确的问题。因此,它们的间距计算不正确。
function getPoints(x,y,radius,ticks)
{
    var spacing = Math.PI*2/ticks;
    var points = [];
    for(var i=0; i<ticks;i++)
    {
        var angle = (spacing * i)+((ticks*Math.PI)/ticks);
        var x1 = x+radius*Math.cos(angle);
        var y1 = y+radius*Math.sin(angle);
        points.push({'x':x1,'y':y1});
    } 
    return points;
}