1

我正在尝试用多边形制作一个圆圈(我知道我可以使用例如形状渲染器,但我需要这样)。

圆应该由 4 个节点和 4 个弯曲的边缘组成。节点由 ShapeRenderer 渲染并像“+”一样定位,边缘由边缘渲染器弯曲它们。现在我有一个问题,边缘进入侧面的所有节点,这对于顶部和底部节点是可以的,但对于左右节点不起作用,因为它们应该进入顶部和底部的节点,所以我没有得到一个完美的圆圈,而是更多的蛋形。

有谁知道我如何改变边缘进入节点的位置或如何将这个节点旋转 90 度?

4

2 回答 2

0

设置控制点的方法EdgeRenderer看起来很简单:

protected void getCurveControlPoints(EdgeItem eitem, Point2D[] cp, 
                double x1, double y1, double x2, double y2) 
{
    double dx = x2-x1, dy = y2-y1;      
    cp[0].setLocation(x1+2*dx/3,y1);
    cp[1].setLocation(x2-dx/8,y2-dy/8);
}

可能,您必须覆盖它以设置达到您想要的曲线。

如果是这种情况,请在此处分享您的解决方案。

于 2012-11-30T09:07:23.197 回答
0

好的,我正在尝试一些东西并想出了以下内容:

      protected void getCurveControlPoints(EdgeItem eitem, Point2D[] cp, 
                    double x1, double y1, double x2, double y2) 
    {
        double dx = x2-x1, dy = y2-y1;      
//        cp[0].setLocation(x1+2*dx/3,y1);
//        cp[1].setLocation(x2-dx/8,y2-dy/8);
        cp[0].setLocation(x1+2*dx/3,y1);
        cp[1].setLocation(x2,y2-dy/3);
    }

这对我有用,我不确定它是否是一个完美的圆圈,但我看不出有什么不同。我也不太明白它为什么会起作用,因为我将 2*dx/3 添加到 x1,但仅从 y2 中减去 dy/3。有人知道为什么会这样吗?

于 2012-12-01T19:40:31.367 回答