static transformCartesians3(positions, matrix) {
    //>>includeStart('debug', pragmas.debug);
    Check.defined("positions", positions);
    Check.defined("matrix", matrix);
    //>>includeEnd('debug');

    const transformedPosition = new Cartesian3();
    const transformedPositions = ModelImageryMapping.map(positions, (p) => {
      Matrix4.multiplyByPoint(matrix, p, transformedPosition);
      return transformedPosition;
    });
    return transformedPositions;
  }
Creates a new iterable that provides `Cartesian3` objects that
are created by transforming the `Cartesian3` objects of the
given iterable with the given matrix.

The resulting iterable will always return the same `Cartesian3`
object. Clients should not store and modify this object.

@param {Iterable<Cartesian3>} positions The positions
@param {Matrix4} matrix The matrix
@returns {Iterable<Cartesian3>} The transformed cartesians