typing and comment updates
This commit is contained in:
		
							parent
							
								
									085bb79ed7
								
							
						
					
					
						commit
						ecefdff781
					
				@ -1,7 +1,7 @@
 | 
				
			|||||||
from typing import Tuple
 | 
					from typing import Tuple, Optional
 | 
				
			||||||
import numpy
 | 
					import numpy                # type: ignore
 | 
				
			||||||
from numpy import logical_and, diff, floor, ceil, ones, zeros, hstack, full_like, newaxis
 | 
					from numpy import logical_and, diff, floor, ceil, ones, zeros, hstack, full_like, newaxis
 | 
				
			||||||
from scipy import sparse
 | 
					from scipy import sparse    # type: ignore
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def raster(vertices: numpy.ndarray,
 | 
					def raster(vertices: numpy.ndarray,
 | 
				
			||||||
@ -18,11 +18,14 @@ def raster(vertices: numpy.ndarray,
 | 
				
			|||||||
    Polygons are assumed to have clockwise vertex order; reversing the vertex order is equivalent
 | 
					    Polygons are assumed to have clockwise vertex order; reversing the vertex order is equivalent
 | 
				
			||||||
     to multiplying the result by -1.
 | 
					     to multiplying the result by -1.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    :param vertices: 2xN ndarray containing x,y coordinates for each vertex of the polygon
 | 
					    Args:
 | 
				
			||||||
    :param grid_x: x-coordinates for the edges of each pixel (ie, the leftmost two columns span
 | 
					        vertices: 2xN ndarray containing `x,y` coordinates for each vertex of the polygon
 | 
				
			||||||
        x=grid_x[0] to x=grid_x[1] and x=grid_x[1] to x=grid_x[2])
 | 
					        grid_x: x-coordinates for the edges of each pixel (ie, the leftmost two columns span
 | 
				
			||||||
    :param grid_y: y-coordinates for the edges of each pixel (see grid_x)
 | 
					                `x=grid_x[0]` to `x=grid_x[1]` and `x=grid_x[1]` to `x=grid_x[2]`)
 | 
				
			||||||
    :return: 2D ndarray with pixel values in the range [0, 1] containing the anti-aliased polygon
 | 
					        grid_y: y-coordinates for the edges of each pixel (see `grid_x`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Returns:
 | 
				
			||||||
 | 
					        2D ndarray with pixel values in the range [0, 1] containing the anti-aliased polygon
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    vertices = numpy.array(vertices)
 | 
					    vertices = numpy.array(vertices)
 | 
				
			||||||
    grid_x = numpy.array(grid_x)
 | 
					    grid_x = numpy.array(grid_x)
 | 
				
			||||||
@ -49,7 +52,7 @@ def find_intersections(
 | 
				
			|||||||
        vertices: numpy.ndarray,
 | 
					        vertices: numpy.ndarray,
 | 
				
			||||||
        grid_x: numpy.ndarray,
 | 
					        grid_x: numpy.ndarray,
 | 
				
			||||||
        grid_y: numpy.ndarray
 | 
					        grid_y: numpy.ndarray
 | 
				
			||||||
        ) -> Tuple[numpy.ndarray]:
 | 
					        ) -> Tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray]:
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    Find intersections between a polygon and grid lines
 | 
					    Find intersections between a polygon and grid lines
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
@ -126,7 +129,7 @@ def create_vertices(
 | 
				
			|||||||
        vertices: numpy.ndarray,
 | 
					        vertices: numpy.ndarray,
 | 
				
			||||||
        grid_x: numpy.ndarray,
 | 
					        grid_x: numpy.ndarray,
 | 
				
			||||||
        grid_y: numpy.ndarray,
 | 
					        grid_y: numpy.ndarray,
 | 
				
			||||||
        new_vertex_data: Tuple[numpy.ndarray] = None
 | 
					        new_vertex_data: Optional[Tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray]] = None
 | 
				
			||||||
        ) -> sparse.coo_matrix:
 | 
					        ) -> sparse.coo_matrix:
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    Create additional vertices where a polygon crosses gridlines
 | 
					    Create additional vertices where a polygon crosses gridlines
 | 
				
			||||||
@ -171,6 +174,7 @@ def create_vertices(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    return vertices
 | 
					    return vertices
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def clip_vertices_to_window(
 | 
					def clip_vertices_to_window(
 | 
				
			||||||
        vertices: numpy.ndarray,
 | 
					        vertices: numpy.ndarray,
 | 
				
			||||||
        min_x: float = -numpy.inf,
 | 
					        min_x: float = -numpy.inf,
 | 
				
			||||||
@ -201,26 +205,29 @@ def get_raster_parts(
 | 
				
			|||||||
        grid_y: numpy.ndarray
 | 
					        grid_y: numpy.ndarray
 | 
				
			||||||
        ) -> sparse.coo_matrix:
 | 
					        ) -> sparse.coo_matrix:
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    This function performs the same task as raster(...), but instead of returning a dense array
 | 
					    This function performs the same task as `raster(...)`, but instead of returning a dense array
 | 
				
			||||||
    of pixel values, it returns a sparse array containing the value
 | 
					    of pixel values, it returns a sparse array containing the value
 | 
				
			||||||
        (-area + 1j * cover)
 | 
					        `(-area + 1j * cover)`
 | 
				
			||||||
    for each pixel which contains a line segment, where
 | 
					    for each pixel which contains a line segment, where
 | 
				
			||||||
        cover   is the fraction of the pixel's y-length that is traversed by the segment,
 | 
					        `cover`   is the fraction of the pixel's y-length that is traversed by the segment,
 | 
				
			||||||
                 multiplied by the sign of (y_final - y_initial)
 | 
					                   multiplied by the sign of `(y_final - y_initial)`
 | 
				
			||||||
        area    is the fraction of the pixel's area covered by the trapezoid formed by
 | 
					        `area`    is the fraction of the pixel's area covered by the trapezoid formed by
 | 
				
			||||||
                   the line segment's endpoints (clipped to the cell edges) and their projections
 | 
					                   the line segment's endpoints (clipped to the cell edges) and their projections
 | 
				
			||||||
                   onto the pixel's left (i.e., lowest-x) edge, again multiplied by
 | 
					                   onto the pixel's left (i.e., lowest-x) edge, again multiplied by
 | 
				
			||||||
                 the sign of (y_final - y_initial)
 | 
					                  the sign of `(y_final - y_initial)`
 | 
				
			||||||
        Note that polygons are assumed to be wound clockwise.
 | 
					        Note that polygons are assumed to be wound clockwise.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    The result from raster(...) can be obtained with
 | 
					    The result from `raster(...)` can be obtained with
 | 
				
			||||||
        raster_result = numpy.real(lines_result) + numpy.imag(lines_result).cumsum(axis=0)
 | 
					        `raster_result = numpy.real(lines_result) + numpy.imag(lines_result).cumsum(axis=0)`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    :param vertices: 2xN ndarray containing x,y coordinates for each point in the polygon
 | 
					    Args:
 | 
				
			||||||
    :param grid_x: x-coordinates for the edges of each pixel (ie, the leftmost two columns span
 | 
					        vertices: 2xN ndarray containing `x, y` coordinates for each point in the polygon
 | 
				
			||||||
        x=grid_x[0] to x=grid_x[1] and x=grid_x[1] to x=grid_x[2])
 | 
					        grid_x: x-coordinates for the edges of each pixel (ie, the leftmost two columns span
 | 
				
			||||||
    :param grid_y: y-coordinates for the edges of each pixel (see grid_x)
 | 
					                `x=grid_x[0]` to `x=grid_x[1]` and `x=grid_x[1]` to `x=grid_x[2]`)
 | 
				
			||||||
    :return: Complex sparse COO matrix containing area and cover information
 | 
					        grid_y: y-coordinates for the edges of each pixel (see `grid_x`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Returns:
 | 
				
			||||||
 | 
					        Complex sparse COO matrix containing area and cover information
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    if grid_x.size < 2 or grid_y.size < 2:
 | 
					    if grid_x.size < 2 or grid_y.size < 2:
 | 
				
			||||||
        raise Exception('Grid must contain at least one full pixel')
 | 
					        raise Exception('Grid must contain at least one full pixel')
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user