function breakMiter(endGeometryNormal, startBottom, endBottom, endTop) {
  const lineDirection = direction(endBottom, startBottom, lineDirectionScratch);

  const dot = Cartesian3.dot(lineDirection, endGeometryNormal);
  if (dot > MITER_BREAK_SMALL || dot < MITER_BREAK_LARGE) {
    const vertexUp = direction(endTop, endBottom, vertexUpScratch);
    const angle =
      dot < MITER_BREAK_LARGE
        ? CesiumMath.PI_OVER_TWO
        : -CesiumMath.PI_OVER_TWO;
    const quaternion = Quaternion.fromAxisAngle(
      vertexUp,
      angle,
      quaternionScratch,
    );
    const rotationMatrix = Matrix3.fromQuaternion(quaternion, matrix3Scratch);
    Matrix3.multiplyByVector(
      rotationMatrix,
      endGeometryNormal,
      endGeometryNormal,
    );
    return true;
  }
  return false;
}
* Build heap-side arrays for positions, interpolated cartographics, and normals from which to compute vertices ***