Sidebar.Geometry.SphereGeometry.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. /**
  2. * @author mrdoob / http://mrdoob.com/
  3. */
  4. import {
  5. Math as _Math,
  6. SphereBufferGeometry
  7. } from '../../build/three.module.js';
  8. import { UIRow, UIText, UIInteger, UINumber } from './libs/ui.js';
  9. import { SetGeometryCommand } from './commands/SetGeometryCommand.js';
  10. var SidebarGeometrySphereGeometry = function ( editor, object ) {
  11. var strings = editor.strings;
  12. var container = new UIRow();
  13. var geometry = object.geometry;
  14. var parameters = geometry.parameters;
  15. // radius
  16. var radiusRow = new UIRow();
  17. var radius = new UINumber( parameters.radius ).onChange( update );
  18. radiusRow.add( new UIText( strings.getKey( 'sidebar/geometry/sphere_geometry/radius' ) ).setWidth( '90px' ) );
  19. radiusRow.add( radius );
  20. container.add( radiusRow );
  21. // widthSegments
  22. var widthSegmentsRow = new UIRow();
  23. var widthSegments = new UIInteger( parameters.widthSegments ).setRange( 1, Infinity ).onChange( update );
  24. widthSegmentsRow.add( new UIText( strings.getKey( 'sidebar/geometry/sphere_geometry/widthsegments' ) ).setWidth( '90px' ) );
  25. widthSegmentsRow.add( widthSegments );
  26. container.add( widthSegmentsRow );
  27. // heightSegments
  28. var heightSegmentsRow = new UIRow();
  29. var heightSegments = new UIInteger( parameters.heightSegments ).setRange( 1, Infinity ).onChange( update );
  30. heightSegmentsRow.add( new UIText( strings.getKey( 'sidebar/geometry/sphere_geometry/heightsegments' ) ).setWidth( '90px' ) );
  31. heightSegmentsRow.add( heightSegments );
  32. container.add( heightSegmentsRow );
  33. // phiStart
  34. var phiStartRow = new UIRow();
  35. var phiStart = new UINumber( parameters.phiStart * _Math.RAD2DEG ).setStep( 10 ).onChange( update );
  36. phiStartRow.add( new UIText( strings.getKey( 'sidebar/geometry/sphere_geometry/phistart' ) ).setWidth( '90px' ) );
  37. phiStartRow.add( phiStart );
  38. container.add( phiStartRow );
  39. // phiLength
  40. var phiLengthRow = new UIRow();
  41. var phiLength = new UINumber( parameters.phiLength * _Math.RAD2DEG ).setStep( 10 ).onChange( update );
  42. phiLengthRow.add( new UIText( strings.getKey( 'sidebar/geometry/sphere_geometry/philength' ) ).setWidth( '90px' ) );
  43. phiLengthRow.add( phiLength );
  44. container.add( phiLengthRow );
  45. // thetaStart
  46. var thetaStartRow = new UIRow();
  47. var thetaStart = new UINumber( parameters.thetaStart * _Math.RAD2DEG ).setStep( 10 ).onChange( update );
  48. thetaStartRow.add( new UIText( strings.getKey( 'sidebar/geometry/sphere_geometry/thetastart' ) ).setWidth( '90px' ) );
  49. thetaStartRow.add( thetaStart );
  50. container.add( thetaStartRow );
  51. // thetaLength
  52. var thetaLengthRow = new UIRow();
  53. var thetaLength = new UINumber( parameters.thetaLength * _Math.RAD2DEG ).setStep( 10 ).onChange( update );
  54. thetaLengthRow.add( new UIText( strings.getKey( 'sidebar/geometry/sphere_geometry/thetalength' ) ).setWidth( '90px' ) );
  55. thetaLengthRow.add( thetaLength );
  56. container.add( thetaLengthRow );
  57. //
  58. function update() {
  59. editor.execute( new SetGeometryCommand( editor, object, new SphereBufferGeometry(
  60. radius.getValue(),
  61. widthSegments.getValue(),
  62. heightSegments.getValue(),
  63. phiStart.getValue() * _Math.DEG2RAD,
  64. phiLength.getValue() * _Math.DEG2RAD,
  65. thetaStart.getValue() * _Math.DEG2RAD,
  66. thetaLength.getValue() * _Math.DEG2RAD
  67. ) ) );
  68. }
  69. return container;
  70. };
  71. export { SidebarGeometrySphereGeometry };