*/
public class MoveDefenseArm extends CommandGroup {
- double horizontalLimit, height;
+ double x, y;
public static final double ARM_SPEED = 0.6;
- public MoveDefenseArm(double horizontalLimit, double height) {
- this.horizontalLimit = horizontalLimit;
- this.height = height;
+ public MoveDefenseArm(double x, double y) {
+ this.x = x;
+ this.y = y;
double targetArmAngle = calculateTargetArmAngle();
double targetHandAngle = calculateTargetHandAngle();
double handSpeed = ARM_SPEED * targetHandAngle / targetArmAngle;
protected double calculateTargetArmAngle() {
double armAngle;
- armAngle = square(horizontalLimit) + square(height)
+ armAngle = square(x) + square(y)
+ square(Constants.DefenseArm.ARM_LENGTH)
- square(Constants.DefenseArm.HAND_LENGTH);
- armAngle /= 2 * Math.sqrt(square(horizontalLimit) + square(height))
+ armAngle /= 2 * Math.sqrt(square(x) + square(y))
* Constants.DefenseArm.ARM_LENGTH;
armAngle = Math.acos(armAngle);
- armAngle = Math.atan(height / horizontalLimit) - armAngle;
+ armAngle = Math.atan(y / x) - armAngle;
return armAngle;
}
protected double calculateTargetHandAngle() {
double handAngle;
- handAngle = square(horizontalLimit) + square(height)
+ handAngle = square(x) + square(y)
+ square(Constants.DefenseArm.HAND_LENGTH)
- square(Constants.DefenseArm.ARM_LENGTH);
- handAngle /= 2 * Math.sqrt(square(horizontalLimit) + square(height))
+ handAngle /= 2 * Math.sqrt(square(x) + square(y))
* Constants.DefenseArm.HAND_LENGTH;
handAngle = Math.acos(handAngle);
- handAngle = handAngle + 90 - Math.atan(horizontalLimit / height);
+ handAngle = handAngle + 90 - Math.atan(x / y);
return handAngle;
}