pub enum S2Projection {
S2LinearProjection,
S2TanProjection,
S2QuadraticProjection,
}
Expand description
We have implemented three different projections from cell-space (s,t) to cube-space (u,v): linear, quadratic, and tangent. They have the following tradeoffs:
Linear - This is the fastest transformation, but also produces the least uniform cell sizes. Cell areas vary by a factor of about 5.2, with the largest cells at the center of each face and the smallest cells in the corners.
Tangent - Transforming the coordinates via atan() makes the cell sizes more uniform. The areas vary by a maximum ratio of 1.4 as opposed to a maximum ratio of 5.2. However, each call to atan() is about as expensive as all of the other calculations combined when converting from points to cell ids, i.e. it reduces performance by a factor of 3.
Quadratic - This is an approximation of the tangent projection that is much faster and produces cells that are almost as uniform in size. It is about 3 times faster than the tangent projection for converting cell ids to points or vice versa. Cell areas vary by a maximum ratio of about 2.1.
§Here is a table comparing the cell uniformity using each projection. “Area ratio” is the maximum ratio over all subdivision levels of the largest cell area to the smallest cell area at that level, “edge ratio” is the maximum ratio of the longest edge of any cell to the shortest edge of any cell at the same level, and “diag ratio” is the ratio of the longest diagonal of any cell to the shortest diagonal of any cell at the same level. “ToPoint” and “FromPoint” are the times in microseconds required to convert cell ids to and from points (unit vectors) respectively. “ToPointRaw” is the time to convert to a non-unit-length vector, which is all that is needed for some purposes. Area Edge Diag ToPointRaw ToPoint FromPoint Ratio Ratio Ratio (microseconds)
Linear: 5.200 2.117 2.959 0.020 0.087 0.085 Tangent: 1.414 1.414 1.704 0.237 0.299 0.258 Quadratic: 2.082 1.802 1.932 0.033 0.096 0.108
The worst-case cell aspect ratios are about the same with all three projections. The maximum ratio of the longest edge to the shortest edge within the same cell is about 1.4 and the maximum ratio of the diagonals within the same cell is about 1.7.
NOTE: Currently Tan only has 1e-12 accuracy while Quadratic is within 1e-15.
Variants§
S2LinearProjection
Linear projection
S2TanProjection
Tangent projection
S2QuadraticProjection
Quadratic projection