@@ -118,32 +118,18 @@ class WaterPrimitive {
118118 const positions = options . positions
119119 this . _show = true
120120
121- this . _positions = [ ]
122-
123- const [
124- cosLatitudeSum ,
125- cosLatitudeSinLongitudeSum ,
126- sinLatitudeSum ,
127- ] = positions
128- . reduce ( ( acc , position ) => {
129- const { latitude, longitude } = position
130-
131- this . _positions . push ( Cesium . Cartesian3 . fromRadians ( position . longitude , position . latitude , this . _height ) )
132-
133- return [
134- acc [ 0 ] + Math . cos ( latitude ) * Math . cos ( longitude ) ,
135- acc [ 1 ] + Math . cos ( latitude ) * Math . sin ( longitude ) ,
136- acc [ 2 ] + Math . sin ( latitude ) ,
137- ]
138- } , [ 0 , 0 , 0 ] )
139- . map ( item => item /= positions . length )
140-
141- const averageLongitude = Math . atan2 ( cosLatitudeSinLongitudeSum , cosLatitudeSum )
142- const distanceToSurface = Math . sqrt ( cosLatitudeSum * cosLatitudeSum + cosLatitudeSinLongitudeSum * cosLatitudeSinLongitudeSum )
143- const averageLatitude = Math . atan2 ( sinLatitudeSum , distanceToSurface )
144-
145- this . _reflectorWorldPosition = Cesium . Cartesian3 . fromRadians ( averageLongitude , averageLatitude , this . _height )
146- this . _originalReflectorWorldPosition = this . _reflectorWorldPosition . clone ( )
121+ this . _positions = positions . map ( position =>
122+ Cesium . Cartesian3 . fromRadians ( position . longitude , position . latitude , this . _height ) ,
123+ )
124+
125+ const sumCartesian = this . _positions . reduce ( ( sum , cartesian ) => {
126+ return Cesium . Cartesian3 . add ( sum , cartesian , new Cesium . Cartesian3 ( ) )
127+ } , new Cesium . Cartesian3 ( ) )
128+
129+ const averageCartesian = Cesium . Cartesian3 . divideByScalar ( sumCartesian , positions . length , new Cesium . Cartesian3 ( ) )
130+ this . _reflectorWorldPosition = averageCartesian . clone ( )
131+ this . _originalReflectorWorldPosition = averageCartesian . clone ( )
132+
147133 this . _normal = Cesium . Ellipsoid . WGS84 . geodeticSurfaceNormal ( this . _reflectorWorldPosition )
148134 this . _waterPlane = Cesium . Plane . fromPointNormal ( this . _reflectorWorldPosition , this . _normal )
149135
0 commit comments