let sub c d =
    assert (Array.length c = Array.length d) ;
    let a = Array.make (Array.length c) None in
      for i = 1 to (Array.length c)-1 do
        match c.(i), d.(i) with
          | None, _
          | _, None -> assert false
          | (Some (x,y,z)), (Some (m,n,o)) ->
              a.(i) <- Some (x-.m, y-.n, z-.o)
      done ;
      a