{"version":3,"file":"createCircleOutlineGeometry.js","sources":["../../../../Source/Core/CircleOutlineGeometry.js","../../../../Source/WorkersES6/createCircleOutlineGeometry.js"],"sourcesContent":["import Cartesian3 from \"./Cartesian3.js\";\nimport Check from \"./Check.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\nimport EllipseOutlineGeometry from \"./EllipseOutlineGeometry.js\";\nimport Ellipsoid from \"./Ellipsoid.js\";\n\n/**\n * A description of the outline of a circle on the ellipsoid.\n *\n * @alias CircleOutlineGeometry\n * @constructor\n *\n * @param {Object} options Object with the following properties:\n * @param {Cartesian3} options.center The circle's center point in the fixed frame.\n * @param {Number} options.radius The radius in meters.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid the circle will be on.\n * @param {Number} [options.height=0.0] The distance in meters between the circle and the ellipsoid surface.\n * @param {Number} [options.granularity=0.02] The angular distance between points on the circle in radians.\n * @param {Number} [options.extrudedHeight=0.0] The distance in meters between the circle's extruded face and the ellipsoid surface.\n * @param {Number} [options.numberOfVerticalLines=16] Number of lines to draw between the top and bottom of an extruded circle.\n *\n * @exception {DeveloperError} radius must be greater than zero.\n * @exception {DeveloperError} granularity must be greater than zero.\n *\n * @see CircleOutlineGeometry.createGeometry\n * @see Packable\n *\n * @example\n * // Create a circle.\n * const circle = new Cesium.CircleOutlineGeometry({\n * center : Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883),\n * radius : 100000.0\n * });\n * const geometry = Cesium.CircleOutlineGeometry.createGeometry(circle);\n */\nfunction CircleOutlineGeometry(options) {\n options = defaultValue(options, defaultValue.EMPTY_OBJECT);\n const radius = options.radius;\n\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.number(\"radius\", radius);\n //>>includeEnd('debug');\n\n const ellipseGeometryOptions = {\n center: options.center,\n semiMajorAxis: radius,\n semiMinorAxis: radius,\n ellipsoid: options.ellipsoid,\n height: options.height,\n extrudedHeight: options.extrudedHeight,\n granularity: options.granularity,\n numberOfVerticalLines: options.numberOfVerticalLines,\n };\n this._ellipseGeometry = new EllipseOutlineGeometry(ellipseGeometryOptions);\n this._workerName = \"createCircleOutlineGeometry\";\n}\n\n/**\n * The number of elements used to pack the object into an array.\n * @type {Number}\n */\nCircleOutlineGeometry.packedLength = EllipseOutlineGeometry.packedLength;\n\n/**\n * Stores the provided instance into the provided array.\n *\n * @param {CircleOutlineGeometry} value The value to pack.\n * @param {Number[]} array The array to pack into.\n * @param {Number} [startingIndex=0] The index into the array at which to start packing the elements.\n *\n * @returns {Number[]} The array that was packed into\n */\nCircleOutlineGeometry.pack = function (value, array, startingIndex) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"value\", value);\n //>>includeEnd('debug');\n return EllipseOutlineGeometry.pack(\n value._ellipseGeometry,\n array,\n startingIndex\n );\n};\n\nconst scratchEllipseGeometry = new EllipseOutlineGeometry({\n center: new Cartesian3(),\n semiMajorAxis: 1.0,\n semiMinorAxis: 1.0,\n});\nconst scratchOptions = {\n center: new Cartesian3(),\n radius: undefined,\n ellipsoid: Ellipsoid.clone(Ellipsoid.UNIT_SPHERE),\n height: undefined,\n extrudedHeight: undefined,\n granularity: undefined,\n numberOfVerticalLines: undefined,\n semiMajorAxis: undefined,\n semiMinorAxis: undefined,\n};\n\n/**\n * Retrieves an instance from a packed array.\n *\n * @param {Number[]} array The packed array.\n * @param {Number} [startingIndex=0] The starting index of the element to be unpacked.\n * @param {CircleOutlineGeometry} [result] The object into which to store the result.\n * @returns {CircleOutlineGeometry} The modified result parameter or a new CircleOutlineGeometry instance if one was not provided.\n */\nCircleOutlineGeometry.unpack = function (array, startingIndex, result) {\n const ellipseGeometry = EllipseOutlineGeometry.unpack(\n array,\n startingIndex,\n scratchEllipseGeometry\n );\n scratchOptions.center = Cartesian3.clone(\n ellipseGeometry._center,\n scratchOptions.center\n );\n scratchOptions.ellipsoid = Ellipsoid.clone(\n ellipseGeometry._ellipsoid,\n scratchOptions.ellipsoid\n );\n scratchOptions.height = ellipseGeometry._height;\n scratchOptions.extrudedHeight = ellipseGeometry._extrudedHeight;\n scratchOptions.granularity = ellipseGeometry._granularity;\n scratchOptions.numberOfVerticalLines = ellipseGeometry._numberOfVerticalLines;\n\n if (!defined(result)) {\n scratchOptions.radius = ellipseGeometry._semiMajorAxis;\n return new CircleOutlineGeometry(scratchOptions);\n }\n\n scratchOptions.semiMajorAxis = ellipseGeometry._semiMajorAxis;\n scratchOptions.semiMinorAxis = ellipseGeometry._semiMinorAxis;\n result._ellipseGeometry = new EllipseOutlineGeometry(scratchOptions);\n return result;\n};\n\n/**\n * Computes the geometric representation of an outline of a circle on an ellipsoid, including its vertices, indices, and a bounding sphere.\n *\n * @param {CircleOutlineGeometry} circleGeometry A description of the circle.\n * @returns {Geometry|undefined} The computed vertices and indices.\n */\nCircleOutlineGeometry.createGeometry = function (circleGeometry) {\n return EllipseOutlineGeometry.createGeometry(circleGeometry._ellipseGeometry);\n};\nexport default CircleOutlineGeometry;\n","import Cartesian3 from \"../Core/Cartesian3.js\";\nimport CircleOutlineGeometry from \"../Core/CircleOutlineGeometry.js\";\nimport defined from \"../Core/defined.js\";\nimport Ellipsoid from \"../Core/Ellipsoid.js\";\n\nfunction createCircleOutlineGeometry(circleGeometry, offset) {\n if (defined(offset)) {\n circleGeometry = CircleOutlineGeometry.unpack(circleGeometry, offset);\n }\n circleGeometry._ellipseGeometry._center = Cartesian3.clone(\n circleGeometry._ellipseGeometry._center\n );\n circleGeometry._ellipseGeometry._ellipsoid = Ellipsoid.clone(\n circleGeometry._ellipseGeometry._ellipsoid\n );\n return CircleOutlineGeometry.createGeometry(circleGeometry);\n}\nexport default createCircleOutlineGeometry;\n"],"names":["defaultValue","Check","EllipseOutlineGeometry","Cartesian3","Ellipsoid","defined"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EAOA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS,qBAAqB,CAAC,OAAO,EAAE;EACxC,EAAE,OAAO,GAAGA,iBAAY,CAAC,OAAO,EAAEA,iBAAY,CAAC,YAAY,CAAC,CAAC;EAC7D,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAChC;EACA;EACA,EAAEC,kBAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;EACxC;AACA;EACA,EAAE,MAAM,sBAAsB,GAAG;EACjC,IAAI,MAAM,EAAE,OAAO,CAAC,MAAM;EAC1B,IAAI,aAAa,EAAE,MAAM;EACzB,IAAI,aAAa,EAAE,MAAM;EACzB,IAAI,SAAS,EAAE,OAAO,CAAC,SAAS;EAChC,IAAI,MAAM,EAAE,OAAO,CAAC,MAAM;EAC1B,IAAI,cAAc,EAAE,OAAO,CAAC,cAAc;EAC1C,IAAI,WAAW,EAAE,OAAO,CAAC,WAAW;EACpC,IAAI,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;EACxD,GAAG,CAAC;EACJ,EAAE,IAAI,CAAC,gBAAgB,GAAG,IAAIC,6CAAsB,CAAC,sBAAsB,CAAC,CAAC;EAC7E,EAAE,IAAI,CAAC,WAAW,GAAG,6BAA6B,CAAC;EACnD,CAAC;AACD;EACA;EACA;EACA;EACA;EACA,qBAAqB,CAAC,YAAY,GAAGA,6CAAsB,CAAC,YAAY,CAAC;AACzE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,qBAAqB,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE;EACpE;EACA,EAAED,kBAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;EACtC;EACA,EAAE,OAAOC,6CAAsB,CAAC,IAAI;EACpC,IAAI,KAAK,CAAC,gBAAgB;EAC1B,IAAI,KAAK;EACT,IAAI,aAAa;EACjB,GAAG,CAAC;EACJ,CAAC,CAAC;AACF;EACA,MAAM,sBAAsB,GAAG,IAAIA,6CAAsB,CAAC;EAC1D,EAAE,MAAM,EAAE,IAAIC,kBAAU,EAAE;EAC1B,EAAE,aAAa,EAAE,GAAG;EACpB,EAAE,aAAa,EAAE,GAAG;EACpB,CAAC,CAAC,CAAC;EACH,MAAM,cAAc,GAAG;EACvB,EAAE,MAAM,EAAE,IAAIA,kBAAU,EAAE;EAC1B,EAAE,MAAM,EAAE,SAAS;EACnB,EAAE,SAAS,EAAEC,iBAAS,CAAC,KAAK,CAACA,iBAAS,CAAC,WAAW,CAAC;EACnD,EAAE,MAAM,EAAE,SAAS;EACnB,EAAE,cAAc,EAAE,SAAS;EAC3B,EAAE,WAAW,EAAE,SAAS;EACxB,EAAE,qBAAqB,EAAE,SAAS;EAClC,EAAE,aAAa,EAAE,SAAS;EAC1B,EAAE,aAAa,EAAE,SAAS;EAC1B,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,qBAAqB,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE;EACvE,EAAE,MAAM,eAAe,GAAGF,6CAAsB,CAAC,MAAM;EACvD,IAAI,KAAK;EACT,IAAI,aAAa;EACjB,IAAI,sBAAsB;EAC1B,GAAG,CAAC;EACJ,EAAE,cAAc,CAAC,MAAM,GAAGC,kBAAU,CAAC,KAAK;EAC1C,IAAI,eAAe,CAAC,OAAO;EAC3B,IAAI,cAAc,CAAC,MAAM;EACzB,GAAG,CAAC;EACJ,EAAE,cAAc,CAAC,SAAS,GAAGC,iBAAS,CAAC,KAAK;EAC5C,IAAI,eAAe,CAAC,UAAU;EAC9B,IAAI,cAAc,CAAC,SAAS;EAC5B,GAAG,CAAC;EACJ,EAAE,cAAc,CAAC,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC;EAClD,EAAE,cAAc,CAAC,cAAc,GAAG,eAAe,CAAC,eAAe,CAAC;EAClE,EAAE,cAAc,CAAC,WAAW,GAAG,eAAe,CAAC,YAAY,CAAC;EAC5D,EAAE,cAAc,CAAC,qBAAqB,GAAG,eAAe,CAAC,sBAAsB,CAAC;AAChF;EACA,EAAE,IAAI,CAACC,YAAO,CAAC,MAAM,CAAC,EAAE;EACxB,IAAI,cAAc,CAAC,MAAM,GAAG,eAAe,CAAC,cAAc,CAAC;EAC3D,IAAI,OAAO,IAAI,qBAAqB,CAAC,cAAc,CAAC,CAAC;EACrD,GAAG;AACH;EACA,EAAE,cAAc,CAAC,aAAa,GAAG,eAAe,CAAC,cAAc,CAAC;EAChE,EAAE,cAAc,CAAC,aAAa,GAAG,eAAe,CAAC,cAAc,CAAC;EAChE,EAAE,MAAM,CAAC,gBAAgB,GAAG,IAAIH,6CAAsB,CAAC,cAAc,CAAC,CAAC;EACvE,EAAE,OAAO,MAAM,CAAC;EAChB,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA,qBAAqB,CAAC,cAAc,GAAG,UAAU,cAAc,EAAE;EACjE,EAAE,OAAOA,6CAAsB,CAAC,cAAc,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;EAChF,CAAC;;EC9ID,SAAS,2BAA2B,CAAC,cAAc,EAAE,MAAM,EAAE;EAC7D,EAAE,IAAIG,YAAO,CAAC,MAAM,CAAC,EAAE;EACvB,IAAI,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;EAC1E,GAAG;EACH,EAAE,cAAc,CAAC,gBAAgB,CAAC,OAAO,GAAGF,kBAAU,CAAC,KAAK;EAC5D,IAAI,cAAc,CAAC,gBAAgB,CAAC,OAAO;EAC3C,GAAG,CAAC;EACJ,EAAE,cAAc,CAAC,gBAAgB,CAAC,UAAU,GAAGC,iBAAS,CAAC,KAAK;EAC9D,IAAI,cAAc,CAAC,gBAAgB,CAAC,UAAU;EAC9C,GAAG,CAAC;EACJ,EAAE,OAAO,qBAAqB,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;EAC9D;;;;;;;;"}