如何在弧线上移动点?

时间:2014-05-30 18:44:24

标签: java awt

我正在编写一个模拟RobotArm运动的应用程序。我想要实现的目标,以及我遇到几个问题的地方是在弧度(180度)上移动一个点,即手臂的移动范围。 我正用手臂抓住鼠标移动手臂(弯头,我正在谈论的那个点),机器人可以有多个不同手臂长度的手臂。

如果你能帮我解决这个问题,我将不胜感激。

这是我到目前为止所绘制的功能:

public void draw(Graphics graph) { 
    Graphics2D g2d = (Graphics2D) graph.create();

    graph.setColor(color);
    graph.fillOval(location.x - 4, location.y - 4, point.width, point.height); //Draws elbow
    if (parentLocation != null) {
        graph.setColor(Color.black);
        graph.drawLine(location.x, location.y, parentLocation.x, parentLocation.y); //Connects to parent

        if (arc == null) {
            angle = new Double(90 - getAngle(parentInitLocation));
            arc = new Arc2D.Double(parentLocation.x - (parentDistance * 2 / 2), parentLocation.y - (parentDistance * 2 / 2), parentDistance * 2, parentDistance * 2,
                    90 - getAngle(parentInitLocation), 180, Arc2D.OPEN); //Draws an arc if not drawed yet.
        }
        else if (angle != null) //if parent is moved, angle is moved also
        {
            arc = new Arc2D.Double(parentLocation.x - (parentDistance * 2 / 2), parentLocation.y - (parentDistance * 2 / 2), parentDistance * 2, parentDistance * 2,
                    angle, 180, Arc2D.OPEN);
        }
        g2d.draw(arc);
    }
    if (spacePanel.getElbows().size() > level + 1) {//updates all childElbows position
        updateChild(graph);
    }
}

我只是不知道如何防止移动点移动到弧线外。它不能在弧内或弧外,就在它上面。

我想在这里放一个截图,遗憾的是我没有足够的代表。我可以把链接放到这个吗?

也许你有其他方法可以达到这种目的。

这是图像:
enter image description here

红色圆圈是实际状态,绿色圆圈是我想要做的。

EDIT2:根据要求,回购链接:https://github.com/dspoko/RobotArm

0 个答案:

没有答案