我正在尝试用多边形制作一个圆圈(我知道我可以使用例如形状渲染器,但我需要它像这样)。
圆圈应该由4个节点和4个弯曲边缘组成。节点由ShapeRenderer渲染,并且定位为“+”,边缘渲染器将边缘曲线化。现在我有问题,边缘进入侧面的所有节点,这对于顶部和底部节点是可以的,但是对于左侧和右侧节点不起作用,因为它们应该进入顶部和底部的节点,所以我没有得到一个完美的圆圈,但更多的是蛋形。
有人知道如何更改边缘进入节点的位置或如何将此节点旋转90度?
答案 0 :(得分: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);
}
可能你必须覆盖它来设置你想要的曲线。
如果是这种情况,请在此处与他人分享您的解决方案。
答案 1 :(得分: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);
}
这适合我,我不确定它是否是一个完美的圆圈,但我无法发现差异。 我也不太明白它为什么会起作用,因为我向x1添加了2 * dx / 3,但是从y2减去了dy / 3。有人知道为什么会这样吗?