carré de la grille la plus proche à un point en coordonnées sphériques
-
13-09-2019 - |
Question
Je programme un algorithme où j'émiettée la surface d'une sphère en des points de grille (pour plus de simplicité j'ai les lignes de grille parallèles et perpendiculaires aux méridiens). Compte tenu d'un point A, je voudrais être en mesure de prendre efficacement une grille « carré » et déterminer le point B sur la place avec le moins de coordonnées sphériques la distance AB. Dans le cas dégénéré les « carrés » sont en fait des « triangles ».
Je suis en fait que l'utilise Bound qui carrés que je suis à la recherche, donc je peux aussi accepter un minoration si elle est seulement un tout petit peu au large. Pour cette raison, je dois l'algorithme pour être autrement extrêmement rapide, il serait préférable de prendre juste la perte de précision et de recherche quelques places.
- J'ai décidé de rediffuser cette question Math Overflow: https : //mathoverflow.net/questions/854/closest-grid-square-to-a-point-in-spherical-coordinates . Des progrès ont été réalisés ici
La solution 4
Voir Math Overflow: https://mathoverflow.net / questions / 854 / la plus proche grille-carré à un point en coordonnées sphériques pour une solution exacte
Autres conseils
Pour les points sur une sphère, les points les plus proches dans le plein espace 3D sera également le plus proche mesurée le long de la surface de la sphère. Les distances réelles seront différentes, mais si vous êtes juste après le point le plus proche, il est probablement plus facile de minimiser la distance 3D plutôt que de se préoccuper de grands arcs de cercle, etc.
Pour trouver la distance orthodromique réelle entre deux points (latitidude, longitude) sur la sphère, vous pouvez utiliser la première formule dans ce lien .
Quelques points, pour plus de clarté.
Sauf si vous souhaitez spécifiquement ces carrés pour être carré (et donc de ne pas adapter exactement dans cette disposition parallèle et perpendiculaire en ce qui concerne les méridiens), ceux-ci ne sont pas exactement carrés. Ceci est particulièrement visible si les dimensions de la place sont grandes.
La question parle d'une sphère [parfaite]. Les questions seraient quelque peu différentes si nous envisagions la Terre (ou d'autres planètes) avec ses pôles aplaties.
Voici un « algorithme » qui correspondrait au projet de loi, je doute qu'il est optimal, mais pourrait offrir une bonne base. EDIT : voir la suggestion de Tom10 à travailler avec la plaine distance 3D entre les points plutôt que la distance grande cirle correspondant (c.-à celle du cordon plutôt que l'arc), car cela permettra de réduire considérablement la complexité du formules.
Problem layout: (A, B and Sq as defined in the OP's question) A : a given point the the surface of the sphere Sq : a given "square" from the grid B : solution to problem : point located within Sq which has the shortest distance to A. C : point at the center of Sq Tentative algorithm: Using the formulas associated with [Great Circle][1], we can: - find the equation of the circle that includes A and C - find the distance between A and C. See the [formula here][2] (kindly lifted from Tom10's reply). - find the intersect of the Great Circle arc between these points, with the arcs of parallel or meridian defining the Sq. There should be only one such point, unless this finds a "corner" of Sq, or -a rarer case- if the two points are on the same diameter (see 'antipodes' below). Then comes the more algorithmic part of this procedure (so far formulas...): - find, by dichotomy, the point on Sq's arc/seqment which is the closest from point A. We're at B! QED. Optimization: It is probably possible make a good "guess" as to the location of B, based on the relative position of A and C, hence cutting the number of iterations for the binary search. Also, if the distance A and C is past a certain threshold the intersection of the cicles' arcs is probably a good enough estimate of B. Only when A and C are relatively close will B be found a bit further on the median or parallel arc in these cases, projection errors between A and C (or B) are smaller and it may be ok to work with orthogonal coordinates and their simpler formulas. Another approach is to calculate the distance between A and each of the 4 corners of the square and to work the dichotomic search from two of these points (not quite sure which; could be on the meridian or parallel...) ( * ) *Antipodes case*: When points A and C happen to be diametrically opposite to one another, all great circle lines between A and C have the same length, that of 1/2 the circonference of the sphere, which is the maximum any two points on the surface of a sphere may be. In this case, the point B will be the "square"'s corner that is the furthest from C.
J'espère que cette aide ...
La méthode paresseuse limite inférieure est de trouver la distance par rapport au centre du carré, puis soustraire la moitié distance diagonale et lié en utilisant l'inégalité du triangle. Compte tenu de ces places ne sont pas réels, il y aura effectivement deux distances diagonales - nous utiliserons plus. Je suppose que ce sera raisonnablement précis ainsi.