sec_interp.core.utils.rendering module

Rendering and polychromy Utilities Module.

This module provides visualization and coordinate transformation utilities for profile rendering.

sec_interp.core.utils.rendering.calculate_bounds(topo_data: list[tuple[float, float]], geol_data: list[GeologySegment] | None = None) dict[str, float]

Calculate the bounding box for all profile data with padding.

Calculates the minimum and maximum distance and elevation across topography and optional geological segments.

Parameters:
  • topo_data – List of (distance, elevation) tuples for topography.

  • geol_data – Optional list of geological segments.

Returns:

Bounds containing ‘min_d’, ‘max_d’, ‘min_e’, ‘max_e’ with 5% padding.

sec_interp.core.utils.rendering.calculate_interval(data_range: float) float

Calculate a ‘nice’ interval for axis labels based on the data range.

Parameters:

data_range – The total range of data values (e.g., max_d - min_d).

Returns:

A human-readable interval (e.g., 1, 2, 5, 10, etc.) for grid lines.

sec_interp.core.utils.rendering.create_coordinate_transform(bounds: dict[str, float], view_w: int, view_h: int, margin: int, vert_exag: float = 1.0) Callable[[float, float], tuple[float, float]]

Create a coordinate transformation function for screen projection.

Returns a function that transforms data coordinates (distance, elevation) to pixel coordinates (x, y) based on the provided view dimensions.

Parameters:
  • bounds – Dictionary with ‘min_d’, ‘max_d’, ‘min_e’, ‘max_e’.

  • view_w – Screen/view width in pixels.

  • view_h – Screen/view height in pixels.

  • margin – Plot margin in pixels.

  • vert_exag – Vertical exaggeration multiplier (default 1.0).

Returns:

A function transform(dist, elev) -> (x, y) converting data to pixels.