Javascript 在纸上围绕中心点画一条X度的弧?

Javascript 在纸上围绕中心点画一条X度的弧?,javascript,math,paperjs,Javascript,Math,Paperjs,我正在为paperjs指定圆弧的方式而挣扎。我不知道为什么没有基本上是: var myArc = new Arc(degrees (radians?), center, radius); 因为我无法理解(from,through,to)作为弧描述符的优势 无论如何,有人能告诉我怎么画一条弧吗?比如说:从一个固定的中心点以固定的半径画30度?假设中心点是:(cx,cy),半径是200 我不在乎方向,因为我可以在事后旋转它 TIA.只需计算所需坐标(伪代码): 似乎没有一种内在的方法可以做到这一点

我正在为paperjs指定圆弧的方式而挣扎。我不知道为什么没有基本上是:

var myArc = new Arc(degrees (radians?), center, radius);
因为我无法理解(from,through,to)作为弧描述符的优势

无论如何,有人能告诉我怎么画一条弧吗?比如说:从一个固定的中心点以固定的半径画30度?假设中心点是:(cx,cy),半径是200

我不在乎方向,因为我可以在事后旋转它


TIA.

只需计算所需坐标(伪代码):


似乎没有一种内在的方法可以做到这一点。它确实有“Path.Arc(start,through,end);”这在大多数情况下更有意义

但是,有了它,您可以设计一种方法:

function getCreateArcInfo(degrees,center,radius){
    return {
        from: {
            x:center.x + radius,
            y: center.y
        },
        through: {
            x: center.x + Math.cos(degrees/2) * radius,
            y: center.y + Math.sin(degrees/2) * radius
        },
        to: {
            x: center.x + Math.cos(degrees) * radius,
            y: center.y + Math.sin(degrees) * radius
        },
        strokeColor: 'black'
    }
}
var arcValues = getCreateArcInfo(4, {x:253,y:334}, 160)
var myArc = new Path.Arc(arcValues)

这是以前答案的修改版本,代码转换为javascript(
纸张
是当前活动的)

让半径=50
设旋转=40//应用的旋转,paperjs方法以度为单位
设len=1.5*Math.PI//3/4圆弧长,弧度
设圆弧=新纸张.Path.arc({
from:[半径,0],
通过:[半径*数学cos(len/2),半径*数学sin(len/2)],
收件人:[半径*数学常数(len),半径*数学常数(len)],
冲程宽度:2,
strokeColor:“#000”
})
圆弧旋转(旋转)

将此标记为答案,因为它非常清晰。但是,请解释一下(开始、结束、结束)是如何更有意义的。因为我真的不明白为什么我会这样概念化一个弧。当我想到圆弧时,我想到了圆的一小部分,所以我想到了圆心,半径,度数。我一点也没有讽刺。我在paperjs之前从来没有遇到过这个想法。这里的数学似乎不正确。看一下代码,它在90度时似乎是正确的,但除此之外什么都没有。在您的示例中,度数值传递4。但是弧度看起来是200度左右。我试着以180度的角度通过,但它不会产生半圆。@MonkRocker,因为圆弧通常是形状的一部分,通常由多条路径组成,所有路径都从前一条路径结束的地方开始,并在结束循环中。我相信,至少在所有情况下,我都使用了弧。是的,我在数学上有点动摇,但你明白了。我认为你可以在函数中使用MBo的数学来做一个有效的解决方案。我们基本上有相同的想法。我知道,几年后。传入的值以弧度为单位,而不是度。正如@MoonRocker所说,4将给出大约200度(229.183)。90度使用1.5708
function getCreateArcInfo(degrees,center,radius){
    return {
        from: {
            x:center.x + radius,
            y: center.y
        },
        through: {
            x: center.x + Math.cos(degrees/2) * radius,
            y: center.y + Math.sin(degrees/2) * radius
        },
        to: {
            x: center.x + Math.cos(degrees) * radius,
            y: center.y + Math.sin(degrees) * radius
        },
        strokeColor: 'black'
    }
}
var arcValues = getCreateArcInfo(4, {x:253,y:334}, 160)
var myArc = new Path.Arc(arcValues)