在paperjs中心点周围画出一个X度的弧度?

时间:2014-10-21 11:39:46

标签: javascript math paperjs

我正在为paperjs指定Arcs的方式而苦苦挣扎。我不知道为什么没有基本上的东西:

var myArc = new Arc(degrees (radians?), center, radius);

因为我无法弄清楚(从,到,到)作为Arc描述符的优势。

无论如何,有人能告诉我如何绘制一个弧形的说法:固定半径的固定中心点30度?假设中心点为:(cx,cy),半径为200。

我不关心方向,因为我可以在事后旋转它。

TIA。

3 个答案:

答案 0 :(得分:2)

似乎没有内置的方法来做到这一点。它确实有“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)

http://goo.gl/YDQQl3

答案 1 :(得分:0)

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

fromPoint = Point(Center.X + Radius * Math.Cos(StartAngleInRadians), Center.Y + Radius * Math.Sin(StartAngleInRadians))
throughPoint = Point(Center.X + Radius * Math.Cos(StartAngleInRadians + ArcAngle/2), Center.Y + Radius * Math.Sin(StartAngleInRadians + ArcAngle/2))
toPoint = Point(Center.X + Radius * Math.Cos(StartAngleInRadians + ArcAngle), Center.Y + Radius * Math.Sin(StartAngleInRadians + ArcAngle))

答案 2 :(得分:0)

这是先前答案的修改版本,代码已转换为javascript( test_df %>% group_by(Y) %>% summarise( z0 = sum(Z == 0), z1 = sum(Z == 1) , PropZ = z1/n()) 是当前有效的PaperScope)。

paper