diff --git a/examples/device-orientation.js b/examples/device-orientation.js index 3a49779683..825e61ac98 100644 --- a/examples/device-orientation.js +++ b/examples/device-orientation.js @@ -3,7 +3,7 @@ import _ol_Map_ from '../src/ol/Map.js'; import _ol_View_ from '../src/ol/View.js'; import {defaults as defaultControls} from '../src/ol/control.js'; import TileLayer from '../src/ol/layer/Tile.js'; -import _ol_math_ from '../src/ol/math.js'; +import {toRadians} from '../src/ol/math.js'; import _ol_source_OSM_ from '../src/ol/source/OSM.js'; var view = new _ol_View_({ @@ -36,9 +36,9 @@ gn.init().then(function() { gn.start(function(event) { var center = view.getCenter(); var resolution = view.getResolution(); - var alpha = _ol_math_.toRadians(event.do.beta); - var beta = _ol_math_.toRadians(event.do.beta); - var gamma = _ol_math_.toRadians(event.do.gamma); + var alpha = toRadians(event.do.beta); + var beta = toRadians(event.do.beta); + var gamma = toRadians(event.do.gamma); el('alpha').innerText = alpha + ' [rad]'; el('beta').innerText = beta + ' [rad]'; diff --git a/src/ol/CenterConstraint.js b/src/ol/CenterConstraint.js index 698fa62c85..da21fac1d8 100644 --- a/src/ol/CenterConstraint.js +++ b/src/ol/CenterConstraint.js @@ -1,7 +1,7 @@ /** * @module ol/CenterConstraint */ -import _ol_math_ from './math.js'; +import {clamp} from './math.js'; var _ol_CenterConstraint_ = {}; @@ -18,8 +18,8 @@ _ol_CenterConstraint_.createExtent = function(extent) { function(center) { if (center) { return [ - _ol_math_.clamp(center[0], extent[0], extent[2]), - _ol_math_.clamp(center[1], extent[1], extent[3]) + clamp(center[0], extent[0], extent[2]), + clamp(center[1], extent[1], extent[3]) ]; } else { return undefined; diff --git a/src/ol/Geolocation.js b/src/ol/Geolocation.js index 870b0a1c5b..80150ef85a 100644 --- a/src/ol/Geolocation.js +++ b/src/ol/Geolocation.js @@ -9,7 +9,7 @@ import _ol_events_ from './events.js'; import EventType from './events/EventType.js'; import Polygon from './geom/Polygon.js'; import _ol_has_ from './has.js'; -import _ol_math_ from './math.js'; +import {toRadians} from './math.js'; import {get as getProjection, getTransformFromProjections, identityTransform} from './proj.js'; import _ol_proj_EPSG4326_ from './proj/EPSG4326.js'; @@ -164,7 +164,7 @@ Geolocation.prototype.positionChange_ = function(position) { coords.altitudeAccuracy === null ? undefined : coords.altitudeAccuracy); this.set(_ol_GeolocationProperty_.HEADING, coords.heading === null ? - undefined : _ol_math_.toRadians(coords.heading)); + undefined : toRadians(coords.heading)); if (!this.position_) { this.position_ = [coords.longitude, coords.latitude]; } else { diff --git a/src/ol/Graticule.js b/src/ol/Graticule.js index d60df74476..5df54754dd 100644 --- a/src/ol/Graticule.js +++ b/src/ol/Graticule.js @@ -7,7 +7,7 @@ import GeometryLayout from './geom/GeometryLayout.js'; import LineString from './geom/LineString.js'; import Point from './geom/Point.js'; import _ol_geom_flat_geodesic_ from './geom/flat/geodesic.js'; -import _ol_math_ from './math.js'; +import {clamp} from './math.js'; import {get as getProjection, equivalent as equivalentProjection, getTransform, transformExtent} from './proj.js'; import RenderEventType from './render/EventType.js'; import _ol_style_Fill_ from './style/Fill.js'; @@ -357,7 +357,7 @@ Graticule.prototype.getMeridianPoint_ = function(lineString, extent, index) { var flatCoordinates = lineString.getFlatCoordinates(); var clampedBottom = Math.max(extent[1], flatCoordinates[1]); var clampedTop = Math.min(extent[3], flatCoordinates[flatCoordinates.length - 1]); - var lat = _ol_math_.clamp( + var lat = clamp( extent[1] + Math.abs(extent[1] - extent[3]) * this.lonLabelPosition_, clampedBottom, clampedTop); var coordinate = [flatCoordinates[0], lat]; @@ -406,7 +406,7 @@ Graticule.prototype.getParallelPoint_ = function(lineString, extent, index) { var flatCoordinates = lineString.getFlatCoordinates(); var clampedLeft = Math.max(extent[0], flatCoordinates[0]); var clampedRight = Math.min(extent[2], flatCoordinates[flatCoordinates.length - 2]); - var lon = _ol_math_.clamp( + var lon = clamp( extent[0] + Math.abs(extent[0] - extent[2]) * this.latLabelPosition_, clampedLeft, clampedRight); var coordinate = [lon, flatCoordinates[1]]; @@ -461,7 +461,7 @@ Graticule.prototype.createGraticule_ = function(extent, center, resolution, squa // Create meridians centerLon = Math.floor(centerLon / interval) * interval; - lon = _ol_math_.clamp(centerLon, this.minLon_, this.maxLon_); + lon = clamp(centerLon, this.minLon_, this.maxLon_); idx = this.addMeridian_(lon, minLat, maxLat, squaredTolerance, extent, 0); @@ -471,7 +471,7 @@ Graticule.prototype.createGraticule_ = function(extent, center, resolution, squa idx = this.addMeridian_(lon, minLat, maxLat, squaredTolerance, extent, idx); } - lon = _ol_math_.clamp(centerLon, this.minLon_, this.maxLon_); + lon = clamp(centerLon, this.minLon_, this.maxLon_); cnt = 0; while (lon != this.maxLon_ && cnt++ < maxLines) { @@ -487,7 +487,7 @@ Graticule.prototype.createGraticule_ = function(extent, center, resolution, squa // Create parallels centerLat = Math.floor(centerLat / interval) * interval; - lat = _ol_math_.clamp(centerLat, this.minLat_, this.maxLat_); + lat = clamp(centerLat, this.minLat_, this.maxLat_); idx = this.addParallel_(lat, minLon, maxLon, squaredTolerance, extent, 0); @@ -497,7 +497,7 @@ Graticule.prototype.createGraticule_ = function(extent, center, resolution, squa idx = this.addParallel_(lat, minLon, maxLon, squaredTolerance, extent, idx); } - lat = _ol_math_.clamp(centerLat, this.minLat_, this.maxLat_); + lat = clamp(centerLat, this.minLat_, this.maxLat_); cnt = 0; while (lat != this.maxLat_ && cnt++ < maxLines) { diff --git a/src/ol/ResolutionConstraint.js b/src/ol/ResolutionConstraint.js index 624462745b..52922070b0 100644 --- a/src/ol/ResolutionConstraint.js +++ b/src/ol/ResolutionConstraint.js @@ -2,7 +2,7 @@ * @module ol/ResolutionConstraint */ import {linearFindNearest} from './array.js'; -import _ol_math_ from './math.js'; +import {clamp} from './math.js'; var _ol_ResolutionConstraint_ = {}; @@ -21,7 +21,7 @@ _ol_ResolutionConstraint_.createSnapToResolutions = function(resolutions) { function(resolution, delta, direction) { if (resolution !== undefined) { var z = linearFindNearest(resolutions, resolution, direction); - z = _ol_math_.clamp(z + delta, 0, resolutions.length - 1); + z = clamp(z + delta, 0, resolutions.length - 1); var index = Math.floor(z); if (z != index && index < resolutions.length - 1) { var power = resolutions[index] / resolutions[index + 1]; diff --git a/src/ol/RotationConstraint.js b/src/ol/RotationConstraint.js index a71a82bd75..ba0fa7dc07 100644 --- a/src/ol/RotationConstraint.js +++ b/src/ol/RotationConstraint.js @@ -1,7 +1,7 @@ /** * @module ol/RotationConstraint */ -import _ol_math_ from './math.js'; +import {toRadians} from './math.js'; var _ol_RotationConstraint_ = {}; @@ -61,7 +61,7 @@ _ol_RotationConstraint_.createSnapToN = function(n) { * @return {ol.RotationConstraintType} Rotation constraint. */ _ol_RotationConstraint_.createSnapToZero = function(opt_tolerance) { - var tolerance = opt_tolerance || _ol_math_.toRadians(5); + var tolerance = opt_tolerance || toRadians(5); return ( /** * @param {number|undefined} rotation Rotation. diff --git a/src/ol/Sphere.js b/src/ol/Sphere.js index 109b5d01b0..c10d602f8a 100644 --- a/src/ol/Sphere.js +++ b/src/ol/Sphere.js @@ -8,7 +8,7 @@ * http://www.movable-type.co.uk/scripts/latlong.html * Licensed under CC-BY-3.0. */ -import _ol_math_ from './math.js'; +import {toRadians, toDegrees} from './math.js'; import GeometryType from './geom/GeometryType.js'; @@ -89,8 +89,8 @@ _ol_Sphere_.prototype.haversineDistance = function(c1, c2) { * @return {ol.Coordinate} The target point. */ _ol_Sphere_.prototype.offset = function(c1, distance, bearing) { - var lat1 = _ol_math_.toRadians(c1[1]); - var lon1 = _ol_math_.toRadians(c1[0]); + var lat1 = toRadians(c1[1]); + var lon1 = toRadians(c1[0]); var dByR = distance / this.radius; var lat = Math.asin( Math.sin(lat1) * Math.cos(dByR) + @@ -98,7 +98,7 @@ _ol_Sphere_.prototype.offset = function(c1, distance, bearing) { var lon = lon1 + Math.atan2( Math.sin(bearing) * Math.sin(dByR) * Math.cos(lat1), Math.cos(dByR) - Math.sin(lat1) * Math.sin(lat)); - return [_ol_math_.toDegrees(lon), _ol_math_.toDegrees(lat)]; + return [toDegrees(lon), toDegrees(lat)]; }; @@ -202,10 +202,10 @@ _ol_Sphere_.getLength_ = function(coordinates, radius) { * @return {number} The great circle distance between the points (in meters). */ _ol_Sphere_.getDistance_ = function(c1, c2, radius) { - var lat1 = _ol_math_.toRadians(c1[1]); - var lat2 = _ol_math_.toRadians(c2[1]); + var lat1 = toRadians(c1[1]); + var lat2 = toRadians(c2[1]); var deltaLatBy2 = (lat2 - lat1) / 2; - var deltaLonBy2 = _ol_math_.toRadians(c2[0] - c1[0]) / 2; + var deltaLonBy2 = toRadians(c2[0] - c1[0]) / 2; var a = Math.sin(deltaLatBy2) * Math.sin(deltaLatBy2) + Math.sin(deltaLonBy2) * Math.sin(deltaLonBy2) * Math.cos(lat1) * Math.cos(lat2); @@ -293,9 +293,9 @@ _ol_Sphere_.getArea_ = function(coordinates, radius) { var y1 = coordinates[len - 1][1]; for (var i = 0; i < len; i++) { var x2 = coordinates[i][0], y2 = coordinates[i][1]; - area += _ol_math_.toRadians(x2 - x1) * - (2 + Math.sin(_ol_math_.toRadians(y1)) + - Math.sin(_ol_math_.toRadians(y2))); + area += toRadians(x2 - x1) * + (2 + Math.sin(toRadians(y1)) + + Math.sin(toRadians(y2))); x1 = x2; y1 = y2; } diff --git a/src/ol/View.js b/src/ol/View.js index 5b4b2fb6b7..f2c27a17cc 100644 --- a/src/ol/View.js +++ b/src/ol/View.js @@ -17,7 +17,7 @@ import {getForViewAndSize, getCenter, getHeight, getWidth, isEmpty} from './exte import GeometryType from './geom/GeometryType.js'; import Polygon from './geom/Polygon.js'; import SimpleGeometry from './geom/SimpleGeometry.js'; -import _ol_math_ from './math.js'; +import {clamp, modulo} from './math.js'; import _ol_obj_ from './obj.js'; import {createProjection, METERS_PER_UNIT} from './proj.js'; import _ol_proj_Units_ from './proj/Units.js'; @@ -191,7 +191,7 @@ _ol_View_.prototype.applyOptions_ = function(options) { this.maxResolution_, options.zoom - this.minZoom_); if (this.resolutions_) { // in case map zoom is out of min/max zoom range - properties[_ol_ViewProperty_.RESOLUTION] = _ol_math_.clamp( + properties[_ol_ViewProperty_.RESOLUTION] = clamp( Number(this.getResolution() || properties[_ol_ViewProperty_.RESOLUTION]), this.minResolution_, this.maxResolution_); } @@ -328,7 +328,7 @@ _ol_View_.prototype.animate = function(var_args) { if (options.rotation !== undefined) { animation.sourceRotation = rotation; - var delta = _ol_math_.modulo(options.rotation - rotation + Math.PI, 2 * Math.PI) - Math.PI; + var delta = modulo(options.rotation - rotation + Math.PI, 2 * Math.PI) - Math.PI; animation.targetRotation = rotation + delta; rotation = animation.targetRotation; } @@ -436,7 +436,7 @@ _ol_View_.prototype.updateAnimations_ = function() { } if (animation.sourceRotation !== undefined && animation.targetRotation !== undefined) { var rotation = progress === 1 ? - _ol_math_.modulo(animation.targetRotation + Math.PI, 2 * Math.PI) - Math.PI : + modulo(animation.targetRotation + Math.PI, 2 * Math.PI) - Math.PI : animation.sourceRotation + progress * (animation.targetRotation - animation.sourceRotation); if (animation.anchor) { this.set(_ol_ViewProperty_.CENTER, diff --git a/src/ol/color.js b/src/ol/color.js index 6baa54d32a..7030d797ff 100644 --- a/src/ol/color.js +++ b/src/ol/color.js @@ -2,7 +2,7 @@ * @module ol/color */ import {assert} from './asserts.js'; -import _ol_math_ from './math.js'; +import {clamp} from './math.js'; /** @@ -184,10 +184,10 @@ function fromStringInternal_(s) { */ export function normalize(color, opt_color) { var result = opt_color || []; - result[0] = _ol_math_.clamp((color[0] + 0.5) | 0, 0, 255); - result[1] = _ol_math_.clamp((color[1] + 0.5) | 0, 0, 255); - result[2] = _ol_math_.clamp((color[2] + 0.5) | 0, 0, 255); - result[3] = _ol_math_.clamp(color[3], 0, 1); + result[0] = clamp((color[0] + 0.5) | 0, 0, 255); + result[1] = clamp((color[1] + 0.5) | 0, 0, 255); + result[2] = clamp((color[2] + 0.5) | 0, 0, 255); + result[3] = clamp(color[3], 0, 1); return result; } diff --git a/src/ol/control/ZoomSlider.js b/src/ol/control/ZoomSlider.js index eaea49b7c8..fb95d51492 100644 --- a/src/ol/control/ZoomSlider.js +++ b/src/ol/control/ZoomSlider.js @@ -11,7 +11,7 @@ import {easeOut} from '../easing.js'; import _ol_events_ from '../events.js'; import Event from '../events/Event.js'; import EventType from '../events/EventType.js'; -import _ol_math_ from '../math.js'; +import {clamp} from '../math.js'; import PointerEventType from '../pointer/EventType.js'; import _ol_pointer_PointerEventHandler_ from '../pointer/PointerEventHandler.js'; @@ -338,7 +338,7 @@ ZoomSlider.prototype.getRelativePosition_ = function(x, y) { } else { amount = y / this.heightLimit_; } - return _ol_math_.clamp(amount, 0, 1); + return clamp(amount, 0, 1); }; diff --git a/src/ol/coordinate.js b/src/ol/coordinate.js index bf72f45883..2a4ec0a50d 100644 --- a/src/ol/coordinate.js +++ b/src/ol/coordinate.js @@ -1,7 +1,7 @@ /** * @module ol/coordinate */ -import _ol_math_ from './math.js'; +import {modulo} from './math.js'; import _ol_string_ from './string.js'; var _ol_coordinate_ = {}; @@ -142,7 +142,7 @@ _ol_coordinate_.createStringXY = function(opt_fractionDigits) { * @return {string} String. */ _ol_coordinate_.degreesToStringHDMS = function(hemispheres, degrees, opt_fractionDigits) { - var normalizedDegrees = _ol_math_.modulo(degrees + 180, 360) - 180; + var normalizedDegrees = modulo(degrees + 180, 360) - 180; var x = Math.abs(3600 * normalizedDegrees); var dflPrecision = opt_fractionDigits || 0; var precision = Math.pow(10, dflPrecision); diff --git a/src/ol/format/KML.js b/src/ol/format/KML.js index 7062775c67..a35c92a8a3 100644 --- a/src/ol/format/KML.js +++ b/src/ol/format/KML.js @@ -18,7 +18,7 @@ import MultiPoint from '../geom/MultiPoint.js'; import MultiPolygon from '../geom/MultiPolygon.js'; import Point from '../geom/Point.js'; import Polygon from '../geom/Polygon.js'; -import _ol_math_ from '../math.js'; +import {toRadians} from '../math.js'; import {get as getProjection} from '../proj.js'; import _ol_style_Fill_ from '../style/Fill.js'; import _ol_style_Icon_ from '../style/Icon.js'; @@ -617,7 +617,7 @@ KML.IconStyleParser_ = function(node, objectStack) { var heading = /** @type {number} */ (object['heading']); if (heading !== undefined) { - rotation = _ol_math_.toRadians(heading); + rotation = toRadians(heading); } var scale = /** @type {number|undefined} */ diff --git a/src/ol/geom/MultiPoint.js b/src/ol/geom/MultiPoint.js index 57edf3bba1..859117a9eb 100644 --- a/src/ol/geom/MultiPoint.js +++ b/src/ol/geom/MultiPoint.js @@ -10,7 +10,7 @@ import Point from '../geom/Point.js'; import SimpleGeometry from '../geom/SimpleGeometry.js'; import _ol_geom_flat_deflate_ from '../geom/flat/deflate.js'; import _ol_geom_flat_inflate_ from '../geom/flat/inflate.js'; -import _ol_math_ from '../math.js'; +import {squaredDistance as squaredDx} from '../math.js'; /** * @classdesc @@ -69,7 +69,7 @@ MultiPoint.prototype.closestPointXY = function(x, y, closestPoint, minSquaredDis var stride = this.stride; var i, ii, j; for (i = 0, ii = flatCoordinates.length; i < ii; i += stride) { - var squaredDistance = _ol_math_.squaredDistance( + var squaredDistance = squaredDx( x, y, flatCoordinates[i], flatCoordinates[i + 1]); if (squaredDistance < minSquaredDistance) { minSquaredDistance = squaredDistance; diff --git a/src/ol/geom/Point.js b/src/ol/geom/Point.js index 162ea3a663..4e566b42eb 100644 --- a/src/ol/geom/Point.js +++ b/src/ol/geom/Point.js @@ -7,7 +7,7 @@ import GeometryLayout from '../geom/GeometryLayout.js'; import GeometryType from '../geom/GeometryType.js'; import SimpleGeometry from '../geom/SimpleGeometry.js'; import _ol_geom_flat_deflate_ from '../geom/flat/deflate.js'; -import _ol_math_ from '../math.js'; +import {squaredDistance as squaredDx} from '../math.js'; /** * @classdesc @@ -45,7 +45,7 @@ Point.prototype.clone = function() { */ Point.prototype.closestPointXY = function(x, y, closestPoint, minSquaredDistance) { var flatCoordinates = this.flatCoordinates; - var squaredDistance = _ol_math_.squaredDistance( + var squaredDistance = squaredDx( x, y, flatCoordinates[0], flatCoordinates[1]); if (squaredDistance < minSquaredDistance) { var stride = this.stride; diff --git a/src/ol/geom/Polygon.js b/src/ol/geom/Polygon.js index 3c6f0bb0fa..caa064f731 100644 --- a/src/ol/geom/Polygon.js +++ b/src/ol/geom/Polygon.js @@ -18,7 +18,7 @@ import _ol_geom_flat_interiorpoint_ from '../geom/flat/interiorpoint.js'; import _ol_geom_flat_intersectsextent_ from '../geom/flat/intersectsextent.js'; import _ol_geom_flat_orient_ from '../geom/flat/orient.js'; import _ol_geom_flat_simplify_ from '../geom/flat/simplify.js'; -import _ol_math_ from '../math.js'; +import {modulo} from '../math.js'; /** * @classdesc @@ -459,7 +459,7 @@ Polygon.makeRegular = function(polygon, center, radius, opt_angle) { var angle, offset; for (var i = 0; i <= sides; ++i) { offset = i * stride; - angle = startAngle + (_ol_math_.modulo(i, sides) * 2 * Math.PI / sides); + angle = startAngle + (modulo(i, sides) * 2 * Math.PI / sides); flatCoordinates[offset] = center[0] + (radius * Math.cos(angle)); flatCoordinates[offset + 1] = center[1] + (radius * Math.sin(angle)); } diff --git a/src/ol/geom/flat/closest.js b/src/ol/geom/flat/closest.js index aa4323fb5d..72a7618f98 100644 --- a/src/ol/geom/flat/closest.js +++ b/src/ol/geom/flat/closest.js @@ -1,7 +1,7 @@ /** * @module ol/geom/flat/closest */ -import _ol_math_ from '../../math.js'; +import {lerp, squaredDistance as squaredDx} from '../../math.js'; var _ol_geom_flat_closest_ = {}; @@ -31,7 +31,7 @@ _ol_geom_flat_closest_.point = function(flatCoordinates, offset1, offset2, strid offset = offset2; } else if (t > 0) { for (i = 0; i < stride; ++i) { - closestPoint[i] = _ol_math_.lerp(flatCoordinates[offset1 + i], + closestPoint[i] = lerp(flatCoordinates[offset1 + i], flatCoordinates[offset2 + i], t); } closestPoint.length = stride; @@ -63,7 +63,7 @@ _ol_geom_flat_closest_.getMaxSquaredDelta = function(flatCoordinates, offset, en for (offset += stride; offset < end; offset += stride) { var x2 = flatCoordinates[offset]; var y2 = flatCoordinates[offset + 1]; - var squaredDelta = _ol_math_.squaredDistance(x1, y1, x2, y2); + var squaredDelta = squaredDx(x1, y1, x2, y2); if (squaredDelta > maxSquaredDelta) { maxSquaredDelta = squaredDelta; } @@ -137,7 +137,7 @@ _ol_geom_flat_closest_.getClosestPoint = function(flatCoordinates, offset, end, var i, squaredDistance; if (maxDelta === 0) { // All points are identical, so just test the first point. - squaredDistance = _ol_math_.squaredDistance( + squaredDistance = squaredDx( x, y, flatCoordinates[offset], flatCoordinates[offset + 1]); if (squaredDistance < minSquaredDistance) { for (i = 0; i < stride; ++i) { @@ -154,7 +154,7 @@ _ol_geom_flat_closest_.getClosestPoint = function(flatCoordinates, offset, end, while (index < end) { _ol_geom_flat_closest_.point( flatCoordinates, index - stride, index, stride, x, y, tmpPoint); - squaredDistance = _ol_math_.squaredDistance(x, y, tmpPoint[0], tmpPoint[1]); + squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]); if (squaredDistance < minSquaredDistance) { minSquaredDistance = squaredDistance; for (i = 0; i < stride; ++i) { @@ -182,7 +182,7 @@ _ol_geom_flat_closest_.getClosestPoint = function(flatCoordinates, offset, end, // Check the closing segment. _ol_geom_flat_closest_.point( flatCoordinates, end - stride, offset, stride, x, y, tmpPoint); - squaredDistance = _ol_math_.squaredDistance(x, y, tmpPoint[0], tmpPoint[1]); + squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]); if (squaredDistance < minSquaredDistance) { minSquaredDistance = squaredDistance; for (i = 0; i < stride; ++i) { diff --git a/src/ol/geom/flat/geodesic.js b/src/ol/geom/flat/geodesic.js index 943daa134b..7cd0b0e39a 100644 --- a/src/ol/geom/flat/geodesic.js +++ b/src/ol/geom/flat/geodesic.js @@ -1,7 +1,7 @@ /** * @module ol/geom/flat/geodesic */ -import _ol_math_ from '../../math.js'; +import {squaredSegmentDistance, toRadians, toDegrees} from '../../math.js'; import {get as getProjection, getTransform} from '../../proj.js'; var _ol_geom_flat_geodesic_ = {}; @@ -59,7 +59,7 @@ _ol_geom_flat_geodesic_.line_ = function(interpolate, transform, squaredToleranc fracM = (fracA + fracB) / 2; geoM = interpolate(fracM); m = transform(geoM); - if (_ol_math_.squaredSegmentDistance(m[0], m[1], a[0], a[1], + if (squaredSegmentDistance(m[0], m[1], a[0], a[1], b[0], b[1]) < squaredTolerance) { // If the m point is sufficiently close to the straight line, then we // discard it. Just use the b coordinate and move on to the next line @@ -95,12 +95,12 @@ _ol_geom_flat_geodesic_.greatCircleArc = function( var geoProjection = getProjection('EPSG:4326'); - var cosLat1 = Math.cos(_ol_math_.toRadians(lat1)); - var sinLat1 = Math.sin(_ol_math_.toRadians(lat1)); - var cosLat2 = Math.cos(_ol_math_.toRadians(lat2)); - var sinLat2 = Math.sin(_ol_math_.toRadians(lat2)); - var cosDeltaLon = Math.cos(_ol_math_.toRadians(lon2 - lon1)); - var sinDeltaLon = Math.sin(_ol_math_.toRadians(lon2 - lon1)); + var cosLat1 = Math.cos(toRadians(lat1)); + var sinLat1 = Math.sin(toRadians(lat1)); + var cosLat2 = Math.cos(toRadians(lat2)); + var sinLat2 = Math.sin(toRadians(lat2)); + var cosDeltaLon = Math.cos(toRadians(lon2 - lon1)); + var sinDeltaLon = Math.sin(toRadians(lon2 - lon1)); var d = sinLat1 * sinLat2 + cosLat1 * cosLat2 * cosDeltaLon; return _ol_geom_flat_geodesic_.line_( @@ -119,10 +119,10 @@ _ol_geom_flat_geodesic_.greatCircleArc = function( var x = cosLat1 * sinLat2 - sinLat1 * cosLat2 * cosDeltaLon; var theta = Math.atan2(y, x); var lat = Math.asin(sinLat1 * cosD + cosLat1 * sinD * Math.cos(theta)); - var lon = _ol_math_.toRadians(lon1) + + var lon = toRadians(lon1) + Math.atan2(Math.sin(theta) * sinD * cosLat1, cosD - sinLat1 * Math.sin(lat)); - return [_ol_math_.toDegrees(lon), _ol_math_.toDegrees(lat)]; + return [toDegrees(lon), toDegrees(lat)]; }, getTransform(geoProjection, projection), squaredTolerance); }; diff --git a/src/ol/geom/flat/interpolate.js b/src/ol/geom/flat/interpolate.js index 8e4c0ff6ff..76e55f74bc 100644 --- a/src/ol/geom/flat/interpolate.js +++ b/src/ol/geom/flat/interpolate.js @@ -2,7 +2,7 @@ * @module ol/geom/flat/interpolate */ import {binarySearch} from '../../array.js'; -import _ol_math_ from '../../math.js'; +import {lerp} from '../../math.js'; var _ol_geom_flat_interpolate_ = {}; @@ -47,9 +47,9 @@ _ol_geom_flat_interpolate_.lineString = function(flatCoordinates, offset, end, s var t = (target - cumulativeLengths[-index - 2]) / (cumulativeLengths[-index - 1] - cumulativeLengths[-index - 2]); var o = offset + (-index - 2) * stride; - pointX = _ol_math_.lerp( + pointX = lerp( flatCoordinates[o], flatCoordinates[o + stride], t); - pointY = _ol_math_.lerp( + pointY = lerp( flatCoordinates[o + 1], flatCoordinates[o + stride + 1], t); } else { pointX = flatCoordinates[offset + index * stride]; @@ -120,7 +120,7 @@ _ol_geom_flat_interpolate_.lineStringCoordinateAtM = function(flatCoordinates, o coordinate = []; var i; for (i = 0; i < stride - 1; ++i) { - coordinate.push(_ol_math_.lerp(flatCoordinates[(lo - 1) * stride + i], + coordinate.push(lerp(flatCoordinates[(lo - 1) * stride + i], flatCoordinates[lo * stride + i], t)); } coordinate.push(m); diff --git a/src/ol/geom/flat/simplify.js b/src/ol/geom/flat/simplify.js index ed396c4d04..f827f81bc1 100644 --- a/src/ol/geom/flat/simplify.js +++ b/src/ol/geom/flat/simplify.js @@ -27,7 +27,7 @@ // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. -import _ol_math_ from '../../math.js'; +import {squaredSegmentDistance, squaredDistance} from '../../math.js'; var _ol_geom_flat_simplify_ = {}; @@ -103,7 +103,7 @@ _ol_geom_flat_simplify_.douglasPeucker = function(flatCoordinates, offset, end, for (i = first + stride; i < last; i += stride) { var x = flatCoordinates[i]; var y = flatCoordinates[i + 1]; - var squaredDistance = _ol_math_.squaredSegmentDistance( + var squaredDistance = squaredSegmentDistance( x, y, x1, y1, x2, y2); if (squaredDistance > maxSquaredDistance) { index = i; @@ -221,7 +221,7 @@ _ol_geom_flat_simplify_.radialDistance = function(flatCoordinates, offset, end, for (offset += stride; offset < end; offset += stride) { x2 = flatCoordinates[offset]; y2 = flatCoordinates[offset + 1]; - if (_ol_math_.squaredDistance(x1, y1, x2, y2) > squaredTolerance) { + if (squaredDistance(x1, y1, x2, y2) > squaredTolerance) { // copy point at offset simplifiedFlatCoordinates[simplifiedOffset++] = x2; simplifiedFlatCoordinates[simplifiedOffset++] = y2; diff --git a/src/ol/geom/flat/textpath.js b/src/ol/geom/flat/textpath.js index 1b0569f3ea..1b02a58901 100644 --- a/src/ol/geom/flat/textpath.js +++ b/src/ol/geom/flat/textpath.js @@ -1,7 +1,7 @@ /** * @module ol/geom/flat/textpath */ -import _ol_math_ from '../../math.js'; +import {lerp} from '../../math.js'; var _ol_geom_flat_textpath_ = {}; @@ -67,8 +67,8 @@ _ol_geom_flat_textpath_.lineString = function( } } var interpolate = segmentPos / segmentLength; - var x = _ol_math_.lerp(x1, x2, interpolate); - var y = _ol_math_.lerp(y1, y2, interpolate); + var x = lerp(x1, x2, interpolate); + var y = lerp(y1, y2, interpolate); if (previousAngle == angle) { if (reverse) { data[0] = x; diff --git a/src/ol/interaction/Interaction.js b/src/ol/interaction/Interaction.js index 6a9bd864df..d3eccbfd15 100644 --- a/src/ol/interaction/Interaction.js +++ b/src/ol/interaction/Interaction.js @@ -5,7 +5,7 @@ import {inherits} from '../index.js'; import _ol_Object_ from '../Object.js'; import {easeOut, linear} from '../easing.js'; import _ol_interaction_Property_ from '../interaction/Property.js'; -import _ol_math_ from '../math.js'; +import {clamp} from '../math.js'; /** @@ -198,7 +198,7 @@ Interaction.zoomByDelta = function(view, delta, opt_anchor, opt_duration) { if (resolution !== undefined) { var resolutions = view.getResolutions(); - resolution = _ol_math_.clamp( + resolution = clamp( resolution, view.getMinResolution() || resolutions[resolutions.length - 1], view.getMaxResolution() || resolutions[0]); diff --git a/src/ol/interaction/MouseWheelZoom.js b/src/ol/interaction/MouseWheelZoom.js index c7c09d6bc5..47f98b6a5e 100644 --- a/src/ol/interaction/MouseWheelZoom.js +++ b/src/ol/interaction/MouseWheelZoom.js @@ -7,7 +7,7 @@ import {easeOut} from '../easing.js'; import EventType from '../events/EventType.js'; import _ol_has_ from '../has.js'; import Interaction from '../interaction/Interaction.js'; -import _ol_math_ from '../math.js'; +import {clamp} from '../math.js'; /** @@ -260,7 +260,7 @@ _ol_interaction_MouseWheelZoom_.prototype.handleWheelZoom_ = function(map) { view.cancelAnimations(); } var maxDelta = MAX_DELTA; - var delta = _ol_math_.clamp(this.delta_, -maxDelta, maxDelta); + var delta = clamp(this.delta_, -maxDelta, maxDelta); Interaction.zoomByDelta(view, -delta, this.lastAnchor_, this.duration_); this.mode_ = undefined; diff --git a/src/ol/layer/Base.js b/src/ol/layer/Base.js index 9e0af69142..95047043a6 100644 --- a/src/ol/layer/Base.js +++ b/src/ol/layer/Base.js @@ -4,7 +4,7 @@ import {inherits} from '../index.js'; import _ol_Object_ from '../Object.js'; import _ol_layer_Property_ from '../layer/Property.js'; -import _ol_math_ from '../math.js'; +import {clamp} from '../math.js'; import _ol_obj_ from '../obj.js'; /** @@ -76,7 +76,7 @@ _ol_layer_Base_.prototype.getType = function() { * @return {ol.LayerState} Layer state. */ _ol_layer_Base_.prototype.getLayerState = function() { - this.state_.opacity = _ol_math_.clamp(this.getOpacity(), 0, 1); + this.state_.opacity = clamp(this.getOpacity(), 0, 1); this.state_.sourceState = this.getSourceState(); this.state_.visible = this.getVisible(); this.state_.extent = this.getExtent(); diff --git a/src/ol/layer/Heatmap.js b/src/ol/layer/Heatmap.js index c6e667de23..de1771c3d2 100644 --- a/src/ol/layer/Heatmap.js +++ b/src/ol/layer/Heatmap.js @@ -6,7 +6,7 @@ import {inherits} from '../index.js'; import _ol_Object_ from '../Object.js'; import {createCanvasContext2D} from '../dom.js'; import _ol_layer_Vector_ from '../layer/Vector.js'; -import _ol_math_ from '../math.js'; +import {clamp} from '../math.js'; import _ol_obj_ from '../obj.js'; import RenderEventType from '../render/EventType.js'; import _ol_style_Icon_ from '../style/Icon.js'; @@ -111,7 +111,7 @@ var Heatmap = function(opt_options) { this.setStyle(function(feature, resolution) { var weight = weightFunction(feature); - var opacity = weight !== undefined ? _ol_math_.clamp(weight, 0, 1) : 1; + var opacity = weight !== undefined ? clamp(weight, 0, 1) : 1; // cast to 8 bits var index = (255 * opacity) | 0; var style = this.styleCache_[index]; diff --git a/src/ol/math.js b/src/ol/math.js index 03f707832c..a7da325e44 100644 --- a/src/ol/math.js +++ b/src/ol/math.js @@ -2,8 +2,6 @@ * @module ol/math */ import {assert} from './asserts.js'; -var _ol_math_ = {}; - /** * Takes a number and clamps it to within the provided bounds. @@ -13,9 +11,9 @@ var _ol_math_ = {}; * @return {number} The input number if it is within bounds, or the nearest * number within the bounds. */ -_ol_math_.clamp = function(value, min, max) { +export function clamp(value, min, max) { return Math.min(Math.max(value, min), max); -}; +} /** @@ -27,7 +25,7 @@ _ol_math_.clamp = function(value, min, max) { * @param {number} x X. * @return {number} Hyperbolic cosine of x. */ -_ol_math_.cosh = (function() { +export var cosh = (function() { // Wrapped in a iife, to save the overhead of checking for the native // implementation on every invocation. var cosh; @@ -49,10 +47,10 @@ _ol_math_.cosh = (function() { * @param {number} x X. * @return {number} The smallest power of two greater than or equal to x. */ -_ol_math_.roundUpToPowerOfTwo = function(x) { +export function roundUpToPowerOfTwo(x) { assert(0 < x, 29); // `x` must be greater than `0` return Math.pow(2, Math.ceil(Math.log(x) / Math.LN2)); -}; +} /** @@ -66,7 +64,7 @@ _ol_math_.roundUpToPowerOfTwo = function(x) { * @param {number} y2 Y2. * @return {number} Squared distance. */ -_ol_math_.squaredSegmentDistance = function(x, y, x1, y1, x2, y2) { +export function squaredSegmentDistance(x, y, x1, y1, x2, y2) { var dx = x2 - x1; var dy = y2 - y1; if (dx !== 0 || dy !== 0) { @@ -79,8 +77,8 @@ _ol_math_.squaredSegmentDistance = function(x, y, x1, y1, x2, y2) { y1 += dy * t; } } - return _ol_math_.squaredDistance(x, y, x1, y1); -}; + return squaredDistance(x, y, x1, y1); +} /** @@ -91,11 +89,11 @@ _ol_math_.squaredSegmentDistance = function(x, y, x1, y1, x2, y2) { * @param {number} y2 Y2. * @return {number} Squared distance. */ -_ol_math_.squaredDistance = function(x1, y1, x2, y2) { +export function squaredDistance(x1, y1, x2, y2) { var dx = x2 - x1; var dy = y2 - y1; return dx * dx + dy * dy; -}; +} /** @@ -105,7 +103,7 @@ _ol_math_.squaredDistance = function(x1, y1, x2, y2) { * in row-major order. * @return {Array.} The resulting vector. */ -_ol_math_.solveLinearSystem = function(mat) { +export function solveLinearSystem(mat) { var n = mat.length; for (var i = 0; i < n; i++) { @@ -151,7 +149,7 @@ _ol_math_.solveLinearSystem = function(mat) { } } return x; -}; +} /** @@ -160,9 +158,9 @@ _ol_math_.solveLinearSystem = function(mat) { * @param {number} angleInRadians Angle in radians. * @return {number} Angle in degrees. */ -_ol_math_.toDegrees = function(angleInRadians) { +export function toDegrees(angleInRadians) { return angleInRadians * 180 / Math.PI; -}; +} /** @@ -171,9 +169,9 @@ _ol_math_.toDegrees = function(angleInRadians) { * @param {number} angleInDegrees Angle in degrees. * @return {number} Angle in radians. */ -_ol_math_.toRadians = function(angleInDegrees) { +export function toRadians(angleInDegrees) { return angleInDegrees * Math.PI / 180; -}; +} /** * Returns the modulo of a / b, depending on the sign of b. @@ -182,10 +180,10 @@ _ol_math_.toRadians = function(angleInDegrees) { * @param {number} b Divisor. * @return {number} Modulo. */ -_ol_math_.modulo = function(a, b) { +export function modulo(a, b) { var r = a % b; return r * b < 0 ? r + b : r; -}; +} /** * Calculates the linearly interpolated value of x between a and b. @@ -195,7 +193,6 @@ _ol_math_.modulo = function(a, b) { * @param {number} x Value to be interpolated. * @return {number} Interpolated value. */ -_ol_math_.lerp = function(a, b, x) { +export function lerp(a, b, x) { return a + x * (b - a); -}; -export default _ol_math_; +} diff --git a/src/ol/proj.js b/src/ol/proj.js index 6aadf4435c..7dfc123ca1 100644 --- a/src/ol/proj.js +++ b/src/ol/proj.js @@ -3,7 +3,7 @@ */ import Sphere from './Sphere.js'; import {applyTransform} from './extent.js'; -import math from './math.js'; +import {modulo} from './math.js'; import EPSG3857 from './proj/EPSG3857.js'; import EPSG4326 from './proj/EPSG4326.js'; import Projection from './proj/Projection.js'; @@ -323,7 +323,7 @@ export function toLonLat(coordinate, opt_projection) { opt_projection !== undefined ? opt_projection : 'EPSG:3857', 'EPSG:4326'); var lon = lonLat[0]; if (lon < -180 || lon > 180) { - lonLat[0] = math.modulo(lon + 180, 360) - 180; + lonLat[0] = modulo(lon + 180, 360) - 180; } return lonLat; } diff --git a/src/ol/proj/EPSG3857.js b/src/ol/proj/EPSG3857.js index 75ecdf9321..33b3bce5cd 100644 --- a/src/ol/proj/EPSG3857.js +++ b/src/ol/proj/EPSG3857.js @@ -2,7 +2,7 @@ * @module ol/proj/EPSG3857 */ import {inherits} from '../index.js'; -import _ol_math_ from '../math.js'; +import {cosh} from '../math.js'; import _ol_proj_Projection_ from '../proj/Projection.js'; import _ol_proj_Units_ from '../proj/Units.js'; var _ol_proj_EPSG3857_ = {}; @@ -25,7 +25,7 @@ _ol_proj_EPSG3857_.Projection_ = function(code) { global: true, worldExtent: _ol_proj_EPSG3857_.WORLD_EXTENT, getPointResolution: function(resolution, point) { - return resolution / _ol_math_.cosh(point[1] / _ol_proj_EPSG3857_.RADIUS); + return resolution / cosh(point[1] / _ol_proj_EPSG3857_.RADIUS); } }); }; diff --git a/src/ol/renderer/webgl/TileLayer.js b/src/ol/renderer/webgl/TileLayer.js index 0d809c1cdb..149f3c7815 100644 --- a/src/ol/renderer/webgl/TileLayer.js +++ b/src/ol/renderer/webgl/TileLayer.js @@ -10,7 +10,7 @@ import TileRange from '../../TileRange.js'; import _ol_TileState_ from '../../TileState.js'; import {numberSafeCompareFunction} from '../../array.js'; import {createEmpty, intersects} from '../../extent.js'; -import _ol_math_ from '../../math.js'; +import {roundUpToPowerOfTwo} from '../../math.js'; import RendererType from '../Type.js'; import _ol_renderer_webgl_Layer_ from '../webgl/Layer.js'; import _ol_renderer_webgl_tilelayershader_ from '../webgl/tilelayershader.js'; @@ -201,7 +201,7 @@ _ol_renderer_webgl_TileLayer_.prototype.prepareFrame = function(frameState, laye var maxDimension = Math.max( tileRangeSize[0] * tilePixelSize[0], tileRangeSize[1] * tilePixelSize[1]); - var framebufferDimension = _ol_math_.roundUpToPowerOfTwo(maxDimension); + var framebufferDimension = roundUpToPowerOfTwo(maxDimension); var framebufferExtentDimension = tilePixelResolution * framebufferDimension; var origin = tileGrid.getOrigin(z); var minX = origin[0] + diff --git a/src/ol/reproj.js b/src/ol/reproj.js index 9cb9bc301f..8d5690beea 100644 --- a/src/ol/reproj.js +++ b/src/ol/reproj.js @@ -3,7 +3,7 @@ */ import {createCanvasContext2D} from './dom.js'; import {containsCoordinate, createEmpty, extend, getHeight, getTopLeft, getWidth} from './extent.js'; -import _ol_math_ from './math.js'; +import {solveLinearSystem} from './math.js'; import {getPointResolution, transform} from './proj.js'; var _ol_reproj_ = {}; @@ -181,7 +181,7 @@ _ol_reproj_.render = function(width, height, pixelRatio, [0, 0, x1, y1, v1 - v0], [0, 0, x2, y2, v2 - v0] ]; - var affineCoefs = _ol_math_.solveLinearSystem(augmentedMatrix); + var affineCoefs = solveLinearSystem(augmentedMatrix); if (!affineCoefs) { return; } diff --git a/src/ol/reproj/Tile.js b/src/ol/reproj/Tile.js index 7feecf1512..dbab5f9f99 100644 --- a/src/ol/reproj/Tile.js +++ b/src/ol/reproj/Tile.js @@ -8,7 +8,7 @@ import _ol_TileState_ from '../TileState.js'; import _ol_events_ from '../events.js'; import EventType from '../events/EventType.js'; import {getArea, getCenter, getIntersection} from '../extent.js'; -import _ol_math_ from '../math.js'; +import {clamp} from '../math.js'; import _ol_reproj_ from '../reproj.js'; import _ol_reproj_Triangulation_ from '../reproj/Triangulation.js'; @@ -157,9 +157,9 @@ var _ol_reproj_Tile_ = function(sourceProj, sourceTileGrid, if (maxSourceExtent) { if (sourceProj.canWrapX()) { - sourceExtent[1] = _ol_math_.clamp( + sourceExtent[1] = clamp( sourceExtent[1], maxSourceExtent[1], maxSourceExtent[3]); - sourceExtent[3] = _ol_math_.clamp( + sourceExtent[3] = clamp( sourceExtent[3], maxSourceExtent[1], maxSourceExtent[3]); } else { sourceExtent = getIntersection(sourceExtent, maxSourceExtent); diff --git a/src/ol/reproj/Triangulation.js b/src/ol/reproj/Triangulation.js index 033b0ee8bb..6d552e9f2a 100644 --- a/src/ol/reproj/Triangulation.js +++ b/src/ol/reproj/Triangulation.js @@ -3,7 +3,7 @@ */ import {boundingExtent, createEmpty, extendCoordinate, getBottomLeft, getBottomRight, getTopLeft, getTopRight, getWidth, intersects} from '../extent.js'; -import _ol_math_ from '../math.js'; +import {modulo} from '../math.js'; import {getTransform} from '../proj.js'; @@ -270,10 +270,10 @@ _ol_reproj_Triangulation_.prototype.addQuad_ = function(a, b, c, d, var dx; if (wrapsX) { var centerSrcEstimX = - (_ol_math_.modulo(aSrc[0], sourceWorldWidth) + - _ol_math_.modulo(cSrc[0], sourceWorldWidth)) / 2; + (modulo(aSrc[0], sourceWorldWidth) + + modulo(cSrc[0], sourceWorldWidth)) / 2; dx = centerSrcEstimX - - _ol_math_.modulo(centerSrc[0], sourceWorldWidth); + modulo(centerSrc[0], sourceWorldWidth); } else { dx = (aSrc[0] + cSrc[0]) / 2 - centerSrc[0]; } diff --git a/src/ol/source/TileArcGISRest.js b/src/ol/source/TileArcGISRest.js index f285ab9dfc..bd7f426651 100644 --- a/src/ol/source/TileArcGISRest.js +++ b/src/ol/source/TileArcGISRest.js @@ -3,7 +3,7 @@ */ import {inherits} from '../index.js'; import {createEmpty} from '../extent.js'; -import _ol_math_ from '../math.js'; +import {modulo} from '../math.js'; import _ol_obj_ from '../obj.js'; import _ol_size_ from '../size.js'; import _ol_source_TileImage_ from '../source/TileImage.js'; @@ -118,7 +118,7 @@ _ol_source_TileArcGISRest_.prototype.getRequestUrl_ = function(tileCoord, tileSi if (urls.length == 1) { url = urls[0]; } else { - var index = _ol_math_.modulo(_ol_tilecoord_.hash(tileCoord), urls.length); + var index = modulo(_ol_tilecoord_.hash(tileCoord), urls.length); url = urls[index]; } diff --git a/src/ol/source/TileWMS.js b/src/ol/source/TileWMS.js index 801fd87d13..997a49ccb1 100644 --- a/src/ol/source/TileWMS.js +++ b/src/ol/source/TileWMS.js @@ -7,7 +7,7 @@ import {inherits} from '../index.js'; import {assert} from '../asserts.js'; import {buffer, createEmpty} from '../extent.js'; import _ol_obj_ from '../obj.js'; -import _ol_math_ from '../math.js'; +import {modulo} from '../math.js'; import {get as getProjection, transform, transformExtent} from '../proj.js'; import _ol_reproj_ from '../reproj.js'; import _ol_size_ from '../size.js'; @@ -247,7 +247,7 @@ _ol_source_TileWMS_.prototype.getRequestUrl_ = function(tileCoord, tileSize, til if (urls.length == 1) { url = urls[0]; } else { - var index = _ol_math_.modulo(_ol_tilecoord_.hash(tileCoord), urls.length); + var index = modulo(_ol_tilecoord_.hash(tileCoord), urls.length); url = urls[index]; } return _ol_uri_.appendParams(url, params); diff --git a/src/ol/tilegrid/TileGrid.js b/src/ol/tilegrid/TileGrid.js index c158879d31..f2bec1efbd 100644 --- a/src/ol/tilegrid/TileGrid.js +++ b/src/ol/tilegrid/TileGrid.js @@ -6,7 +6,7 @@ import {assert} from '../asserts.js'; import TileRange from '../TileRange.js'; import {isSorted, linearFindNearest} from '../array.js'; import {createOrUpdate, getTopLeft} from '../extent.js'; -import _ol_math_ from '../math.js'; +import {clamp} from '../math.js'; import _ol_size_ from '../size.js'; import _ol_tilecoord_ from '../tilecoord.js'; @@ -529,7 +529,7 @@ _ol_tilegrid_TileGrid_.prototype.getFullTileRange = function(z) { _ol_tilegrid_TileGrid_.prototype.getZForResolution = function( resolution, opt_direction) { var z = linearFindNearest(this.resolutions_, resolution, opt_direction || 0); - return _ol_math_.clamp(z, this.minZoom, this.maxZoom); + return clamp(z, this.minZoom, this.maxZoom); }; diff --git a/src/ol/tileurlfunction.js b/src/ol/tileurlfunction.js index 29732c99be..d00c07d8fc 100644 --- a/src/ol/tileurlfunction.js +++ b/src/ol/tileurlfunction.js @@ -2,7 +2,7 @@ * @module ol/tileurlfunction */ import {assert} from './asserts.js'; -import _ol_math_ from './math.js'; +import {modulo} from './math.js'; import _ol_tilecoord_ from './tilecoord.js'; @@ -81,7 +81,7 @@ export function createFromTileUrlFunctions(tileUrlFunctions) { return undefined; } else { var h = _ol_tilecoord_.hash(tileCoord); - var index = _ol_math_.modulo(h, tileUrlFunctions.length); + var index = modulo(h, tileUrlFunctions.length); return tileUrlFunctions[index](tileCoord, pixelRatio, projection); } } diff --git a/test/spec/ol/math.test.js b/test/spec/ol/math.test.js index ed93f51e7e..53a31f3be0 100644 --- a/test/spec/ol/math.test.js +++ b/test/spec/ol/math.test.js @@ -1,26 +1,26 @@ -import _ol_math_ from '../../../src/ol/math.js'; +import {clamp, lerp, cosh, roundUpToPowerOfTwo, solveLinearSystem, toDegrees, toRadians, modulo} from '../../../src/ol/math.js'; describe('ol.math.clamp', function() { it('returns the correct value at -Infinity', function() { - expect(_ol_math_.clamp(-Infinity, 10, 20)).to.eql(10); + expect(clamp(-Infinity, 10, 20)).to.eql(10); }); it('returns the correct value at min', function() { - expect(_ol_math_.clamp(10, 10, 20)).to.eql(10); + expect(clamp(10, 10, 20)).to.eql(10); }); it('returns the correct value at mid point', function() { - expect(_ol_math_.clamp(15, 10, 20)).to.eql(15); + expect(clamp(15, 10, 20)).to.eql(15); }); it('returns the correct value at max', function() { - expect(_ol_math_.clamp(20, 10, 20)).to.eql(20); + expect(clamp(20, 10, 20)).to.eql(20); }); it('returns the correct value at Infinity', function() { - expect(_ol_math_.clamp(Infinity, 10, 20)).to.eql(20); + expect(clamp(Infinity, 10, 20)).to.eql(20); }); }); @@ -28,23 +28,23 @@ describe('ol.math.clamp', function() { describe('ol.math.cosh', function() { it('returns the correct value at -Infinity', function() { - expect(_ol_math_.cosh(-Infinity)).to.eql(Infinity); + expect(cosh(-Infinity)).to.eql(Infinity); }); it('returns the correct value at -1', function() { - expect(_ol_math_.cosh(-1)).to.roughlyEqual(1.5430806348152437, 1e-9); + expect(cosh(-1)).to.roughlyEqual(1.5430806348152437, 1e-9); }); it('returns the correct value at 0', function() { - expect(_ol_math_.cosh(0)).to.eql(1); + expect(cosh(0)).to.eql(1); }); it('returns the correct value at 1', function() { - expect(_ol_math_.cosh(1)).to.roughlyEqual(1.5430806348152437, 1e-9); + expect(cosh(1)).to.roughlyEqual(1.5430806348152437, 1e-9); }); it('returns the correct value at Infinity', function() { - expect(_ol_math_.cosh(Infinity)).to.eql(Infinity); + expect(cosh(Infinity)).to.eql(Infinity); }); }); @@ -53,37 +53,37 @@ describe('ol.math.roundUpToPowerOfTwo', function() { it('raises an exception when x is negative', function() { expect(function() { - _ol_math_.roundUpToPowerOfTwo(-1); + roundUpToPowerOfTwo(-1); }).to.throwException(); }); it('raises an exception when x is zero', function() { expect(function() { - _ol_math_.roundUpToPowerOfTwo(0); + roundUpToPowerOfTwo(0); }).to.throwException(); }); it('returns the expected value for simple powers of two', function() { - expect(_ol_math_.roundUpToPowerOfTwo(1)).to.be(1); - expect(_ol_math_.roundUpToPowerOfTwo(2)).to.be(2); - expect(_ol_math_.roundUpToPowerOfTwo(4)).to.be(4); - expect(_ol_math_.roundUpToPowerOfTwo(8)).to.be(8); - expect(_ol_math_.roundUpToPowerOfTwo(16)).to.be(16); - expect(_ol_math_.roundUpToPowerOfTwo(32)).to.be(32); - expect(_ol_math_.roundUpToPowerOfTwo(64)).to.be(64); - expect(_ol_math_.roundUpToPowerOfTwo(128)).to.be(128); - expect(_ol_math_.roundUpToPowerOfTwo(256)).to.be(256); + expect(roundUpToPowerOfTwo(1)).to.be(1); + expect(roundUpToPowerOfTwo(2)).to.be(2); + expect(roundUpToPowerOfTwo(4)).to.be(4); + expect(roundUpToPowerOfTwo(8)).to.be(8); + expect(roundUpToPowerOfTwo(16)).to.be(16); + expect(roundUpToPowerOfTwo(32)).to.be(32); + expect(roundUpToPowerOfTwo(64)).to.be(64); + expect(roundUpToPowerOfTwo(128)).to.be(128); + expect(roundUpToPowerOfTwo(256)).to.be(256); }); it('returns the expected value for simple powers of ten', function() { - expect(_ol_math_.roundUpToPowerOfTwo(1)).to.be(1); - expect(_ol_math_.roundUpToPowerOfTwo(10)).to.be(16); - expect(_ol_math_.roundUpToPowerOfTwo(100)).to.be(128); - expect(_ol_math_.roundUpToPowerOfTwo(1000)).to.be(1024); - expect(_ol_math_.roundUpToPowerOfTwo(10000)).to.be(16384); - expect(_ol_math_.roundUpToPowerOfTwo(100000)).to.be(131072); - expect(_ol_math_.roundUpToPowerOfTwo(1000000)).to.be(1048576); - expect(_ol_math_.roundUpToPowerOfTwo(10000000)).to.be(16777216); + expect(roundUpToPowerOfTwo(1)).to.be(1); + expect(roundUpToPowerOfTwo(10)).to.be(16); + expect(roundUpToPowerOfTwo(100)).to.be(128); + expect(roundUpToPowerOfTwo(1000)).to.be(1024); + expect(roundUpToPowerOfTwo(10000)).to.be(16384); + expect(roundUpToPowerOfTwo(100000)).to.be(131072); + expect(roundUpToPowerOfTwo(1000000)).to.be(1048576); + expect(roundUpToPowerOfTwo(10000000)).to.be(16777216); }); }); @@ -91,7 +91,7 @@ describe('ol.math.roundUpToPowerOfTwo', function() { describe('ol.math.solveLinearSystem', function() { it('calculates correctly', function() { - var result = _ol_math_.solveLinearSystem([ + var result = solveLinearSystem([ [2, 1, 3, 1], [2, 6, 8, 3], [6, 8, 18, 5] @@ -102,7 +102,7 @@ describe('ol.math.solveLinearSystem', function() { }); it('can handle singular matrix', function() { - var result = _ol_math_.solveLinearSystem([ + var result = solveLinearSystem([ [2, 1, 3, 1], [2, 6, 8, 3], [2, 1, 3, 1] @@ -114,60 +114,60 @@ describe('ol.math.solveLinearSystem', function() { describe('ol.math.toDegrees', function() { it('returns the correct value at -π', function() { - expect(_ol_math_.toDegrees(-Math.PI)).to.be(-180); + expect(toDegrees(-Math.PI)).to.be(-180); }); it('returns the correct value at 0', function() { - expect(_ol_math_.toDegrees(0)).to.be(0); + expect(toDegrees(0)).to.be(0); }); it('returns the correct value at π', function() { - expect(_ol_math_.toDegrees(Math.PI)).to.be(180); + expect(toDegrees(Math.PI)).to.be(180); }); }); describe('ol.math.toRadians', function() { it('returns the correct value at -180', function() { - expect(_ol_math_.toRadians(-180)).to.be(-Math.PI); + expect(toRadians(-180)).to.be(-Math.PI); }); it('returns the correct value at 0', function() { - expect(_ol_math_.toRadians(0)).to.be(0); + expect(toRadians(0)).to.be(0); }); it('returns the correct value at 180', function() { - expect(_ol_math_.toRadians(180)).to.be(Math.PI); + expect(toRadians(180)).to.be(Math.PI); }); }); describe('ol.math.modulo', function() { it('256 / 8 returns 0', function() { - expect(_ol_math_.modulo(256, 8)).to.be(0); + expect(modulo(256, 8)).to.be(0); }); it('positive and positive returns a positive ', function() { - expect(_ol_math_.modulo(7, 8)).to.be(7); + expect(modulo(7, 8)).to.be(7); }); it('same Dividend and Divisor returns 0', function() { - expect(_ol_math_.modulo(4, 4)).to.be(0); + expect(modulo(4, 4)).to.be(0); }); it('negative and positive returns positive', function() { - expect(_ol_math_.modulo(-3, 4)).to.be(1); + expect(modulo(-3, 4)).to.be(1); }); it('negative and negative returns negative', function() { - expect(_ol_math_.modulo(-4, -5)).to.be(-4); - expect(_ol_math_.modulo(-3, -4)).to.be(-3); + expect(modulo(-4, -5)).to.be(-4); + expect(modulo(-3, -4)).to.be(-3); }); it('positive and negative returns negative', function() { - expect(_ol_math_.modulo(3, -4)).to.be(-1); - expect(_ol_math_.modulo(1, -5)).to.be(-4); - expect(_ol_math_.modulo(6, -5)).to.be(-4); + expect(modulo(3, -4)).to.be(-1); + expect(modulo(1, -5)).to.be(-4); + expect(modulo(6, -5)).to.be(-4); }); }); describe('ol.math.lerp', function() { it('correctly interpolated numbers', function() { - expect(_ol_math_.lerp(0, 0, 0)).to.be(0); - expect(_ol_math_.lerp(0, 1, 0)).to.be(0); - expect(_ol_math_.lerp(1, 11, 5)).to.be(51); + expect(lerp(0, 0, 0)).to.be(0); + expect(lerp(0, 1, 0)).to.be(0); + expect(lerp(1, 11, 5)).to.be(51); }); it('correctly interpolates floats', function() { - expect(_ol_math_.lerp(0, 1, 0.5)).to.be(0.5); - expect(_ol_math_.lerp(0.25, 0.75, 0.5)).to.be(0.5); + expect(lerp(0, 1, 0.5)).to.be(0.5); + expect(lerp(0.25, 0.75, 0.5)).to.be(0.5); }); });