(*define two points and the axis vectors*)
xhat := {1, 0, 0}
yhat := {0, 1, 0}
zhat := {0, 0, 1}
ohat := {0, 0, 0}
z1 := 1
m1 := {1, 1, z1}
m1p := {1, 1, 0}
m2  := {2, 3, 3}
m2p := {2, 3, z1}

(*This stuff is all to draw a circlular arc in the plane of the first mass *)
h1 := (m1 . zhat)  zhat
p1 := m1 - h1
p1Abs := Norm[p1]
p1cap := p1/p1Abs
c1 := (p1+m1)/4
c1Abs := Norm[c1]
c1cap := c1 / c1Abs
a1 := 0.5
czp1 := (zhat \[Cross] p1cap) \[Cross] c1cap

c1px[t_] := ((c1Abs +a1 Cos[t]) c1cap + a1 Sin[t] czp1) . xhat
c1py[t_] := ((c1Abs +a1 Cos[t]) c1cap + a1 Sin[t] czp1) . yhat
c1pz[t_] := ((c1Abs +a1 Cos[t]) c1cap + a1 Sin[t] czp1) . zhat
angle1End := Pi/4 -0.1
pts1 := Table[{c1px[i], c1py[i], c1pz[i]}, {i, -Pi/5, angle1End, Pi/12}]
arr1 := Table[{c1px[i], c1py[i], c1pz[i]}, {i, angle1End-Pi/12, angle1End , Pi/12}]
pa1 := {c1px[angle1End], c1py[angle1End], c1pz[angle1End]}

(*This stuff is all to draw a circlular arc in the plane of the second mass *)
h2 := (m2 . zhat)  zhat
p2 := m2 - h2
p2Abs := Norm[p2]
p2cap := p2/p2Abs
c2 := (p2+m2)/5
c2Abs := Norm[c2]
c2cap := c2 / c2Abs
a2 := 0.25
czp2 := (zhat \[Cross] p2cap) \[Cross] c2cap

c2px[t_] := (m1 + (c2Abs +a2 Cos[t]) c2cap + a2 Sin[t] czp2) . xhat
c2py[t_] := (m1 + (c2Abs +a2 Cos[t]) c2cap + a2 Sin[t] czp2) . yhat
c2pz[t_] := (m1 + (c2Abs +a2 Cos[t]) c2cap + a2 Sin[t] czp2) . zhat
angle2End := Pi/2
pts2 := Table[{c2px[i], c2py[i], c2pz[i]}, {i, -Pi, angle2End, Pi/12}]
arr2 := Table[{c2px[i], c2py[i], c2pz[i]}, {i, angle2End-Pi/12, angle2End, Pi/12}]
pa2 := {c2px[angle2End], c2py[angle2End], c2pz[angle2End]}

(*Okay: ready to plot all the junk and lable it all *)
Graphics3D[{Arrowheads[.025], Arrow[{ohat, xhat }], Arrow[{ohat, yhat }],Arrow[{ohat, zhat }], Arrow[{ohat, m1}],Arrow[{m1, m2}], Polygon[{ohat, m1, m1p}], Polygon[{m1, m2, m2p}], Text[Subscript[m, 1],m1+{-0.1, -0.1, 0.1}], Text[Subscript[m, 2],m2+{-0.1, -0.1, 0.1}], Line[{m1, m1+zhat/2}],Text[Subscript[θ, 1],m1*0.1+0.1 * zhat],Text[Subscript[θ, 2],m1+ m2*0.03+0.1 * zhat],Text[Subscript[l, 1],m1*0.5+0.1 * zhat],Text[Subscript[l, 2],m1 + m2*0.3
+0.2 * zhat], BSplineCurve[pts1], BSplineCurve[pts2], Arrow[arr1], Arrow[arr2], Text[Subscript[j, 2], pa2], Text[Subscript[j, 1], pa1]}, Boxed -> False]

"