2011-06-13 76 views
2

我正在使用Raphaeljs创建一个用于创建图表的Web应用程序。其中一种形状是钻石,它只是一个旋转45度的矩形。我需要测试一个圆圈是否落在旋转后的图像中,我不知道如何去做。如何测试一个圆是否在旋转的对象中

回答

2

如果你有一个钻石:

var diamond = paper.rect(rect_x, rect_y, size, size); 
diamond.rotate(45); 

然后在水平与两个角具有坐标(NX1,NY)和(NX2,NY),其中

ny = rect_y + rect_w/2; 
nx1 = rect_x + rect_w*(1-Math.sqrt(2))/2; 
nx2 = rect_x + rect_w*(1+Math.sqrt(2))/2; 

然后创建这个圆内半径小的钻石。

var circle = paper.circle(cx, cy, r); 
nx1 += r*Math.sqrt(2); 
nx2 -= r*Math.sqrt(2); 

Diagram showing circle in diamond

然后你测试圆心是否是此钻石的四边之间:

if (cy < ny - nx1 + cx && 
    cy > ny - nx2 + cx && 
    cy > ny + nx1 - cx && 
    cy < ny + nx2 - cx) 
    {Circle is inside the diamond} 
+0

啊,现在看来如此明显!谢谢! – dave 2011-06-20 19:11:17

相关问题