PhysSandbox
Classical MechanicsWaves & SoundElectricity & MagnetismOptics & LightGravity & OrbitsLabs
🌙Astronomy & The Sky🌡️Thermodynamics🌍Biophysics, Fluids & Geoscience📐Math Visualization🔧Engineering🧪Chemistry

More from Engineering

Other simulators in this category — or see all 48.

View category →
NewUniversity / research

Bicycle Model & Stanley Controller

Launch Simulator

Kinematic bicycle (rear-axle): δ = θ_e + atan2(k_e·e, v) Stanley path-following law. Pick oval, race-track, lemniscate, sine-road or S-curve and tune k_e, v, L; live cross-track e(t) and steering δ(t).

NewSchool

Stress–Strain & Hooke’s Law

Launch Simulator

Qualitative σ–ε curve: elastic Hooke region, yield, strain hardening, necking, and fracture. Drag strain and tune E, σ_y, σ_u.

NewSchool

Quadcopter 2D (Pitch)

Launch Simulator

Side view: two rotors, PD on thrust split vs pitch — whiteboard quad slice.

NewSchool

Watt Governor (schematic)

Launch Simulator

Flyballs and sleeve vs RPM; steam throttle gap — speed feedback cartoon.

FeaturedSchool

Logic Gate Simulator

Launch Simulator

AND, OR, NOT, NAND, XOR. Drag, drop, connect, see output.

School

Truth Table Generator

Launch Simulator

Build a circuit, auto-generate the truth table.

PhysSandbox

Interactive physics, chemistry, and engineering simulators for students, teachers, and curious minds.

Physics

  • Classical Mechanics
  • Waves & Sound
  • Electricity & Magnetism

Science

  • Optics & Light
  • Gravity & Orbits
  • Astronomy & The Sky

More

  • Thermodynamics
  • Biophysics, Fluids & Geoscience
  • Math Visualization
  • Engineering
  • Chemistry

© 2026 PhysSandbox. Free interactive science simulators.

PrivacyTermsContact
Home/Engineering/3-Link 3D Arm Inverse Kinematics (CCD)

3-Link 3D Arm Inverse Kinematics (CCD)

Continuation of two-link-arm-ik into 3D: 3 revolute joints (yaw + 2 pitches) solved with constrained Cyclic Coordinate Descent. Drag target in 3D or follow a helix / lemniscate / figure-8 trajectory.

3-link 3D arm

2m
2.5m
2m

Target

3.5m
2m
3m

Auto trajectory

60
8°
0.7
0.45

Shortcuts

  • •Drag in canvas to move target horizontally; Shift-drag changes height

Measured values

q₁ (yaw)0.0°
q₂ (shoulder)0.0°
q₃ (elbow)0.0°
IK error0.000m
end-effector0.00, 0.00, 0.00m
max reach6.50m

About this model

A spatial 3R arm with yaw and two pitch joints reaches a 3D target by inverse kinematics. This simulator extends planar two-link IK into three dimensions and solves joint angles with constrained Cyclic Coordinate Descent (CCD): iteratively adjusting one joint at a time to reduce end-effector error while respecting joint limits. Drag the target in 3D or command helix, lemniscate, or figure-8 trajectories and watch the arm track. CCD is a local geometric heuristic — not an analytic closed-form IK, not Jacobian pseudoinverse control, and not collision-aware motion planning. Move the target through reachable and near-singular postures to see convergence behavior and joint-limit interactions.

Who it's for: Robotics, mechatronics, and advanced kinematics courses on iterative inverse kinematics.

Key terms

  • Inverse kinematics
  • Cyclic Coordinate Descent
  • 3R manipulator
  • Joint limits
  • End effector
  • Trajectory tracking

How it works

3-link 3D robot arm with 3 revolute joints — base yaw (about Z), shoulder pitch and elbow pitch — solved with Cyclic Coordinate Descent (CCD) inverse kinematics. CCD walks from the end-effector back to the base, rotating each joint by the angle that would best align its remaining chain with the target — projected onto the joint's allowed hinge axis to honor the kinematic constraints. Drag the pink target around in 3D, run an automatic helix / lemniscate / figure-8 trajectory, and watch the joint angles tracked live. Continuation of `engineering/two-link-arm-ik` into 3D.

Key equations

CCD per joint j (axis a): align proj_a(e−p_j) with proj_a(t−p_j)
δq_j = atan2(∥a×·∥, a··), q_j ← clamp(q_j + step · δq_j, q_lim)

Frequently asked questions

Why use CCD instead of an analytic formula?
A 3R spatial arm with joint limits is awkward for a single closed-form solution. CCD is simple to implement: each joint rotates to pull the end effector toward the target, iterating until the error is small or progress stalls.
Can CCD get stuck?
Yes. As a local method it can stall at joint limits, fold into awkward local minima, or slow near singularities. Re-seeding posture or relaxing limits may be needed — behavior you can provoke by dragging the target aggressively.
What do the helix and figure-8 paths test?
They force continuous tracking through changing orientations and workspace heights, revealing lag, folding of links, and whether the iterative solver keeps up as the target moves.