3D Robot Arm Kinematics — Forward & Inverse Kinematics
A base-yaw + shoulder + elbow manipulator you can drive two ways: dial the three joint angles directly (forward kinematics) or drag a target sphere through 3D space and watch the arm solve its own joint angles to reach it (inverse kinematics), inside a translucent shell showing exactly how far it can reach.
This 3D companion extends the flat 2-link arm of the original into a genuine spatial manipulator: a base rotates the whole reaching plane around a vertical axis (θ1), a shoulder joint tilts an upper arm up from horizontal (θ2), and an elbow bends the forearm relative to it (θ3), so the end effector sweeps out real x, y and z coordinates rather than staying confined to a single plane. Forward-kinematics mode lets you dial all three angles directly and watch the gripper trace the resulting position; inverse-kinematics mode flips the problem around — drag the red target sphere anywhere in the scene (or use its x/y/z sliders) and the arm solves the shoulder and elbow angles analytically via the law of cosines to reach it, clamping and flagging the pose whenever the target falls outside the arm's physical reach. A translucent double shell shows that reachable workspace directly: an outer hemisphere at the arm's maximum extension (L1+L2) and, since the two links are different lengths, an inner hemisphere marking the dead zone the gripper can never enter no matter how the joints are posed.
A 3-DOF spatial arm (base yaw, shoulder pitch, elbow) driven by forward kinematics or an analytic inverse-kinematics solver, with a live x/y/z and joint-angle readout and a reachable-workspace envelope shell.
3D · Three.js / WebGL renderer · 60 FPS target · runs fully client-side, no install
FAQ
Forward kinematics computes the end-effector position from joint angles you set directly. Inverse kinematics does the reverse: you set a target position and the solver computes the joint angles needed to reach it.
A 2-link arm can only reach points between |L1−L2| and L1+L2 from the shoulder. Drag the target past that outer shell, or into the inner dead-zone shell, and the "reach" readout switches to "clamped" — the arm poses toward the nearest reachable point instead.
The outer shell is the maximum reach (arm fully extended). Because the upper arm and forearm have different lengths, there's also a small inner sphere around the shoulder the gripper can never enter, even fully folded — that's the second shell.
No — a 2-link planar arm generally has an "elbow up" and "elbow down" solution for the same target. This simulator always picks the elbow-down branch for a predictable, non-flickering pose.
The 2D original solves the same forward/inverse kinematics equations but stays in a single flat plane. Here a base-yaw joint rotates that entire plane around a vertical axis, so the arm genuinely occupies 3D space and you can orbit the camera around it.