Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
dev:viewer:actions:add_view [2023/02/13 14:55]
pieter
— (current)
Line 1: Line 1:
-====== Add View ====== 
- 
-Click on the '+' icon and view mode on the left sidebar to open a new view. Next, click on the [[dev:viewer:viewmodes:reference|Reference View]] or an existing View on the location where a new View should be opened. \\ 
-The available reality data will define the available Open View options.\\ 
-The different View modes are described [[dev:viewer:viewmodes:3d|here]]. 
- 
-===== Find Best Photo ====== 
- 
-==== Input Parameters ==== 
- 
-FIXME Add find photo algorithm information 
- 
-Inputs:  
-  * resources 
-  * focusPosition : The position we want to observe. 
-  * viewPosition : The position we are observing the observed position from. 
-  * minPhotos : The minimum amount of photos to return. Ignored if not positive. 
-  * relevantPhotosMax : The maximum number of photos to return. 
-  * searchDistances2D : The array of search distance steps to use. 
-  * findCloserPhotoAlgorithm : The algorithm used to sort photo positions. 
-    * ''PIXEL_DISTANCE'' : Identifies the technique of using the pixel distance from the focus position projected on the photo, to the photo center. 
-    * ''SPATIAL_DISTANCE'' : Identifies the technique using spatial distance between photo position and view position (fallback on focus position). 
-  * requireFocusVisible : Require the projection of the focus position on the photo to be inside the photo bounds.  Applies to planars only. 
-  * isStreetlevel : If this parameter is true, the 'requireFocusVisible' parameter changes to an algorithm more suited to streetlevel planars.  The photo pan angle is compared to the (photo,focusPosition) angle and needs to be inside 85% of the horizontal FOV of the photo. 
-  * searchCenter : The center position to use when retrieving photo positions. 
-    * ''FOCUS'' : Retrieve photo positions around the focusPosition.  When ''findCloserPhotoAlgorithm'' is ''SPATIAL_DISTANCE'', the spatial distance to the focus position will be used. 
-    * ''FOCUS_AND_VIEW'' : Retrieve photo positions around the focusPosition.  When ''findCloserPhotoAlgorithm'' is ''SPATIAL_DISTANCE'', photos are sorted by spatial distance to the viewPosition (fallback on focusPosition). 
-    * ''VIEW'' : Retrieve photo positions around the view position (fallback on focusPosition).  When ''findCloserPhotoAlgorithm'' is SPATIAL_DISTANCE, photos are sorted by spatial distance to viewPosition (fallback on focusPosition). 
- 
-==== Basic Search Algorithm ==== 
- 
-FindClosestPhoto 
- 
-<code javascript> 
-function(resource,searchDistances2D,viewPosition,focusPosition,parameters) 
-{ 
-  for(searchDistance in searchDistances2D)  
-  { 
-    let searchCenterPosition = (searchCenter = VIEW) ? viewPosition : focusPosition; 
-    let photoList = resource.findPhotosInCircle(searchCenterPosition,searchDistance); 
-    if (requireFocusVisible) 
-    { 
-      if (parameters.isStreetlevel) 
-      { 
-        photoList = keepPhotosWithProjectionInsidePan(photoList,85%); 
-      } 
-      else 
-      { 
-        photoList = keepPhotosWithProjectionInsideMargin(photoList,20%); // projection is inside photo bounds, reduced by a 20% margin? 
-      } 
-      if (photoList.length<10) 
-      { 
-        photoList = keepPhotosWithProjectionInsideMargin(photoList,5%); // projection is inside photo bounds, reduced by a 5% margin? 
-      } 
-    } 
-    if (photoList.length<minPhotos) 
-    { 
-      continue; 
-    } 
-    photoList = sortPhotos(photoList, parameters) 
-    return { 
-      photo: photoList[0], 
-      relevantPhotos: photoList.slice(1,relevantPhotosMax) 
-    } 
-  } 
-} 
-</code> 
- 
-<code javascript> 
-function sortPhotos(photoList) 
-{ 
-  for(photo in photoList) 
-  { 
-    if (parameters.findCloserPhotoAlgorithm = PIXEL_DISTANCE) 
-    { 
-      photo.distance = getDistanceToProjectionCenter(photo,focusPosition) 
-    } 
-    if (parameters.findCloserPhotoAlgorithm  = SPATIAL_DISTANCE) 
-    { 
-      if (viewPosition!=null) 
-      { 
-        photo.distance =  getDistanceToPosition(photo,viewPosition) 
-      } 
-      else 
-      { 
-        photo.distance = getDistanceToPosition(photo,focusPosition) 
-      } 
-    } 
-  } 
-  sortByDistance(photoList); 
-  return photoList; 
-} 
-</code> 
-       
- 
-distanceToProjectionCenter(): projects the focus position on the photo and returns the pixel distance from that position to the photo center. 
- 
- 
- 
-==== Input Parameters per renderMode ==== 
- 
-^ ^ Streetlevel Spherical ^ Streetlevel Planar ^ UAV Planar ^ Oblique Planar ^  
-| focusPosition       | <required> | <required> | <required> | <required> | 
-| viewPosition        | <optional> | <optional> | <optional> | <optional> | 
-| minPhotos           | 0 | 0 | 3 | 0 | 
-| relevantPhotosMax   | 10 | 10 | 10 | 10 | 
-| searchDistances2D   | ''StreetlevelDistances'' | ''StreetlevelDistances'' | ''AerialDistances''  | ''AerialDistances'' | 
-| findCloserPhotoAlgorithm | ''SPATIAL_DISTANCE''  | ''SPATIAL_DISTANCE''<sup>1</sup> | ''SPATIAL_DISTANCE''<sup>1</sup> | PIXEL_DISTANCE<sup>1</sup> | 
-| requireFocusVisible | false | true | true | true | 
-| isStreetlevel       | true | true | false | false | 
-| searchCenter        | ''FOCUS_AND_VIEW''<sup>2</sup> | ''FOCUS_AND_VIEW''<sup>2</sup> | ''FOCUS_AND_VIEW''<sup>2</sup> | ''FOCUS'' | 
- 
-<sup>1</sup> This is the default.  User-configurable via ''Views -> (Type) Image View -> Open best planar photo by''\\  
-<sup>2</sup> This is the default. User-configurable via ''Views -> Image Views -> Open image from 3D View'' 
- 
-Some constants :  
-  * AerialDistances = ''25,50,100,200,400,800,1600,3200,6400,12800'' 
-  * StreetlevelDistances = ''3,9,27,81,243,729'' 
- 
- 
  
 
Last modified:: 2023/02/13 14:55