Coverage for src \ pavpen \ geometry_calculator \ float_vector_field_operations.py: 100%
12 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-27 03:59 -0400
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-27 03:59 -0400
1# SPDX-FileCopyrightText: 2026-present Pavel M. Penev <pavpen@gmail.com>
2#
3# SPDX-License-Identifier: MIT
5import math
7from pavpen.geometry_calculator.vector_field_operations import VectorFieldOperations
10class FloatVectorFieldOperations[Vector](VectorFieldOperations[float, Vector]):
11 """Base class for
12 :py:class:`~pavpen.geometry_calculator.vector_field_operations.VectorFieldOperations`
13 whose coordinates are :py:class:`float`\\ s
15 Knowing the type of the coordinates allows us to provide default
16 implementations for some properties, and methods.
17 """
19 @property
20 def multiplicative_negator(self) -> float:
21 return -1
23 def norm(self, value: Vector) -> float:
24 return math.sqrt(self.inner_multiplied(value, value))
26 def normalized(self, value: Vector) -> Vector:
27 return self.scaled(value, 1.0 / self.norm(value))
29 def projection_length_along(self, projected: Vector, direction: Vector) -> float:
30 return self.inner_multiplied(projected, direction) / self.norm(direction)