@anov/3d-ability 0.0.139 → 0.0.141

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/dist/business/Animation/motion/index.js +35 -56
  2. package/dist/business/Animation/motion/index.js.map +1 -1
  3. package/dist/business/Animation/type.js +2 -2
  4. package/dist/business/Area/Fence/FenceBase.js +146 -187
  5. package/dist/business/Area/Fence/FenceBase.js.map +1 -1
  6. package/dist/business/Area/Fence/fence_base_01.js +120 -112
  7. package/dist/business/Area/Fence/fence_base_01.js.map +1 -1
  8. package/dist/business/Area/Fence/fence_feeting_01.js +218 -130
  9. package/dist/business/Area/Fence/fence_feeting_01.js.map +1 -1
  10. package/dist/business/Area/Fence/fence_roll_01.js +140 -130
  11. package/dist/business/Area/Fence/fence_roll_01.js.map +1 -1
  12. package/dist/business/Area/FillArea/FillAreaBase.js +87 -126
  13. package/dist/business/Area/FillArea/FillAreaBase.js.map +1 -1
  14. package/dist/business/Area/FillArea/fillArea_face_01.js +72 -98
  15. package/dist/business/Area/FillArea/fillArea_face_01.js.map +1 -1
  16. package/dist/business/Area/FillArea/fillArea_line_01.js +66 -94
  17. package/dist/business/Area/FillArea/fillArea_line_01.js.map +1 -1
  18. package/dist/business/Area/index.js +267 -483
  19. package/dist/business/Area/index.js.map +1 -1
  20. package/dist/business/Area/tool.js +14 -26
  21. package/dist/business/Area/tool.js.map +1 -1
  22. package/dist/business/Base/ObjectLayer.js +21 -46
  23. package/dist/business/Base/ObjectLayer.js.map +1 -1
  24. package/dist/business/Batch/index.js +189 -234
  25. package/dist/business/Batch/index.js.map +1 -1
  26. package/dist/business/Box/index.js +52 -81
  27. package/dist/business/Box/index.js.map +1 -1
  28. package/dist/business/Cylinder/index.js +51 -79
  29. package/dist/business/Cylinder/index.js.map +1 -1
  30. package/dist/business/Flyline/bubble/CircleBubble.js +1 -9
  31. package/dist/business/Flyline/bubble/CircleBubble.js.map +1 -1
  32. package/dist/business/Flyline/bubble/index.js +7 -21
  33. package/dist/business/Flyline/bubble/index.js.map +1 -1
  34. package/dist/business/Flyline/index.js +96 -162
  35. package/dist/business/Flyline/index.js.map +1 -1
  36. package/dist/business/Flyline/line/ArcLine.js +208 -291
  37. package/dist/business/Flyline/line/ArcLine.js.map +1 -1
  38. package/dist/business/Flyline/line/index.js +8 -22
  39. package/dist/business/Flyline/line/index.js.map +1 -1
  40. package/dist/business/HeatMap/HeatMap.js +380 -467
  41. package/dist/business/HeatMap/HeatMap.js.map +1 -1
  42. package/dist/business/HeatMap/core.js +405 -525
  43. package/dist/business/HeatMap/core.js.map +1 -1
  44. package/dist/business/HeatMap/shader.js +69 -3
  45. package/dist/business/HeatMap/shader.js.map +1 -1
  46. package/dist/business/InfoPanel/index.js +201 -242
  47. package/dist/business/InfoPanel/index.js.map +1 -1
  48. package/dist/business/Line/index.js +55 -88
  49. package/dist/business/Line/index.js.map +1 -1
  50. package/dist/business/Mark/KeyframeAnimation.js +145 -176
  51. package/dist/business/Mark/KeyframeAnimation.js.map +1 -1
  52. package/dist/business/Mark/index.js +196 -294
  53. package/dist/business/Mark/index.js.map +1 -1
  54. package/dist/business/Mark/shader/tanhao.js +36 -3
  55. package/dist/business/Mark/shader/tanhao.js.map +1 -1
  56. package/dist/business/Mark/type.js +1 -1
  57. package/dist/business/MaterialSwitch/MaterialSwitchSystem.js +377 -551
  58. package/dist/business/MaterialSwitch/MaterialSwitchSystem.js.map +1 -1
  59. package/dist/business/MaterialSwitch/inject.js +92 -58
  60. package/dist/business/MaterialSwitch/inject.js.map +1 -1
  61. package/dist/business/MaterialSwitch/shader/finalFade.js +74 -2
  62. package/dist/business/MaterialSwitch/shader/finalFade.js.map +1 -1
  63. package/dist/business/MaterialSwitch/shader/ground.js +95 -16
  64. package/dist/business/MaterialSwitch/shader/ground.js.map +1 -1
  65. package/dist/business/MaterialSwitch/shader/groundBase64.js +9 -3
  66. package/dist/business/MaterialSwitch/shader/groundBase64.js.map +1 -1
  67. package/dist/business/MaterialSwitch/shader/realFade.js +48 -9
  68. package/dist/business/MaterialSwitch/shader/realFade.js.map +1 -1
  69. package/dist/business/Plane/index.js +51 -78
  70. package/dist/business/Plane/index.js.map +1 -1
  71. package/dist/business/Poi/index.d.ts +5 -0
  72. package/dist/business/Poi/index.js +256 -295
  73. package/dist/business/Poi/index.js.map +1 -1
  74. package/dist/business/Poi/link/Cylinder.js +56 -89
  75. package/dist/business/Poi/link/Cylinder.js.map +1 -1
  76. package/dist/business/Poi/link/Pyramid.js +104 -165
  77. package/dist/business/Poi/link/Pyramid.js.map +1 -1
  78. package/dist/business/Poi/link/index.d.ts +1 -1
  79. package/dist/business/Poi/link/index.js +54 -114
  80. package/dist/business/Poi/link/index.js.map +1 -1
  81. package/dist/business/Poi/panel/index.d.ts +124 -0
  82. package/dist/business/Poi/panel/index.js +474 -0
  83. package/dist/business/Poi/panel/index.js.map +1 -0
  84. package/dist/business/Poi/panel/interfaces.d.ts +67 -0
  85. package/dist/business/Poi/panel/interfaces.js +2 -0
  86. package/dist/business/Poi/panel/interfaces.js.map +1 -0
  87. package/dist/business/Poi/panel/utils.d.ts +72 -0
  88. package/dist/business/Poi/panel/utils.js +126 -0
  89. package/dist/business/Poi/panel/utils.js.map +1 -0
  90. package/dist/business/Poi/particle/DoubleCircle.js +71 -107
  91. package/dist/business/Poi/particle/DoubleCircle.js.map +1 -1
  92. package/dist/business/Poi/particle/DynamicCircle.js +75 -111
  93. package/dist/business/Poi/particle/DynamicCircle.js.map +1 -1
  94. package/dist/business/Poi/particle/SingleCircle.js +62 -98
  95. package/dist/business/Poi/particle/SingleCircle.js.map +1 -1
  96. package/dist/business/Poi/particle/index.js +49 -117
  97. package/dist/business/Poi/particle/index.js.map +1 -1
  98. package/dist/business/Poi/shader/circle.js +31 -3
  99. package/dist/business/Poi/shader/circle.js.map +1 -1
  100. package/dist/business/Poi/shader/cylinder.js +37 -3
  101. package/dist/business/Poi/shader/cylinder.js.map +1 -1
  102. package/dist/business/Poi/shader/doubleCircle.js +55 -3
  103. package/dist/business/Poi/shader/doubleCircle.js.map +1 -1
  104. package/dist/business/Poi/shader/dynamicCircle.js +67 -3
  105. package/dist/business/Poi/shader/dynamicCircle.js.map +1 -1
  106. package/dist/business/Poi/title/Border.js +7 -27
  107. package/dist/business/Poi/title/Border.js.map +1 -1
  108. package/dist/business/Poi/title/Ellipse.js +7 -27
  109. package/dist/business/Poi/title/Ellipse.js.map +1 -1
  110. package/dist/business/Poi/title/index.js +208 -292
  111. package/dist/business/Poi/title/index.js.map +1 -1
  112. package/dist/business/Poi/tools.js +22 -19
  113. package/dist/business/Poi/tools.js.map +1 -1
  114. package/dist/business/Poi/types.d.ts +3 -0
  115. package/dist/business/Poi/types.js.map +1 -1
  116. package/dist/business/Sphere/index.js +47 -72
  117. package/dist/business/Sphere/index.js.map +1 -1
  118. package/dist/business/Spline/index.js +190 -245
  119. package/dist/business/Spline/index.js.map +1 -1
  120. package/dist/business/SplitBuilding/index.js +327 -536
  121. package/dist/business/SplitBuilding/index.js.map +1 -1
  122. package/dist/business/SplitBuilding/type.js +2 -2
  123. package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js +218 -275
  124. package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js.map +1 -1
  125. package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js +132 -177
  126. package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js.map +1 -1
  127. package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js +51 -1
  128. package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js.map +1 -1
  129. package/dist/business/TrafficComponents/StreamerTraffic/vertexShader.js +6 -1
  130. package/dist/business/TrafficComponents/StreamerTraffic/vertexShader.js.map +1 -1
  131. package/dist/business/TrafficComponents/base.js +32 -55
  132. package/dist/business/TrafficComponents/base.js.map +1 -1
  133. package/dist/business/TrafficComponents/utils.js +25 -24
  134. package/dist/business/TrafficComponents/utils.js.map +1 -1
  135. package/dist/business/Utils/Curve.js +40 -56
  136. package/dist/business/Utils/Curve.js.map +1 -1
  137. package/dist/business/Utils/constant.js +1 -1
  138. package/dist/business/Utils/constant.js.map +1 -1
  139. package/dist/business/Utils/defineProps.js +13 -14
  140. package/dist/business/Utils/defineProps.js.map +1 -1
  141. package/dist/business/Utils/round-curve.js +127 -153
  142. package/dist/business/Utils/round-curve.js.map +1 -1
  143. package/dist/business/VideoPanel/index.js +258 -319
  144. package/dist/business/VideoPanel/index.js.map +1 -1
  145. package/dist/business/Water/index.js +78 -108
  146. package/dist/business/Water/index.js.map +1 -1
  147. package/dist/business/Water/types.js +1 -1
  148. package/dist/business/Water/types.js.map +1 -1
  149. package/dist/core/Camera/PerspectiveCamera/CameraExpand.js +383 -449
  150. package/dist/core/Camera/PerspectiveCamera/CameraExpand.js.map +1 -1
  151. package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js +107 -142
  152. package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js.map +1 -1
  153. package/dist/core/Controls/FirstViewControl/index.js +84 -96
  154. package/dist/core/Controls/FirstViewControl/index.js.map +1 -1
  155. package/dist/core/Controls/ThirdViewControl/action/input.js +77 -98
  156. package/dist/core/Controls/ThirdViewControl/action/input.js.map +1 -1
  157. package/dist/core/Controls/ThirdViewControl/config/constants.js +1 -1
  158. package/dist/core/Controls/ThirdViewControl/config/constants.js.map +1 -1
  159. package/dist/core/Controls/ThirdViewControl/index.js +19 -28
  160. package/dist/core/Controls/ThirdViewControl/index.js.map +1 -1
  161. package/dist/core/Controls/ThirdViewControl/player/animation.js +126 -155
  162. package/dist/core/Controls/ThirdViewControl/player/animation.js.map +1 -1
  163. package/dist/core/Controls/ThirdViewControl/player/camera.js +47 -63
  164. package/dist/core/Controls/ThirdViewControl/player/camera.js.map +1 -1
  165. package/dist/core/Controls/ThirdViewControl/player/control.js +39 -49
  166. package/dist/core/Controls/ThirdViewControl/player/control.js.map +1 -1
  167. package/dist/core/Controls/ThirdViewControl/player.js +66 -91
  168. package/dist/core/Controls/ThirdViewControl/player.js.map +1 -1
  169. package/dist/core/Controls/base.js +14 -30
  170. package/dist/core/Controls/base.js.map +1 -1
  171. package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js +92 -131
  172. package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js.map +1 -1
  173. package/dist/core/Debug/PerformanceInfo/Performance.js +22 -47
  174. package/dist/core/Debug/PerformanceInfo/Performance.js.map +1 -1
  175. package/dist/core/Light/PointLight/PointLightExt.js +4 -21
  176. package/dist/core/Light/PointLight/PointLightExt.js.map +1 -1
  177. package/dist/core/Material/FinirMaterial/FinirMaterial.js +37 -57
  178. package/dist/core/Material/FinirMaterial/FinirMaterial.js.map +1 -1
  179. package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js +116 -153
  180. package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js.map +1 -1
  181. package/dist/core/Material/PristineGridMaterial/shader/fragment.js +95 -1
  182. package/dist/core/Material/PristineGridMaterial/shader/fragment.js.map +1 -1
  183. package/dist/core/Material/PristineGridMaterial/shader/vertex.js +26 -1
  184. package/dist/core/Material/PristineGridMaterial/shader/vertex.js.map +1 -1
  185. package/dist/core/Material/SurfaceMaterial/index.js +76 -172
  186. package/dist/core/Material/SurfaceMaterial/index.js.map +1 -1
  187. package/dist/core/Material/decorators.js +6 -11
  188. package/dist/core/Material/decorators.js.map +1 -1
  189. package/dist/core/PostEffects/addACESFilmicToneMappingPass.js +16 -12
  190. package/dist/core/PostEffects/addACESFilmicToneMappingPass.js.map +1 -1
  191. package/dist/core/PostEffects/addBrightnessContrastPass.js +17 -13
  192. package/dist/core/PostEffects/addBrightnessContrastPass.js.map +1 -1
  193. package/dist/core/PostEffects/bloomPass.js +17 -10
  194. package/dist/core/PostEffects/bloomPass.js.map +1 -1
  195. package/dist/core/PostEffects/bloomSelect.js +60 -43
  196. package/dist/core/PostEffects/bloomSelect.js.map +1 -1
  197. package/dist/core/PostEffects/colorifyPass.js +17 -13
  198. package/dist/core/PostEffects/colorifyPass.js.map +1 -1
  199. package/dist/core/PostEffects/index.js +28 -22
  200. package/dist/core/PostEffects/index.js.map +1 -1
  201. package/dist/core/PostEffects/outlinePass.js +37 -50
  202. package/dist/core/PostEffects/outlinePass.js.map +1 -1
  203. package/dist/core/PostEffects/postprocessing.js +14 -12
  204. package/dist/core/PostEffects/postprocessing.js.map +1 -1
  205. package/dist/core/PostEffects/saoPass.js +15 -10
  206. package/dist/core/PostEffects/saoPass.js.map +1 -1
  207. package/dist/core/PostEffects/shader/colorify.js +22 -3
  208. package/dist/core/PostEffects/shader/colorify.js.map +1 -1
  209. package/dist/core/PostEffects/shader/gammaCorrectionShader.js +27 -3
  210. package/dist/core/PostEffects/shader/gammaCorrectionShader.js.map +1 -1
  211. package/dist/core/PostEffects/shader/mapping.js +66 -3
  212. package/dist/core/PostEffects/shader/mapping.js.map +1 -1
  213. package/dist/core/PostEffects/shader/thermalMaging.js +28 -3
  214. package/dist/core/PostEffects/shader/thermalMaging.js.map +1 -1
  215. package/dist/core/SceneEffect/grow/grow.js +85 -101
  216. package/dist/core/SceneEffect/grow/grow.js.map +1 -1
  217. package/dist/core/SceneEffect/grow/style_down.js +60 -77
  218. package/dist/core/SceneEffect/grow/style_down.js.map +1 -1
  219. package/dist/core/SceneEffect/grow/style_up.js +64 -81
  220. package/dist/core/SceneEffect/grow/style_up.js.map +1 -1
  221. package/dist/core/SceneEffect/grow/type.js +2 -2
  222. package/dist/core/SceneEffect/grow/type.js.map +1 -1
  223. package/dist/core/WeatherSystem/DynamicWeatherSystem.js +51 -76
  224. package/dist/core/WeatherSystem/DynamicWeatherSystem.js.map +1 -1
  225. package/dist/core/WeatherSystem/hdr/index.js +69 -105
  226. package/dist/core/WeatherSystem/hdr/index.js.map +1 -1
  227. package/dist/core/WeatherSystem/index.js +77 -124
  228. package/dist/core/WeatherSystem/index.js.map +1 -1
  229. package/dist/core/WeatherSystem/objects/fog/index.js +52 -80
  230. package/dist/core/WeatherSystem/objects/fog/index.js.map +1 -1
  231. package/dist/core/WeatherSystem/objects/rain/index.js +72 -84
  232. package/dist/core/WeatherSystem/objects/rain/index.js.map +1 -1
  233. package/dist/core/WeatherSystem/objects/rain/lineRain.js +88 -118
  234. package/dist/core/WeatherSystem/objects/rain/lineRain.js.map +1 -1
  235. package/dist/core/WeatherSystem/objects/rain/plane.js +116 -146
  236. package/dist/core/WeatherSystem/objects/rain/plane.js.map +1 -1
  237. package/dist/core/WeatherSystem/objects/rain/point.js +100 -148
  238. package/dist/core/WeatherSystem/objects/rain/point.js.map +1 -1
  239. package/dist/core/WeatherSystem/objects/sky/cloud.js +71 -104
  240. package/dist/core/WeatherSystem/objects/sky/cloud.js.map +1 -1
  241. package/dist/core/WeatherSystem/objects/sky/index.js +66 -84
  242. package/dist/core/WeatherSystem/objects/sky/index.js.map +1 -1
  243. package/dist/core/WeatherSystem/objects/sky/outline.js +25 -45
  244. package/dist/core/WeatherSystem/objects/sky/outline.js.map +1 -1
  245. package/dist/core/WeatherSystem/shaders/cloud.js +74 -3
  246. package/dist/core/WeatherSystem/shaders/cloud.js.map +1 -1
  247. package/dist/core/WeatherSystem/shaders/fog.js +103 -3
  248. package/dist/core/WeatherSystem/shaders/fog.js.map +1 -1
  249. package/dist/core/WeatherSystem/shaders/rain.js +206 -7
  250. package/dist/core/WeatherSystem/shaders/rain.js.map +1 -1
  251. package/dist/core/WeatherSystem/shaders/sky.js +87 -3
  252. package/dist/core/WeatherSystem/shaders/sky.js.map +1 -1
  253. package/dist/core/WeatherSystem/sky/index.js +104 -135
  254. package/dist/core/WeatherSystem/sky/index.js.map +1 -1
  255. package/dist/core/WeatherSystem/utils/constant.js +44 -38
  256. package/dist/core/WeatherSystem/utils/constant.js.map +1 -1
  257. package/dist/core/WeatherSystem/utils/math.js +18 -25
  258. package/dist/core/WeatherSystem/utils/math.js.map +1 -1
  259. package/dist/core/WeatherSystem/utils/type.js +1 -1
  260. package/dist/core/WeatherSystem/utils/type.js.map +1 -1
  261. package/dist/core/WeatherSystem/weather/index.js +96 -141
  262. package/dist/core/WeatherSystem/weather/index.js.map +1 -1
  263. package/dist/utils/index.js +1 -1
  264. package/dist/utils/index.js.map +1 -1
  265. package/package.json +3 -3
@@ -1,23 +1,6 @@
1
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
3
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
5
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
6
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
7
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
8
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
9
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
10
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
12
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
13
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
14
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
15
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
16
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
17
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
18
1
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
20
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
2
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
3
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
21
4
  /* eslint-disable no-void */
22
5
 
23
6
  import { BoxGeometry, BufferGeometry, Color, CurvePath, ExtrudeGeometry, Float32BufferAttribute, Group, LineCurve3, Mesh, MeshBasicMaterial, QuadraticBezierCurve3, Quaternion, ShaderMaterial, Shape, Vector3 } from '@anov/3d-core';
@@ -30,28 +13,25 @@ import { BoxGeometry, BufferGeometry, Color, CurvePath, ExtrudeGeometry, Float32
30
13
  * @param height
31
14
  * @param depth
32
15
  */
33
- var createBoxGeometryByPoints = function createBoxGeometryByPoints(a, b) {
34
- var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 30;
35
- var depth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 10;
36
- var material = arguments.length > 4 ? arguments[4] : undefined;
37
- var width = a.distanceTo(b);
38
- var box = new BoxGeometry(width, height, depth);
39
- var currentMaterial = new MeshBasicMaterial({
16
+ const createBoxGeometryByPoints = (a, b, height = 30, depth = 10, material) => {
17
+ const width = a.distanceTo(b);
18
+ const box = new BoxGeometry(width, height, depth);
19
+ let currentMaterial = new MeshBasicMaterial({
40
20
  color: new Color('#fff')
41
21
  });
42
22
  if (material) currentMaterial = material;
43
- var mesh = new Mesh(box, currentMaterial);
44
- var midpoint = new Vector3().addVectors(a, b).multiplyScalar(0.5);
23
+ const mesh = new Mesh(box, currentMaterial);
24
+ const midpoint = new Vector3().addVectors(a, b).multiplyScalar(0.5);
45
25
  mesh.position.x = midpoint.x;
46
26
  mesh.position.y = midpoint.y + height / 2;
47
27
  mesh.position.z = midpoint.z;
48
- var direction = new Vector3();
28
+ const direction = new Vector3();
49
29
  direction.subVectors(a, b);
50
30
  direction.normalize();
51
- var axis = new Vector3(0, 1, 0); // axis
52
- var angle = new Vector3(1, 0, 0).angleTo(direction);
53
- var quaternion = new Quaternion().setFromAxisAngle(axis, angle);
54
- var newDirection = new Vector3(1, 0, 0).applyQuaternion(quaternion);
31
+ const axis = new Vector3(0, 1, 0); // axis
32
+ const angle = new Vector3(1, 0, 0).angleTo(direction);
33
+ const quaternion = new Quaternion().setFromAxisAngle(axis, angle);
34
+ const newDirection = new Vector3(1, 0, 0).applyQuaternion(quaternion);
55
35
  if (!newDirection.angleTo(direction)) mesh.rotateOnAxis(axis, angle);else mesh.rotateOnAxis(axis, -angle);
56
36
  return mesh;
57
37
  };
@@ -62,10 +42,8 @@ var createBoxGeometryByPoints = function createBoxGeometryByPoints(a, b) {
62
42
  * @param h
63
43
  * @returns
64
44
  */
65
- var rectangle = function rectangle() {
66
- var w = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0.1;
67
- var h = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 50;
68
- var shape = new Shape();
45
+ const rectangle = (w = 0.1, h = 50) => {
46
+ const shape = new Shape();
69
47
  shape.moveTo(0, 0);
70
48
  shape.lineTo(0, w);
71
49
  shape.lineTo(h, w);
@@ -73,7 +51,7 @@ var rectangle = function rectangle() {
73
51
  shape.lineTo(0, 0);
74
52
  return shape;
75
53
  };
76
- var defMaterial = new ShaderMaterial({
54
+ const defMaterial = new ShaderMaterial({
77
55
  uniforms: {
78
56
  u_color: {
79
57
  value: new Color('#fab73f')
@@ -85,8 +63,25 @@ var defMaterial = new ShaderMaterial({
85
63
  value: 1.0
86
64
  }
87
65
  },
88
- vertexShader: "\n uniform float u_height;\n uniform float u_speed;\n varying float v_opacity;\n\n void main() {\n v_opacity = mix(1.0, 0.0, position.y / u_height);\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }",
89
- fragmentShader: "\n uniform vec3 u_color;\n uniform float u_opacity;\n varying float v_opacity;\n\n void main() {\n gl_FragColor = vec4(u_color, 1.0);\n }\n ",
66
+ vertexShader: `
67
+ uniform float u_height;
68
+ uniform float u_speed;
69
+ varying float v_opacity;
70
+
71
+ void main() {
72
+ v_opacity = mix(1.0, 0.0, position.y / u_height);
73
+
74
+ gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
75
+ }`,
76
+ fragmentShader: `
77
+ uniform vec3 u_color;
78
+ uniform float u_opacity;
79
+ varying float v_opacity;
80
+
81
+ void main() {
82
+ gl_FragColor = vec4(u_color, 1.0);
83
+ }
84
+ `,
90
85
  transparent: true,
91
86
  side: 2,
92
87
  depthTest: false
@@ -101,137 +96,120 @@ var defMaterial = new ShaderMaterial({
101
96
  * @param close
102
97
  * @returns
103
98
  */
104
- var createCurve = function createCurve(points) {
105
- var radius = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 20;
106
- var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 50;
107
- var close = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
108
- var material = arguments.length > 4 ? arguments[4] : undefined;
99
+ const createCurve = (points, radius = 20, height = 50, close = false, material) => {
109
100
  if (!material) material = defMaterial;
110
- var curve = new CurvePath();
111
- var shape = rectangle(0.1, height);
101
+ const curve = new CurvePath();
102
+ const shape = rectangle(0.1, height);
112
103
  if (points.length < 2) throw new Error('At least two points are required to create a curve');
113
104
  if (points.length === 2) {
114
- var line = new LineCurve3(points[0], points[1]);
105
+ const line = new LineCurve3(points[0], points[1]);
115
106
  curve.curves.push(line);
116
107
  return [curve];
117
108
  }
118
- var lines = [];
119
- for (var i = 0; i < points.length - 1; i++) {
109
+ const lines = [];
110
+ for (let i = 0; i < points.length - 1; i++) {
120
111
  if (i === 0) {
121
- var dir = points[0].clone().sub(points[1]).normalize();
122
- var realEndPoints = points[1].clone().add(dir.multiplyScalar(radius));
123
- var firstPoint = points[0];
112
+ const dir = points[0].clone().sub(points[1]).normalize();
113
+ const realEndPoints = points[1].clone().add(dir.multiplyScalar(radius));
114
+ let firstPoint = points[0];
124
115
  if (close) firstPoint = points[0].clone().add(points[1].clone().sub(points[0]).normalize().multiplyScalar(radius));
125
116
  lines.push(new LineCurve3(firstPoint, realEndPoints));
126
117
  } else if (i === points.length - 1) {
127
118
  //
128
119
  } else {
129
- var dir1 = points[i - 1].clone().sub(points[i]).normalize();
130
- var dir2 = points[i + 1].clone().sub(points[i]).normalize();
131
- var dir3 = points[i].clone().sub(points[i + 1]).normalize();
132
- var nextDir1 = dir2.clone();
133
- var nextDir2 = points[i].clone().sub(points[i + 1]).normalize();
134
- var p1 = points[i].clone().add(dir1.multiplyScalar(radius));
135
- var p2 = points[i].clone();
136
- var p3 = points[i].clone().add(dir2.multiplyScalar(radius));
137
- var beziercurve = new QuadraticBezierCurve3(p1, p2, p3);
138
- var realLastPoints = points[i].clone().add(nextDir1.multiplyScalar(radius));
139
- var _realEndPoints = points[i + 1].clone().add(nextDir2.multiplyScalar(radius));
120
+ const dir1 = points[i - 1].clone().sub(points[i]).normalize();
121
+ const dir2 = points[i + 1].clone().sub(points[i]).normalize();
122
+ const dir3 = points[i].clone().sub(points[i + 1]).normalize();
123
+ const nextDir1 = dir2.clone();
124
+ const nextDir2 = points[i].clone().sub(points[i + 1]).normalize();
125
+ const p1 = points[i].clone().add(dir1.multiplyScalar(radius));
126
+ const p2 = points[i].clone();
127
+ const p3 = points[i].clone().add(dir2.multiplyScalar(radius));
128
+ const beziercurve = new QuadraticBezierCurve3(p1, p2, p3);
129
+ const realLastPoints = points[i].clone().add(nextDir1.multiplyScalar(radius));
130
+ const realEndPoints = points[i + 1].clone().add(nextDir2.multiplyScalar(radius));
140
131
  lines.push(beziercurve);
141
- lines.push(new LineCurve3(realLastPoints, i + 1 === points.length - 1 ? close ? points[i + 1].clone().add(dir3.multiplyScalar(radius)) : points[i + 1] : _realEndPoints));
132
+ lines.push(new LineCurve3(realLastPoints, i + 1 === points.length - 1 ? close ? points[i + 1].clone().add(dir3.multiplyScalar(radius)) : points[i + 1] : realEndPoints));
142
133
  }
143
134
  }
144
135
  if (close) {
145
136
  // first point
146
- var _dir = points[1].clone().sub(points[0]).normalize();
147
- var _dir2 = points[points.length - 1].clone().sub(points[0]).normalize();
148
- var _p = points[0].clone().add(_dir.multiplyScalar(radius));
149
- var _p2 = points[0];
150
- var _p3 = points[0].clone().add(_dir2.multiplyScalar(radius));
151
- var _beziercurve = new QuadraticBezierCurve3(_p3, _p2, _p);
137
+ const dir1 = points[1].clone().sub(points[0]).normalize();
138
+ const dir2 = points[points.length - 1].clone().sub(points[0]).normalize();
139
+ const p1 = points[0].clone().add(dir1.multiplyScalar(radius));
140
+ const p2 = points[0];
141
+ const p3 = points[0].clone().add(dir2.multiplyScalar(radius));
142
+ const beziercurve = new QuadraticBezierCurve3(p3, p2, p1);
152
143
 
153
144
  // last point
154
- var _dir3 = points[0].clone().sub(points[points.length - 1]).normalize();
155
- var dir4 = points[points.length - 2].clone().sub(points[points.length - 1]).normalize();
156
- var p4 = points[points.length - 1].clone().add(_dir3.multiplyScalar(radius));
157
- var p5 = points[points.length - 1];
158
- var p6 = points[points.length - 1].clone().add(dir4.multiplyScalar(radius));
159
- var beziercurve2 = new QuadraticBezierCurve3(p6, p5, p4);
145
+ const dir3 = points[0].clone().sub(points[points.length - 1]).normalize();
146
+ const dir4 = points[points.length - 2].clone().sub(points[points.length - 1]).normalize();
147
+ const p4 = points[points.length - 1].clone().add(dir3.multiplyScalar(radius));
148
+ const p5 = points[points.length - 1];
149
+ const p6 = points[points.length - 1].clone().add(dir4.multiplyScalar(radius));
150
+ const beziercurve2 = new QuadraticBezierCurve3(p6, p5, p4);
160
151
 
161
152
  // last line
162
- var laseLine = new LineCurve3(p4, _p3);
153
+ const laseLine = new LineCurve3(p4, p3);
163
154
  lines.push(beziercurve2);
164
155
  lines.push(laseLine);
165
- lines.push(_beziercurve);
156
+ lines.push(beziercurve);
166
157
  }
167
- var group = new Group();
168
- lines.forEach(function (line) {
158
+ const group = new Group();
159
+ lines.forEach(line => {
169
160
  curve.curves.push(line);
170
161
  if (line.type === 'QuadraticBezierCurve3') {
171
- var extrudeSettings = {
162
+ const extrudeSettings = {
172
163
  steps: 100,
173
164
  bevelEnabled: false,
174
165
  extrudePath: line
175
166
  };
176
- var geometry = new ExtrudeGeometry(shape, extrudeSettings);
177
- var arcWall = new Mesh(geometry, material);
167
+ const geometry = new ExtrudeGeometry(shape, extrudeSettings);
168
+ const arcWall = new Mesh(geometry, material);
178
169
  arcWall.translateY(arcWall.position.y + height);
179
170
  if (radius) group.add(arcWall);
180
171
  } else {
181
- var mesh = createBoxGeometryByPoints(line.v1, line.v2, height, 0.1, material);
172
+ const mesh = createBoxGeometryByPoints(line.v1, line.v2, height, 0.1, material);
182
173
  group.add(mesh);
183
174
  }
184
175
  });
185
176
  return [curve, group];
186
177
  };
187
- var RoundLineGeometry = /*#__PURE__*/function (_BufferGeometry) {
188
- _inherits(RoundLineGeometry, _BufferGeometry);
189
- var _super = _createSuper(RoundLineGeometry);
190
- function RoundLineGeometry(points, option) {
178
+ class RoundLineGeometry extends BufferGeometry {
179
+ constructor(points, option) {
191
180
  var _option$radius;
192
- var _this;
193
- _classCallCheck(this, RoundLineGeometry);
194
- _this = _super.call(this);
195
- _defineProperty(_assertThisInitialized(_this), "curve", void 0);
196
- var _createCurve = createCurve(points, (_option$radius = option.radius) !== null && _option$radius !== void 0 ? _option$radius : 20, void 0, option.close || false),
197
- _createCurve2 = _slicedToArray(_createCurve, 1),
198
- curve = _createCurve2[0];
199
- var currentPoints = curve.getPoints(option.pointNum || 1000);
200
- var geometry = new BufferGeometry();
181
+ super();
182
+ _defineProperty(this, "curve", void 0);
183
+ const [curve] = createCurve(points, (_option$radius = option.radius) !== null && _option$radius !== void 0 ? _option$radius : 20, void 0, option.close || false);
184
+ const currentPoints = curve.getPoints(option.pointNum || 1000);
185
+ const geometry = new BufferGeometry();
201
186
  geometry.setFromPoints(currentPoints);
202
- _this.curve = curve;
203
- return _this;
187
+ this.curve = curve;
204
188
  }
205
- return _createClass(RoundLineGeometry);
206
- }(BufferGeometry);
207
- var createRoundLineWallMesh = function createRoundLineWallMesh(points, option, material) {
189
+ }
190
+ const createRoundLineWallMesh = (points, option, material) => {
208
191
  var _option$radius2, _option$height;
209
- var _createCurve3 = createCurve(points, (_option$radius2 = option.radius) !== null && _option$radius2 !== void 0 ? _option$radius2 : 20, (_option$height = option.height) !== null && _option$height !== void 0 ? _option$height : 50, option.close || false, material),
210
- _createCurve4 = _slicedToArray(_createCurve3, 2),
211
- _ = _createCurve4[0],
212
- group = _createCurve4[1];
192
+ const [_, group] = createCurve(points, (_option$radius2 = option.radius) !== null && _option$radius2 !== void 0 ? _option$radius2 : 20, (_option$height = option.height) !== null && _option$height !== void 0 ? _option$height : 50, option.close || false, material);
213
193
  return group;
214
194
  };
215
- var createRoundedClosedCurve = function createRoundedClosedCurve(points) {
216
- var radius = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 20;
217
- var closed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
218
- var curves = [];
219
- var total = points.length;
220
- var lastP2 = null;
195
+ const createRoundedClosedCurve = (points, radius = 20, closed = true) => {
196
+ const curves = [];
197
+ const total = points.length;
198
+ let lastP2 = null;
221
199
  // 👇 避免 radius = 0 时直线退化问题
222
- var safeRadius = radius === 0 ? 0.0001 : radius;
223
- for (var i = 0; i < total; i++) {
224
- var curr = points[i];
225
- var hasPrev = i > 0;
226
- var hasNext = i < total - 1;
200
+ const safeRadius = radius === 0 ? 0.0001 : radius;
201
+ for (let i = 0; i < total; i++) {
202
+ const curr = points[i];
203
+ const hasPrev = i > 0;
204
+ const hasNext = i < total - 1;
227
205
  if (hasPrev && hasNext || closed) {
228
- var pPrev = points[(i - 1 + total) % total];
229
- var pNext = points[(i + 1) % total];
230
- var v1 = curr.clone().sub(pPrev).normalize();
231
- var v2 = pNext.clone().sub(curr).normalize();
232
- var tangentLength = Math.min(safeRadius, curr.distanceTo(pPrev) / 2, curr.distanceTo(pNext) / 2);
233
- var p1 = curr.clone().sub(v1.clone().multiplyScalar(tangentLength));
234
- var p2 = curr.clone().add(v2.clone().multiplyScalar(tangentLength));
206
+ const pPrev = points[(i - 1 + total) % total];
207
+ const pNext = points[(i + 1) % total];
208
+ const v1 = curr.clone().sub(pPrev).normalize();
209
+ const v2 = pNext.clone().sub(curr).normalize();
210
+ const tangentLength = Math.min(safeRadius, curr.distanceTo(pPrev) / 2, curr.distanceTo(pNext) / 2);
211
+ const p1 = curr.clone().sub(v1.clone().multiplyScalar(tangentLength));
212
+ const p2 = curr.clone().add(v2.clone().multiplyScalar(tangentLength));
235
213
  if (lastP2) curves.push(new LineCurve3(lastP2.clone(), p1.clone()));else if (!closed && i === 1) curves.push(new LineCurve3(points[0].clone(), p1.clone()));
236
214
  curves.push(new QuadraticBezierCurve3(p1.clone(), curr.clone(), p2.clone()));
237
215
  lastP2 = p2;
@@ -240,19 +218,17 @@ var createRoundedClosedCurve = function createRoundedClosedCurve(points) {
240
218
  }
241
219
  }
242
220
  if (closed && lastP2) {
243
- var first = points[0];
244
- var prev = points[points.length - 1];
245
- var next = points[1];
246
- var _v = first.clone().sub(prev).normalize();
247
- var _v2 = next.clone().sub(first).normalize();
248
- var _tangentLength = Math.min(safeRadius, first.distanceTo(prev) / 2, first.distanceTo(next) / 2);
249
- var firstP1 = first.clone().sub(_v.clone().multiplyScalar(_tangentLength));
221
+ const first = points[0];
222
+ const prev = points[points.length - 1];
223
+ const next = points[1];
224
+ const v1 = first.clone().sub(prev).normalize();
225
+ const v2 = next.clone().sub(first).normalize();
226
+ const tangentLength = Math.min(safeRadius, first.distanceTo(prev) / 2, first.distanceTo(next) / 2);
227
+ const firstP1 = first.clone().sub(v1.clone().multiplyScalar(tangentLength));
250
228
  curves.push(new LineCurve3(lastP2.clone(), firstP1.clone()));
251
229
  }
252
- var path = new CurvePath();
253
- curves.forEach(function (c) {
254
- return path.add(c);
255
- });
230
+ const path = new CurvePath();
231
+ curves.forEach(c => path.add(c));
256
232
  return path;
257
233
  // for (let i = 0; i < total; i++) {
258
234
  // const prev = points[(i - 1 + total) % total]
@@ -290,29 +266,27 @@ var createRoundedClosedCurve = function createRoundedClosedCurve(points) {
290
266
  // curves.forEach(c => path.add(c))
291
267
  // return path
292
268
  };
293
- var createRoundedClosedWallMesh = function createRoundedClosedWallMesh(points, option, material) {
269
+ const createRoundedClosedWallMesh = (points, option, material) => {
294
270
  if (!material) material = defMaterial;
295
271
  // const shape = rectangle(0.1, option.height)
296
272
  if (points.length < 2) throw new Error('At least two points are required to create a curve');
297
- var curvePath = createRoundedClosedCurve(points, option.radius, option.close);
298
- var divisions = 1000;
273
+ const curvePath = createRoundedClosedCurve(points, option.radius, option.close);
274
+ const divisions = 1000;
299
275
  // const upVec = new Vector3(0, 1, 0)
300
- var bottomPoints = curvePath.getSpacedPoints(divisions);
301
- var topPoints = bottomPoints.map(function (p) {
302
- return new Vector3(p.x, p.y + option.height, p.z);
303
- });
276
+ const bottomPoints = curvePath.getSpacedPoints(divisions);
277
+ const topPoints = bottomPoints.map(p => new Vector3(p.x, p.y + option.height, p.z));
304
278
 
305
279
  // 构建侧面 geometry
306
- var sideGeometry = new BufferGeometry();
307
- var positions = [];
308
- var indices = [];
309
- for (var i = 0; i < divisions; i++) {
310
- var b0 = bottomPoints[i];
311
- var b1 = bottomPoints[i + 1];
312
- var t0 = topPoints[i];
313
- var t1 = topPoints[i + 1];
280
+ const sideGeometry = new BufferGeometry();
281
+ const positions = [];
282
+ const indices = [];
283
+ for (let i = 0; i < divisions; i++) {
284
+ const b0 = bottomPoints[i];
285
+ const b1 = bottomPoints[i + 1];
286
+ const t0 = topPoints[i];
287
+ const t1 = topPoints[i + 1];
314
288
  if (!b1 || !t1) break;
315
- var baseIndex = positions.length / 3;
289
+ const baseIndex = positions.length / 3;
316
290
  positions.push(b0.x, b0.y, b0.z); // 0
317
291
  positions.push(b1.x, b1.y, b1.z); // 1
318
292
  positions.push(t1.x, t1.y, t1.z); // 2
@@ -329,7 +303,7 @@ var createRoundedClosedWallMesh = function createRoundedClosedWallMesh(points, o
329
303
  // const sideMaterial = new THREE.MeshNormalMaterial({
330
304
  // side: THREE.DoubleSide,
331
305
  // })
332
- var sideMesh = new Mesh(sideGeometry, material);
306
+ const sideMesh = new Mesh(sideGeometry, material);
333
307
  // const extrudeSettings = {
334
308
  // steps: 200,
335
309
  // bevelEnabled: false,
@@ -1 +1 @@
1
- {"version":3,"names":["BoxGeometry","BufferGeometry","Color","CurvePath","ExtrudeGeometry","Float32BufferAttribute","Group","LineCurve3","Mesh","MeshBasicMaterial","QuadraticBezierCurve3","Quaternion","ShaderMaterial","Shape","Vector3","createBoxGeometryByPoints","a","b","height","arguments","length","undefined","depth","material","width","distanceTo","box","currentMaterial","color","mesh","midpoint","addVectors","multiplyScalar","position","x","y","z","direction","subVectors","normalize","axis","angle","angleTo","quaternion","setFromAxisAngle","newDirection","applyQuaternion","rotateOnAxis","rectangle","w","h","shape","moveTo","lineTo","defMaterial","uniforms","u_color","value","u_height","u_opacity","vertexShader","fragmentShader","transparent","side","depthTest","createCurve","points","radius","close","curve","Error","line","curves","push","lines","i","dir","clone","sub","realEndPoints","add","firstPoint","dir1","dir2","dir3","nextDir1","nextDir2","p1","p2","p3","beziercurve","realLastPoints","dir4","p4","p5","p6","beziercurve2","laseLine","group","forEach","type","extrudeSettings","steps","bevelEnabled","extrudePath","geometry","arcWall","translateY","v1","v2","RoundLineGeometry","_BufferGeometry","_inherits","_super","_createSuper","option","_option$radius","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_createCurve","_createCurve2","_slicedToArray","currentPoints","getPoints","pointNum","setFromPoints","_createClass","createRoundLineWallMesh","_option$radius2","_option$height","_createCurve3","_createCurve4","_","createRoundedClosedCurve","closed","total","lastP2","safeRadius","curr","hasPrev","hasNext","pPrev","pNext","tangentLength","Math","min","first","prev","next","firstP1","path","c","createRoundedClosedWallMesh","curvePath","divisions","bottomPoints","getSpacedPoints","topPoints","map","p","sideGeometry","positions","indices","b0","b1","t0","t1","baseIndex","setAttribute","setIndex","computeVertexNormals","sideMesh"],"sources":["../../../src/business/Utils/round-curve.ts"],"sourcesContent":["/* eslint-disable no-void */\nimport type { Curve } from '@anov/3d-core'\nimport { BoxGeometry, BufferGeometry, Color, CurvePath, ExtrudeGeometry, Float32BufferAttribute, Group, LineCurve3, Mesh, MeshBasicMaterial, MeshNormalMaterial, QuadraticBezierCurve3, Quaternion, ShaderMaterial, Shape, Vector3 } from '@anov/3d-core'\n\nexport interface TextureParamsType {\n texture?: string\n repeatX?: number\n repeatY?: number\n wrapS?: number\n wrapT?: number\n}\n\n/**\n * TODO: 参数优化\n * create box geometry by two points\n * just provide data not create mesh\n * @param a\n * @param b\n * @param height\n * @param depth\n */\nconst createBoxGeometryByPoints = (a: Vector3, b: Vector3, height = 30, depth = 10, material?: ShaderMaterial) => {\n const width = a.distanceTo(b)\n const box = new BoxGeometry(width, height, depth)\n\n let currentMaterial: MeshBasicMaterial | ShaderMaterial = new MeshBasicMaterial({ color: new Color('#fff') })\n if (material)\n currentMaterial = material\n\n const mesh = new Mesh(box, currentMaterial)\n const midpoint = new Vector3().addVectors(a, b).multiplyScalar(0.5)\n\n mesh.position.x = midpoint.x\n mesh.position.y = midpoint.y + height / 2\n mesh.position.z = midpoint.z\n\n const direction = new Vector3()\n direction.subVectors(a, b)\n direction.normalize()\n\n const axis = new Vector3(0, 1, 0) // axis\n const angle = new Vector3(1, 0, 0).angleTo(direction)\n\n const quaternion = new Quaternion().setFromAxisAngle(axis, angle)\n const newDirection = new Vector3(1, 0, 0).applyQuaternion(quaternion)\n\n if (!newDirection.angleTo(direction))\n mesh.rotateOnAxis(axis, angle)\n else\n mesh.rotateOnAxis(axis, -angle)\n\n return mesh\n}\n\n/**\n * rectangle shape\n * @param w\n * @param h\n * @returns\n */\nconst rectangle = (w = 0.1, h = 50) => {\n const shape = new Shape()\n\n shape.moveTo(0, 0)\n shape.lineTo(0, w)\n shape.lineTo(h, w)\n shape.lineTo(h, 0)\n shape.lineTo(0, 0)\n\n return shape\n}\n\nconst defMaterial = new ShaderMaterial({\n uniforms: {\n u_color: { value: new Color('#fab73f') },\n u_height: { value: 100 },\n u_opacity: { value: 1.0 },\n },\n\n vertexShader: `\n uniform float u_height;\n uniform float u_speed;\n varying float v_opacity;\n\n void main() {\n v_opacity = mix(1.0, 0.0, position.y / u_height);\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }`,\n fragmentShader: `\n uniform vec3 u_color;\n uniform float u_opacity;\n varying float v_opacity;\n\n void main() {\n gl_FragColor = vec4(u_color, 1.0);\n }\n `,\n transparent: true,\n side: 2,\n depthTest: false,\n})\n\n// const material = new MeshBasicMaterial({ color: new Color('#fab73f'), side: DoubleSide })\n\n/**\n * create round curve\n * @param points\n * @param radius\n * @param close\n * @returns\n */\nconst createCurve = (points: Vector3[], radius = 20, height = 50, close = false, material?: ShaderMaterial) => {\n if (!material)\n material = defMaterial\n\n const curve = new CurvePath()\n const shape = rectangle(0.1, height)\n\n if (points.length < 2)\n throw new Error('At least two points are required to create a curve')\n\n if (points.length === 2) {\n const line = new LineCurve3(points[0], points[1])\n curve.curves.push(line)\n\n return [curve]\n }\n\n const lines = []\n\n for (let i = 0; i < points.length - 1; i++) {\n if (i === 0) {\n const dir = points[0].clone().sub(points[1]).normalize()\n const realEndPoints = points[1].clone().add(dir.multiplyScalar(radius))\n\n let firstPoint = points[0]\n\n if (close)\n firstPoint = points[0].clone().add(points[1].clone().sub(points[0]).normalize().multiplyScalar(radius))\n\n lines.push(new LineCurve3(firstPoint, realEndPoints))\n }\n else if (i === points.length - 1) {\n //\n }\n else {\n const dir1 = points[i - 1].clone().sub(points[i]).normalize()\n const dir2 = points[i + 1].clone().sub(points[i]).normalize()\n const dir3 = points[i].clone().sub(points[i + 1]).normalize()\n\n const nextDir1 = dir2.clone()\n const nextDir2 = points[i].clone().sub(points[i + 1]).normalize()\n\n const p1 = points[i].clone().add(dir1.multiplyScalar(radius))\n const p2 = points[i].clone()\n const p3 = points[i].clone().add(dir2.multiplyScalar(radius))\n\n const beziercurve = new QuadraticBezierCurve3(p1, p2, p3)\n\n const realLastPoints = points[i].clone().add(nextDir1.multiplyScalar(radius))\n const realEndPoints = points[i + 1].clone().add(nextDir2.multiplyScalar(radius))\n\n lines.push(beziercurve)\n lines.push(new LineCurve3(realLastPoints, i + 1 === points.length - 1\n ? close\n ? points[i + 1].clone().add(dir3.multiplyScalar(radius))\n : points[i + 1]\n : realEndPoints))\n }\n }\n\n if (close) {\n // first point\n const dir1 = points[1].clone().sub(points[0]).normalize()\n const dir2 = points[points.length - 1].clone().sub(points[0]).normalize()\n\n const p1 = points[0].clone().add(dir1.multiplyScalar(radius))\n const p2 = points[0]\n const p3 = points[0].clone().add(dir2.multiplyScalar(radius))\n\n const beziercurve = new QuadraticBezierCurve3(p3, p2, p1)\n\n // last point\n const dir3 = points[0].clone().sub(points[points.length - 1]).normalize()\n const dir4 = points[points.length - 2].clone().sub(points[points.length - 1]).normalize()\n\n const p4 = points[points.length - 1].clone().add(dir3.multiplyScalar(radius))\n const p5 = points[points.length - 1]\n const p6 = points[points.length - 1].clone().add(dir4.multiplyScalar(radius))\n\n const beziercurve2 = new QuadraticBezierCurve3(p6, p5, p4)\n\n // last line\n const laseLine = new LineCurve3(p4, p3)\n\n lines.push(beziercurve2)\n lines.push(laseLine)\n lines.push(beziercurve)\n }\n\n const group = new Group()\n\n lines.forEach((line) => {\n curve.curves.push(line)\n\n if (line.type === 'QuadraticBezierCurve3') {\n const extrudeSettings = {\n steps: 100,\n bevelEnabled: false,\n extrudePath: line,\n }\n\n const geometry = new ExtrudeGeometry(shape, extrudeSettings)\n const arcWall = new Mesh(geometry, material)\n\n arcWall.translateY(arcWall.position.y + height)\n\n if (radius)\n group.add(arcWall)\n }\n else {\n const mesh = createBoxGeometryByPoints(line.v1, line.v2, height, 0.1, material)\n group.add(mesh)\n }\n })\n\n return [curve, group] as any\n}\n\ntype RoundLineGeometryOption = {\n radius: number\n close: boolean\n pointNum?: number\n height?: number\n}\n\nclass RoundLineGeometry extends BufferGeometry {\n public curve: any\n\n constructor(points: Vector3[], option: RoundLineGeometryOption) {\n super()\n\n const [curve] = createCurve(points, option.radius ?? 20, void 0, option.close || false)\n const currentPoints = curve.getPoints(option.pointNum || 1000)\n\n const geometry = new BufferGeometry()\n geometry.setFromPoints(currentPoints)\n\n this.curve = curve\n }\n}\n\nconst createRoundLineWallMesh = (points: Vector3[], option: RoundLineGeometryOption, material?: ShaderMaterial) => {\n const [_, group] = createCurve(points, option.radius ?? 20, option.height ?? 50, option.close || false, material)\n\n return group\n}\n\nconst createRoundedClosedCurve = (points: Vector3[], radius = 20, closed = true) => {\n const curves: Curve<Vector3>[] = []\n const total = points.length\n let lastP2: Vector3 | null = null\n // 👇 避免 radius = 0 时直线退化问题\n const safeRadius = radius === 0 ? 0.0001 : radius\n\n for (let i = 0; i < total; i++) {\n const curr = points[i]\n const hasPrev = i > 0\n const hasNext = i < total - 1\n\n if ((hasPrev && hasNext) || closed) {\n const pPrev = points[(i - 1 + total) % total]\n const pNext = points[(i + 1) % total]\n\n const v1 = curr.clone().sub(pPrev).normalize()\n const v2 = pNext.clone().sub(curr).normalize()\n const tangentLength = Math.min(\n safeRadius,\n curr.distanceTo(pPrev) / 2,\n curr.distanceTo(pNext) / 2,\n )\n\n const p1 = curr\n .clone()\n .sub(v1.clone().multiplyScalar(tangentLength))\n const p2 = curr\n .clone()\n .add(v2.clone().multiplyScalar(tangentLength))\n\n if (lastP2)\n curves.push(new LineCurve3(lastP2.clone(), p1.clone()))\n else if (!closed && i === 1)\n curves.push(new LineCurve3(points[0].clone(), p1.clone()))\n\n curves.push(\n new QuadraticBezierCurve3(\n p1.clone(),\n curr.clone(),\n p2.clone(),\n ),\n )\n lastP2 = p2\n }\n else if (!hasNext && lastP2) {\n curves.push(new LineCurve3(lastP2.clone(), curr.clone()))\n }\n }\n\n if (closed && lastP2) {\n const first = points[0]\n const prev = points[points.length - 1]\n const next = points[1]\n\n const v1 = first.clone().sub(prev).normalize()\n const v2 = next.clone().sub(first).normalize()\n\n const tangentLength = Math.min(\n safeRadius,\n first.distanceTo(prev) / 2,\n first.distanceTo(next) / 2,\n )\n const firstP1 = first\n .clone()\n .sub(v1.clone().multiplyScalar(tangentLength))\n curves.push(new LineCurve3(lastP2.clone(), firstP1.clone()))\n }\n\n const path = new CurvePath<Vector3>()\n curves.forEach(c => path.add(c))\n return path\n // for (let i = 0; i < total; i++) {\n // const prev = points[(i - 1 + total) % total]\n // const curr = points[i]\n // const next = points[(i + 1) % total]\n\n // const v1 = curr.clone().sub(prev).normalize()\n // const v2 = next.clone().sub(curr).normalize()\n\n // const tangentLength = Math.min(safeRadius, curr.distanceTo(prev) / 2, curr.distanceTo(next) / 2)\n\n // const p1 = curr.clone().sub(v1.clone().multiplyScalar(tangentLength))\n // const p2 = curr.clone().add(v2.clone().multiplyScalar(tangentLength))\n\n // if (lastP2)\n // curves.push(new LineCurve3(lastP2.clone(), p1.clone()))\n\n // curves.push(new QuadraticBezierCurve3(p1.clone(), curr.clone(), p2.clone()))\n // lastP2 = p2\n // }\n\n // const prev = points[(total - 1 + total) % total]\n // const curr = points[0]\n // const next = points[1]\n\n // const v1 = curr.clone().sub(prev).normalize()\n // const v2 = next.clone().sub(curr).normalize()\n\n // const tangentLength = Math.min(safeRadius, curr.distanceTo(prev) / 2, curr.distanceTo(next) / 2)\n // const firstP1 = curr.clone().sub(v1.clone().multiplyScalar(tangentLength))\n\n // curves.push(new LineCurve3(lastP2!.clone(), firstP1.clone()))\n\n // const path = new CurvePath<THREE.Vector3>()\n // curves.forEach(c => path.add(c))\n // return path\n}\n\nconst createRoundedClosedWallMesh = (points: Vector3[], option: RoundLineGeometryOption, material?: ShaderMaterial) => {\n if (!material)\n material = defMaterial\n // const shape = rectangle(0.1, option.height)\n if (points.length < 2)\n throw new Error('At least two points are required to create a curve')\n\n const curvePath = createRoundedClosedCurve(points, option.radius, option.close)\n const divisions = 1000\n // const upVec = new Vector3(0, 1, 0)\n const bottomPoints = curvePath.getSpacedPoints(divisions)\n const topPoints = bottomPoints.map(\n p => new Vector3(p.x, p.y + option.height, p.z),\n )\n\n // 构建侧面 geometry\n const sideGeometry = new BufferGeometry()\n const positions = []\n const indices = []\n\n for (let i = 0; i < divisions; i++) {\n const b0 = bottomPoints[i]\n const b1 = bottomPoints[i + 1]\n const t0 = topPoints[i]\n const t1 = topPoints[i + 1]\n\n if (!b1 || !t1)\n break\n\n const baseIndex = positions.length / 3\n\n positions.push(b0.x, b0.y, b0.z) // 0\n positions.push(b1.x, b1.y, b1.z) // 1\n positions.push(t1.x, t1.y, t1.z) // 2\n positions.push(t0.x, t0.y, t0.z) // 3\n\n // 两个三角形组成一个四边面\n indices.push(baseIndex, baseIndex + 1, baseIndex + 2)\n indices.push(baseIndex, baseIndex + 2, baseIndex + 3)\n }\n\n sideGeometry.setAttribute(\n 'position',\n new Float32BufferAttribute(positions, 3),\n )\n sideGeometry.setIndex(indices)\n sideGeometry.computeVertexNormals()\n\n // const sideMaterial = new THREE.MeshNormalMaterial({\n // side: THREE.DoubleSide,\n // })\n const sideMesh = new Mesh(sideGeometry, material)\n // const extrudeSettings = {\n // steps: 200,\n // bevelEnabled: false,\n // extrudePath: curvePath,\n // }\n // const geometry = new ExtrudeGeometry(shape, extrudeSettings)\n // const material1 = new MeshNormalMaterial({ wireframe: false })\n // const arcWall = new Mesh(geometry, material)\n // arcWall.translateY(arcWall.position.y + option.height)\n return sideMesh\n}\nexport {\n RoundLineGeometry,\n createRoundLineWallMesh,\n createRoundedClosedWallMesh,\n createRoundedClosedCurve,\n}"],"mappings":"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"}
1
+ {"version":3,"names":["BoxGeometry","BufferGeometry","Color","CurvePath","ExtrudeGeometry","Float32BufferAttribute","Group","LineCurve3","Mesh","MeshBasicMaterial","QuadraticBezierCurve3","Quaternion","ShaderMaterial","Shape","Vector3","createBoxGeometryByPoints","a","b","height","depth","material","width","distanceTo","box","currentMaterial","color","mesh","midpoint","addVectors","multiplyScalar","position","x","y","z","direction","subVectors","normalize","axis","angle","angleTo","quaternion","setFromAxisAngle","newDirection","applyQuaternion","rotateOnAxis","rectangle","w","h","shape","moveTo","lineTo","defMaterial","uniforms","u_color","value","u_height","u_opacity","vertexShader","fragmentShader","transparent","side","depthTest","createCurve","points","radius","close","curve","length","Error","line","curves","push","lines","i","dir","clone","sub","realEndPoints","add","firstPoint","dir1","dir2","dir3","nextDir1","nextDir2","p1","p2","p3","beziercurve","realLastPoints","dir4","p4","p5","p6","beziercurve2","laseLine","group","forEach","type","extrudeSettings","steps","bevelEnabled","extrudePath","geometry","arcWall","translateY","v1","v2","RoundLineGeometry","constructor","option","_option$radius","_defineProperty","currentPoints","getPoints","pointNum","setFromPoints","createRoundLineWallMesh","_option$radius2","_option$height","_","createRoundedClosedCurve","closed","total","lastP2","safeRadius","curr","hasPrev","hasNext","pPrev","pNext","tangentLength","Math","min","first","prev","next","firstP1","path","c","createRoundedClosedWallMesh","curvePath","divisions","bottomPoints","getSpacedPoints","topPoints","map","p","sideGeometry","positions","indices","b0","b1","t0","t1","baseIndex","setAttribute","setIndex","computeVertexNormals","sideMesh"],"sources":["../../../src/business/Utils/round-curve.ts"],"sourcesContent":["/* eslint-disable no-void */\nimport type { Curve } from '@anov/3d-core'\nimport { BoxGeometry, BufferGeometry, Color, CurvePath, ExtrudeGeometry, Float32BufferAttribute, Group, LineCurve3, Mesh, MeshBasicMaterial, MeshNormalMaterial, QuadraticBezierCurve3, Quaternion, ShaderMaterial, Shape, Vector3 } from '@anov/3d-core'\n\nexport interface TextureParamsType {\n texture?: string\n repeatX?: number\n repeatY?: number\n wrapS?: number\n wrapT?: number\n}\n\n/**\n * TODO: 参数优化\n * create box geometry by two points\n * just provide data not create mesh\n * @param a\n * @param b\n * @param height\n * @param depth\n */\nconst createBoxGeometryByPoints = (a: Vector3, b: Vector3, height = 30, depth = 10, material?: ShaderMaterial) => {\n const width = a.distanceTo(b)\n const box = new BoxGeometry(width, height, depth)\n\n let currentMaterial: MeshBasicMaterial | ShaderMaterial = new MeshBasicMaterial({ color: new Color('#fff') })\n if (material)\n currentMaterial = material\n\n const mesh = new Mesh(box, currentMaterial)\n const midpoint = new Vector3().addVectors(a, b).multiplyScalar(0.5)\n\n mesh.position.x = midpoint.x\n mesh.position.y = midpoint.y + height / 2\n mesh.position.z = midpoint.z\n\n const direction = new Vector3()\n direction.subVectors(a, b)\n direction.normalize()\n\n const axis = new Vector3(0, 1, 0) // axis\n const angle = new Vector3(1, 0, 0).angleTo(direction)\n\n const quaternion = new Quaternion().setFromAxisAngle(axis, angle)\n const newDirection = new Vector3(1, 0, 0).applyQuaternion(quaternion)\n\n if (!newDirection.angleTo(direction))\n mesh.rotateOnAxis(axis, angle)\n else\n mesh.rotateOnAxis(axis, -angle)\n\n return mesh\n}\n\n/**\n * rectangle shape\n * @param w\n * @param h\n * @returns\n */\nconst rectangle = (w = 0.1, h = 50) => {\n const shape = new Shape()\n\n shape.moveTo(0, 0)\n shape.lineTo(0, w)\n shape.lineTo(h, w)\n shape.lineTo(h, 0)\n shape.lineTo(0, 0)\n\n return shape\n}\n\nconst defMaterial = new ShaderMaterial({\n uniforms: {\n u_color: { value: new Color('#fab73f') },\n u_height: { value: 100 },\n u_opacity: { value: 1.0 },\n },\n\n vertexShader: `\n uniform float u_height;\n uniform float u_speed;\n varying float v_opacity;\n\n void main() {\n v_opacity = mix(1.0, 0.0, position.y / u_height);\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }`,\n fragmentShader: `\n uniform vec3 u_color;\n uniform float u_opacity;\n varying float v_opacity;\n\n void main() {\n gl_FragColor = vec4(u_color, 1.0);\n }\n `,\n transparent: true,\n side: 2,\n depthTest: false,\n})\n\n// const material = new MeshBasicMaterial({ color: new Color('#fab73f'), side: DoubleSide })\n\n/**\n * create round curve\n * @param points\n * @param radius\n * @param close\n * @returns\n */\nconst createCurve = (points: Vector3[], radius = 20, height = 50, close = false, material?: ShaderMaterial) => {\n if (!material)\n material = defMaterial\n\n const curve = new CurvePath()\n const shape = rectangle(0.1, height)\n\n if (points.length < 2)\n throw new Error('At least two points are required to create a curve')\n\n if (points.length === 2) {\n const line = new LineCurve3(points[0], points[1])\n curve.curves.push(line)\n\n return [curve]\n }\n\n const lines = []\n\n for (let i = 0; i < points.length - 1; i++) {\n if (i === 0) {\n const dir = points[0].clone().sub(points[1]).normalize()\n const realEndPoints = points[1].clone().add(dir.multiplyScalar(radius))\n\n let firstPoint = points[0]\n\n if (close)\n firstPoint = points[0].clone().add(points[1].clone().sub(points[0]).normalize().multiplyScalar(radius))\n\n lines.push(new LineCurve3(firstPoint, realEndPoints))\n }\n else if (i === points.length - 1) {\n //\n }\n else {\n const dir1 = points[i - 1].clone().sub(points[i]).normalize()\n const dir2 = points[i + 1].clone().sub(points[i]).normalize()\n const dir3 = points[i].clone().sub(points[i + 1]).normalize()\n\n const nextDir1 = dir2.clone()\n const nextDir2 = points[i].clone().sub(points[i + 1]).normalize()\n\n const p1 = points[i].clone().add(dir1.multiplyScalar(radius))\n const p2 = points[i].clone()\n const p3 = points[i].clone().add(dir2.multiplyScalar(radius))\n\n const beziercurve = new QuadraticBezierCurve3(p1, p2, p3)\n\n const realLastPoints = points[i].clone().add(nextDir1.multiplyScalar(radius))\n const realEndPoints = points[i + 1].clone().add(nextDir2.multiplyScalar(radius))\n\n lines.push(beziercurve)\n lines.push(new LineCurve3(realLastPoints, i + 1 === points.length - 1\n ? close\n ? points[i + 1].clone().add(dir3.multiplyScalar(radius))\n : points[i + 1]\n : realEndPoints))\n }\n }\n\n if (close) {\n // first point\n const dir1 = points[1].clone().sub(points[0]).normalize()\n const dir2 = points[points.length - 1].clone().sub(points[0]).normalize()\n\n const p1 = points[0].clone().add(dir1.multiplyScalar(radius))\n const p2 = points[0]\n const p3 = points[0].clone().add(dir2.multiplyScalar(radius))\n\n const beziercurve = new QuadraticBezierCurve3(p3, p2, p1)\n\n // last point\n const dir3 = points[0].clone().sub(points[points.length - 1]).normalize()\n const dir4 = points[points.length - 2].clone().sub(points[points.length - 1]).normalize()\n\n const p4 = points[points.length - 1].clone().add(dir3.multiplyScalar(radius))\n const p5 = points[points.length - 1]\n const p6 = points[points.length - 1].clone().add(dir4.multiplyScalar(radius))\n\n const beziercurve2 = new QuadraticBezierCurve3(p6, p5, p4)\n\n // last line\n const laseLine = new LineCurve3(p4, p3)\n\n lines.push(beziercurve2)\n lines.push(laseLine)\n lines.push(beziercurve)\n }\n\n const group = new Group()\n\n lines.forEach((line) => {\n curve.curves.push(line)\n\n if (line.type === 'QuadraticBezierCurve3') {\n const extrudeSettings = {\n steps: 100,\n bevelEnabled: false,\n extrudePath: line,\n }\n\n const geometry = new ExtrudeGeometry(shape, extrudeSettings)\n const arcWall = new Mesh(geometry, material)\n\n arcWall.translateY(arcWall.position.y + height)\n\n if (radius)\n group.add(arcWall)\n }\n else {\n const mesh = createBoxGeometryByPoints(line.v1, line.v2, height, 0.1, material)\n group.add(mesh)\n }\n })\n\n return [curve, group] as any\n}\n\ntype RoundLineGeometryOption = {\n radius: number\n close: boolean\n pointNum?: number\n height?: number\n}\n\nclass RoundLineGeometry extends BufferGeometry {\n public curve: any\n\n constructor(points: Vector3[], option: RoundLineGeometryOption) {\n super()\n\n const [curve] = createCurve(points, option.radius ?? 20, void 0, option.close || false)\n const currentPoints = curve.getPoints(option.pointNum || 1000)\n\n const geometry = new BufferGeometry()\n geometry.setFromPoints(currentPoints)\n\n this.curve = curve\n }\n}\n\nconst createRoundLineWallMesh = (points: Vector3[], option: RoundLineGeometryOption, material?: ShaderMaterial) => {\n const [_, group] = createCurve(points, option.radius ?? 20, option.height ?? 50, option.close || false, material)\n\n return group\n}\n\nconst createRoundedClosedCurve = (points: Vector3[], radius = 20, closed = true) => {\n const curves: Curve<Vector3>[] = []\n const total = points.length\n let lastP2: Vector3 | null = null\n // 👇 避免 radius = 0 时直线退化问题\n const safeRadius = radius === 0 ? 0.0001 : radius\n\n for (let i = 0; i < total; i++) {\n const curr = points[i]\n const hasPrev = i > 0\n const hasNext = i < total - 1\n\n if ((hasPrev && hasNext) || closed) {\n const pPrev = points[(i - 1 + total) % total]\n const pNext = points[(i + 1) % total]\n\n const v1 = curr.clone().sub(pPrev).normalize()\n const v2 = pNext.clone().sub(curr).normalize()\n const tangentLength = Math.min(\n safeRadius,\n curr.distanceTo(pPrev) / 2,\n curr.distanceTo(pNext) / 2,\n )\n\n const p1 = curr\n .clone()\n .sub(v1.clone().multiplyScalar(tangentLength))\n const p2 = curr\n .clone()\n .add(v2.clone().multiplyScalar(tangentLength))\n\n if (lastP2)\n curves.push(new LineCurve3(lastP2.clone(), p1.clone()))\n else if (!closed && i === 1)\n curves.push(new LineCurve3(points[0].clone(), p1.clone()))\n\n curves.push(\n new QuadraticBezierCurve3(\n p1.clone(),\n curr.clone(),\n p2.clone(),\n ),\n )\n lastP2 = p2\n }\n else if (!hasNext && lastP2) {\n curves.push(new LineCurve3(lastP2.clone(), curr.clone()))\n }\n }\n\n if (closed && lastP2) {\n const first = points[0]\n const prev = points[points.length - 1]\n const next = points[1]\n\n const v1 = first.clone().sub(prev).normalize()\n const v2 = next.clone().sub(first).normalize()\n\n const tangentLength = Math.min(\n safeRadius,\n first.distanceTo(prev) / 2,\n first.distanceTo(next) / 2,\n )\n const firstP1 = first\n .clone()\n .sub(v1.clone().multiplyScalar(tangentLength))\n curves.push(new LineCurve3(lastP2.clone(), firstP1.clone()))\n }\n\n const path = new CurvePath<Vector3>()\n curves.forEach(c => path.add(c))\n return path\n // for (let i = 0; i < total; i++) {\n // const prev = points[(i - 1 + total) % total]\n // const curr = points[i]\n // const next = points[(i + 1) % total]\n\n // const v1 = curr.clone().sub(prev).normalize()\n // const v2 = next.clone().sub(curr).normalize()\n\n // const tangentLength = Math.min(safeRadius, curr.distanceTo(prev) / 2, curr.distanceTo(next) / 2)\n\n // const p1 = curr.clone().sub(v1.clone().multiplyScalar(tangentLength))\n // const p2 = curr.clone().add(v2.clone().multiplyScalar(tangentLength))\n\n // if (lastP2)\n // curves.push(new LineCurve3(lastP2.clone(), p1.clone()))\n\n // curves.push(new QuadraticBezierCurve3(p1.clone(), curr.clone(), p2.clone()))\n // lastP2 = p2\n // }\n\n // const prev = points[(total - 1 + total) % total]\n // const curr = points[0]\n // const next = points[1]\n\n // const v1 = curr.clone().sub(prev).normalize()\n // const v2 = next.clone().sub(curr).normalize()\n\n // const tangentLength = Math.min(safeRadius, curr.distanceTo(prev) / 2, curr.distanceTo(next) / 2)\n // const firstP1 = curr.clone().sub(v1.clone().multiplyScalar(tangentLength))\n\n // curves.push(new LineCurve3(lastP2!.clone(), firstP1.clone()))\n\n // const path = new CurvePath<THREE.Vector3>()\n // curves.forEach(c => path.add(c))\n // return path\n}\n\nconst createRoundedClosedWallMesh = (points: Vector3[], option: RoundLineGeometryOption, material?: ShaderMaterial) => {\n if (!material)\n material = defMaterial\n // const shape = rectangle(0.1, option.height)\n if (points.length < 2)\n throw new Error('At least two points are required to create a curve')\n\n const curvePath = createRoundedClosedCurve(points, option.radius, option.close)\n const divisions = 1000\n // const upVec = new Vector3(0, 1, 0)\n const bottomPoints = curvePath.getSpacedPoints(divisions)\n const topPoints = bottomPoints.map(\n p => new Vector3(p.x, p.y + option.height, p.z),\n )\n\n // 构建侧面 geometry\n const sideGeometry = new BufferGeometry()\n const positions = []\n const indices = []\n\n for (let i = 0; i < divisions; i++) {\n const b0 = bottomPoints[i]\n const b1 = bottomPoints[i + 1]\n const t0 = topPoints[i]\n const t1 = topPoints[i + 1]\n\n if (!b1 || !t1)\n break\n\n const baseIndex = positions.length / 3\n\n positions.push(b0.x, b0.y, b0.z) // 0\n positions.push(b1.x, b1.y, b1.z) // 1\n positions.push(t1.x, t1.y, t1.z) // 2\n positions.push(t0.x, t0.y, t0.z) // 3\n\n // 两个三角形组成一个四边面\n indices.push(baseIndex, baseIndex + 1, baseIndex + 2)\n indices.push(baseIndex, baseIndex + 2, baseIndex + 3)\n }\n\n sideGeometry.setAttribute(\n 'position',\n new Float32BufferAttribute(positions, 3),\n )\n sideGeometry.setIndex(indices)\n sideGeometry.computeVertexNormals()\n\n // const sideMaterial = new THREE.MeshNormalMaterial({\n // side: THREE.DoubleSide,\n // })\n const sideMesh = new Mesh(sideGeometry, material)\n // const extrudeSettings = {\n // steps: 200,\n // bevelEnabled: false,\n // extrudePath: curvePath,\n // }\n // const geometry = new ExtrudeGeometry(shape, extrudeSettings)\n // const material1 = new MeshNormalMaterial({ wireframe: false })\n // const arcWall = new Mesh(geometry, material)\n // arcWall.translateY(arcWall.position.y + option.height)\n return sideMesh\n}\nexport {\n RoundLineGeometry,\n createRoundLineWallMesh,\n createRoundedClosedWallMesh,\n createRoundedClosedCurve,\n}"],"mappings":"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"}