我正在编写一个模拟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);
}
}
我只是不知道如何防止移动点移动到弧线外。它不能在弧内或弧外,就在它上面。
我想在这里放一个截图,遗憾的是我没有足够的代表。我可以把链接放到这个吗?
也许你有其他方法可以达到这种目的。
这是图像:
红色圆圈是实际状态,绿色圆圈是我想要做的。
EDIT2:根据要求,回购链接:https://github.com/dspoko/RobotArm