CoplanarPolygonGeometryLibrary-602752f0.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /* This file is automatically rebuilt by the Cesium build process. */
  2. define(['exports', './Check-da037458', './Cartesian2-2a723276', './Transforms-65aba0a4', './OrientedBoundingBox-a786ab5d'], function (exports, Check, Cartesian2, Transforms, OrientedBoundingBox) { 'use strict';
  3. /**
  4. * @private
  5. */
  6. var CoplanarPolygonGeometryLibrary = {};
  7. var scratchIntersectionPoint = new Cartesian2.Cartesian3();
  8. var scratchXAxis = new Cartesian2.Cartesian3();
  9. var scratchYAxis = new Cartesian2.Cartesian3();
  10. var scratchZAxis = new Cartesian2.Cartesian3();
  11. var obbScratch = new OrientedBoundingBox.OrientedBoundingBox();
  12. CoplanarPolygonGeometryLibrary.validOutline = function(positions) {
  13. //>>includeStart('debug', pragmas.debug);
  14. Check.Check.defined('positions', positions);
  15. //>>includeEnd('debug');
  16. var orientedBoundingBox = OrientedBoundingBox.OrientedBoundingBox.fromPoints(positions, obbScratch);
  17. var halfAxes = orientedBoundingBox.halfAxes;
  18. var xAxis = Transforms.Matrix3.getColumn(halfAxes, 0, scratchXAxis);
  19. var yAxis = Transforms.Matrix3.getColumn(halfAxes, 1, scratchYAxis);
  20. var zAxis = Transforms.Matrix3.getColumn(halfAxes, 2, scratchZAxis);
  21. var xMag = Cartesian2.Cartesian3.magnitude(xAxis);
  22. var yMag = Cartesian2.Cartesian3.magnitude(yAxis);
  23. var zMag = Cartesian2.Cartesian3.magnitude(zAxis);
  24. // If all the points are on a line return undefined because we can't draw a polygon
  25. return !((xMag === 0 && (yMag === 0 || zMag === 0)) || (yMag === 0 && zMag === 0));
  26. };
  27. // call after removeDuplicates
  28. CoplanarPolygonGeometryLibrary.computeProjectTo2DArguments = function(positions, centerResult, planeAxis1Result, planeAxis2Result) {
  29. //>>includeStart('debug', pragmas.debug);
  30. Check.Check.defined('positions', positions);
  31. Check.Check.defined('centerResult', centerResult);
  32. Check.Check.defined('planeAxis1Result', planeAxis1Result);
  33. Check.Check.defined('planeAxis2Result', planeAxis2Result);
  34. //>>includeEnd('debug');
  35. var orientedBoundingBox = OrientedBoundingBox.OrientedBoundingBox.fromPoints(positions, obbScratch);
  36. var halfAxes = orientedBoundingBox.halfAxes;
  37. var xAxis = Transforms.Matrix3.getColumn(halfAxes, 0, scratchXAxis);
  38. var yAxis = Transforms.Matrix3.getColumn(halfAxes, 1, scratchYAxis);
  39. var zAxis = Transforms.Matrix3.getColumn(halfAxes, 2, scratchZAxis);
  40. var xMag = Cartesian2.Cartesian3.magnitude(xAxis);
  41. var yMag = Cartesian2.Cartesian3.magnitude(yAxis);
  42. var zMag = Cartesian2.Cartesian3.magnitude(zAxis);
  43. var min = Math.min(xMag, yMag, zMag);
  44. // If all the points are on a line return undefined because we can't draw a polygon
  45. if ((xMag === 0 && (yMag === 0 || zMag === 0)) || (yMag === 0 && zMag === 0)) {
  46. return false;
  47. }
  48. var planeAxis1;
  49. var planeAxis2;
  50. if (min === yMag || min === zMag) {
  51. planeAxis1 = xAxis;
  52. }
  53. if (min === xMag) {
  54. planeAxis1 = yAxis;
  55. } else if (min === zMag) {
  56. planeAxis2 = yAxis;
  57. }
  58. if (min === xMag || min === yMag) {
  59. planeAxis2 = zAxis;
  60. }
  61. Cartesian2.Cartesian3.normalize(planeAxis1, planeAxis1Result);
  62. Cartesian2.Cartesian3.normalize(planeAxis2, planeAxis2Result);
  63. Cartesian2.Cartesian3.clone(orientedBoundingBox.center, centerResult);
  64. return true;
  65. };
  66. function projectTo2D(position, center, axis1, axis2, result) {
  67. var v = Cartesian2.Cartesian3.subtract(position, center, scratchIntersectionPoint);
  68. var x = Cartesian2.Cartesian3.dot(axis1, v);
  69. var y = Cartesian2.Cartesian3.dot(axis2, v);
  70. return Cartesian2.Cartesian2.fromElements(x, y, result);
  71. }
  72. CoplanarPolygonGeometryLibrary.createProjectPointsTo2DFunction = function(center, axis1, axis2) {
  73. return function(positions) {
  74. var positionResults = new Array(positions.length);
  75. for (var i = 0; i < positions.length; i++) {
  76. positionResults[i] = projectTo2D(positions[i], center, axis1, axis2);
  77. }
  78. return positionResults;
  79. };
  80. };
  81. CoplanarPolygonGeometryLibrary.createProjectPointTo2DFunction = function(center, axis1, axis2) {
  82. return function(position, result) {
  83. return projectTo2D(position, center, axis1, axis2, result);
  84. };
  85. };
  86. exports.CoplanarPolygonGeometryLibrary = CoplanarPolygonGeometryLibrary;
  87. });