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

1# SPDX-FileCopyrightText: 2026-present Pavel M. Penev <pavpen@gmail.com> 

2# 

3# SPDX-License-Identifier: MIT 

4 

5import math 

6 

7from pavpen.geometry_calculator.vector_field_operations import VectorFieldOperations 

8 

9 

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 

14 

15 Knowing the type of the coordinates allows us to provide default 

16 implementations for some properties, and methods. 

17 """ 

18 

19 @property 

20 def multiplicative_negator(self) -> float: 

21 return -1 

22 

23 def norm(self, value: Vector) -> float: 

24 return math.sqrt(self.inner_multiplied(value, value)) 

25 

26 def normalized(self, value: Vector) -> Vector: 

27 return self.scaled(value, 1.0 / self.norm(value)) 

28 

29 def projection_length_along(self, projected: Vector, direction: Vector) -> float: 

30 return self.inner_multiplied(projected, direction) / self.norm(direction)