Series3D.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /* *
  2. *
  3. * (c) 2010-2020 Torstein Honsi
  4. *
  5. * Extension to the Series object in 3D charts.
  6. *
  7. * License: www.highcharts.com/license
  8. *
  9. * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
  10. *
  11. * */
  12. 'use strict';
  13. import H from '../Globals.js';
  14. import Math3D from '../../Extensions/Math3D.js';
  15. var perspective = Math3D.perspective;
  16. import U from '../Utilities.js';
  17. var addEvent = U.addEvent, pick = U.pick;
  18. import './Series.js';
  19. /* eslint-disable no-invalid-this */
  20. // Wrap the translate method to post-translate points into 3D perspective
  21. addEvent(H.Series, 'afterTranslate', function () {
  22. if (this.chart.is3d()) {
  23. this.translate3dPoints();
  24. }
  25. });
  26. // Translate the plotX, plotY properties and add plotZ.
  27. H.Series.prototype.translate3dPoints = function () {
  28. var series = this, chart = series.chart, zAxis = pick(series.zAxis, chart.options.zAxis[0]), rawPoints = [], rawPoint, projectedPoints, projectedPoint, zValue, i;
  29. for (i = 0; i < series.data.length; i++) {
  30. rawPoint = series.data[i];
  31. if (zAxis && zAxis.translate) {
  32. zValue = zAxis.logarithmic && zAxis.val2lin ?
  33. zAxis.val2lin(rawPoint.z) :
  34. rawPoint.z; // #4562
  35. rawPoint.plotZ = zAxis.translate(zValue);
  36. rawPoint.isInside = rawPoint.isInside ?
  37. (zValue >= zAxis.min &&
  38. zValue <= zAxis.max) :
  39. false;
  40. }
  41. else {
  42. rawPoint.plotZ = 0;
  43. }
  44. rawPoint.axisXpos = rawPoint.plotX;
  45. rawPoint.axisYpos = rawPoint.plotY;
  46. rawPoint.axisZpos = rawPoint.plotZ;
  47. rawPoints.push({
  48. x: rawPoint.plotX,
  49. y: rawPoint.plotY,
  50. z: rawPoint.plotZ
  51. });
  52. }
  53. projectedPoints = perspective(rawPoints, chart, true);
  54. for (i = 0; i < series.data.length; i++) {
  55. rawPoint = series.data[i];
  56. projectedPoint = projectedPoints[i];
  57. rawPoint.plotX = projectedPoint.x;
  58. rawPoint.plotY = projectedPoint.y;
  59. rawPoint.plotZ = projectedPoint.z;
  60. }
  61. };