Skip to content

Commit

Permalink
Bug fixed: 360 degrees now allowed as maximal longitude
Browse files Browse the repository at this point in the history
  • Loading branch information
JeremyHeleine committed Sep 7, 2015
1 parent a14ab52 commit 688f24c
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 81 deletions.
47 changes: 32 additions & 15 deletions photo-sphere-viewer.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Photo Sphere Viewer v2.4
* Photo Sphere Viewer v2.4.1
* http://jeremyheleine.me/photo-sphere-viewer
*
* Copyright (c) 2014,2015 Jérémy Heleine
Expand Down Expand Up @@ -150,11 +150,13 @@ var PhotoSphereViewer = function(args) {
* Returns the measure of an angle (between 0 and 2π).
* @private
* @param {number} angle - The angle to reduce
* @param {boolean} [is_2pi_allowed=false] - Can the measure be equal to 2π?
* @return {number} The wanted measure
**/

var getAngleMeasure = function(angle) {
return angle - Math.floor(angle / (2.0 * Math.PI)) * 2.0 * Math.PI;
var getAngleMeasure = function(angle, is_2pi_allowed) {
is_2pi_allowed = (is_2pi_allowed !== undefined) ? !!is_2pi_allowed : false;
return (is_2pi_allowed && angle == 2 * Math.PI) ? 2 * Math.PI : angle - Math.floor(angle / (2.0 * Math.PI)) * 2.0 * Math.PI;
};

/**
Expand Down Expand Up @@ -581,7 +583,7 @@ var PhotoSphereViewer = function(args) {

var again = true;

if (PSV_MIN_LONGITUDE != PSV_MAX_LONGITUDE) {
if (!whole_circle) {
long = stayBetween(long, PSV_MIN_LONGITUDE, PSV_MAX_LONGITUDE);

if (long == PSV_MIN_LONGITUDE || long == PSV_MAX_LONGITUDE) {
Expand All @@ -596,7 +598,7 @@ var PhotoSphereViewer = function(args) {
}
}

long = getAngleMeasure(long);
long = getAngleMeasure(long, true);

render();

Expand Down Expand Up @@ -744,7 +746,7 @@ var PhotoSphereViewer = function(args) {
var moveTo = function(longitude, latitude) {
var long_tmp = parseAngle(longitude);

if (PSV_MIN_LONGITUDE != PSV_MAX_LONGITUDE)
if (!whole_circle)
long_tmp = stayBetween(long_tmp, PSV_MIN_LONGITUDE, PSV_MAX_LONGITUDE);

var lat_tmp = parseAngle(latitude);
Expand Down Expand Up @@ -912,10 +914,10 @@ var PhotoSphereViewer = function(args) {
if (mousedown) {
long += (x - mouse_x) * PSV_LONG_OFFSET;

if (PSV_MIN_LONGITUDE != PSV_MAX_LONGITUDE)
if (!whole_circle)
long = stayBetween(long, PSV_MIN_LONGITUDE, PSV_MAX_LONGITUDE);

long = getAngleMeasure(long);
long = getAngleMeasure(long, true);

lat += (y - mouse_y) * PSV_LAT_OFFSET;
lat = stayBetween(lat, PSV_TILT_DOWN_MAX, PSV_TILT_UP_MAX);
Expand Down Expand Up @@ -1340,14 +1342,29 @@ var PhotoSphereViewer = function(args) {
var PSV_TILT_UP_MAX = (args.tilt_up_max !== undefined) ? stayBetween(parseAngle(args.tilt_up_max), 0, Math.PI / 2.0) : Math.PI / 2.0;
var PSV_TILT_DOWN_MAX = (args.tilt_down_max !== undefined) ? -stayBetween(parseAngle(args.tilt_down_max), 0, Math.PI / 2.0) : -Math.PI / 2.0;

// Minimum and maximum visible longitudes ((min = max) => whole circle)
var PSV_MIN_LONGITUDE = (args.min_longitude !== undefined) ? parseAngle(args.min_longitude) : 0;
var PSV_MAX_LONGITUDE = (args.max_longitude !== undefined) ? parseAngle(args.max_longitude) : 0;
// Minimum and maximum visible longitudes
var min_long = (args.min_longitude !== undefined) ? parseAngle(args.min_longitude) : 0;
var max_long = (args.max_longitude !== undefined) ? parseAngle(args.max_longitude) : 0;

if (PSV_MAX_LONGITUDE < PSV_MIN_LONGITUDE) {
var long_tmp = PSV_MIN_LONGITUDE;
PSV_MIN_LONGITUDE = PSV_MAX_LONGITUDE;
PSV_MAX_LONGITUDE = long_tmp;
var whole_circle = (min_long == max_long);

if (whole_circle) {
min_long = 0;
max_long = 2 * Math.PI;
}

else if (max_long == 0)
max_long = 2 * Math.PI;

var PSV_MIN_LONGITUDE, PSV_MAX_LONGITUDE;
if (min_long < max_long) {
PSV_MIN_LONGITUDE = min_long;
PSV_MAX_LONGITUDE = max_long;
}

else {
PSV_MIN_LONGITUDE = max_long;
PSV_MAX_LONGITUDE = min_long;
}

// Default position
Expand Down
2 changes: 1 addition & 1 deletion photo-sphere-viewer.min.js

Large diffs are not rendered by default.

25 changes: 0 additions & 25 deletions src/PSVNavBar.js
Original file line number Diff line number Diff line change
@@ -1,28 +1,3 @@
/*
* Photo Sphere Viewer v2.4
* http://jeremyheleine.me/photo-sphere-viewer
*
* Copyright (c) 2014,2015 Jérémy Heleine
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/

/**
* Represents the navigation bar.
* @class
Expand Down
25 changes: 0 additions & 25 deletions src/PSVNavBarButton.js
Original file line number Diff line number Diff line change
@@ -1,28 +1,3 @@
/*
* Photo Sphere Viewer v2.4
* http://jeremyheleine.me/photo-sphere-viewer
*
* Copyright (c) 2014,2015 Jérémy Heleine
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/

/**
* Represents a navigation bar button.
* @class
Expand Down
47 changes: 32 additions & 15 deletions src/PhotoSphereViewer.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Photo Sphere Viewer v2.4
* Photo Sphere Viewer v2.4.1
* http://jeremyheleine.me/photo-sphere-viewer
*
* Copyright (c) 2014,2015 Jérémy Heleine
Expand Down Expand Up @@ -150,11 +150,13 @@ var PhotoSphereViewer = function(args) {
* Returns the measure of an angle (between 0 and 2π).
* @private
* @param {number} angle - The angle to reduce
* @param {boolean} [is_2pi_allowed=false] - Can the measure be equal to 2π?
* @return {number} The wanted measure
**/

var getAngleMeasure = function(angle) {
return angle - Math.floor(angle / (2.0 * Math.PI)) * 2.0 * Math.PI;
var getAngleMeasure = function(angle, is_2pi_allowed) {
is_2pi_allowed = (is_2pi_allowed !== undefined) ? !!is_2pi_allowed : false;
return (is_2pi_allowed && angle == 2 * Math.PI) ? 2 * Math.PI : angle - Math.floor(angle / (2.0 * Math.PI)) * 2.0 * Math.PI;
};

/**
Expand Down Expand Up @@ -581,7 +583,7 @@ var PhotoSphereViewer = function(args) {

var again = true;

if (PSV_MIN_LONGITUDE != PSV_MAX_LONGITUDE) {
if (!whole_circle) {
long = stayBetween(long, PSV_MIN_LONGITUDE, PSV_MAX_LONGITUDE);

if (long == PSV_MIN_LONGITUDE || long == PSV_MAX_LONGITUDE) {
Expand All @@ -596,7 +598,7 @@ var PhotoSphereViewer = function(args) {
}
}

long = getAngleMeasure(long);
long = getAngleMeasure(long, true);

render();

Expand Down Expand Up @@ -744,7 +746,7 @@ var PhotoSphereViewer = function(args) {
var moveTo = function(longitude, latitude) {
var long_tmp = parseAngle(longitude);

if (PSV_MIN_LONGITUDE != PSV_MAX_LONGITUDE)
if (!whole_circle)
long_tmp = stayBetween(long_tmp, PSV_MIN_LONGITUDE, PSV_MAX_LONGITUDE);

var lat_tmp = parseAngle(latitude);
Expand Down Expand Up @@ -912,10 +914,10 @@ var PhotoSphereViewer = function(args) {
if (mousedown) {
long += (x - mouse_x) * PSV_LONG_OFFSET;

if (PSV_MIN_LONGITUDE != PSV_MAX_LONGITUDE)
if (!whole_circle)
long = stayBetween(long, PSV_MIN_LONGITUDE, PSV_MAX_LONGITUDE);

long = getAngleMeasure(long);
long = getAngleMeasure(long, true);

lat += (y - mouse_y) * PSV_LAT_OFFSET;
lat = stayBetween(lat, PSV_TILT_DOWN_MAX, PSV_TILT_UP_MAX);
Expand Down Expand Up @@ -1340,14 +1342,29 @@ var PhotoSphereViewer = function(args) {
var PSV_TILT_UP_MAX = (args.tilt_up_max !== undefined) ? stayBetween(parseAngle(args.tilt_up_max), 0, Math.PI / 2.0) : Math.PI / 2.0;
var PSV_TILT_DOWN_MAX = (args.tilt_down_max !== undefined) ? -stayBetween(parseAngle(args.tilt_down_max), 0, Math.PI / 2.0) : -Math.PI / 2.0;

// Minimum and maximum visible longitudes ((min = max) => whole circle)
var PSV_MIN_LONGITUDE = (args.min_longitude !== undefined) ? parseAngle(args.min_longitude) : 0;
var PSV_MAX_LONGITUDE = (args.max_longitude !== undefined) ? parseAngle(args.max_longitude) : 0;
// Minimum and maximum visible longitudes
var min_long = (args.min_longitude !== undefined) ? parseAngle(args.min_longitude) : 0;
var max_long = (args.max_longitude !== undefined) ? parseAngle(args.max_longitude) : 0;

if (PSV_MAX_LONGITUDE < PSV_MIN_LONGITUDE) {
var long_tmp = PSV_MIN_LONGITUDE;
PSV_MIN_LONGITUDE = PSV_MAX_LONGITUDE;
PSV_MAX_LONGITUDE = long_tmp;
var whole_circle = (min_long == max_long);

if (whole_circle) {
min_long = 0;
max_long = 2 * Math.PI;
}

else if (max_long == 0)
max_long = 2 * Math.PI;

var PSV_MIN_LONGITUDE, PSV_MAX_LONGITUDE;
if (min_long < max_long) {
PSV_MIN_LONGITUDE = min_long;
PSV_MAX_LONGITUDE = max_long;
}

else {
PSV_MIN_LONGITUDE = max_long;
PSV_MAX_LONGITUDE = min_long;
}

// Default position
Expand Down

0 comments on commit 688f24c

Please sign in to comment.