add computeCartesianPath()