diff --git a/src/fvr/geom.py b/src/fvr/geom.py index 2de9dda..d32cfdb 100644 --- a/src/fvr/geom.py +++ b/src/fvr/geom.py @@ -2,6 +2,9 @@ from fvr.typing import FloatArray def area(vertices: FloatArray) -> float: r"""Determine the area of a simple polygon. + + Args: + vertices: List of points, pair of x and y: "[[x1, y1], [x2, y2], ...]" Shoelace formula, Gauss's area formula, surveyor's formula diff --git a/src/fvr/wire.py b/src/fvr/wire.py new file mode 100644 index 0000000..48b3ef6 --- /dev/null +++ b/src/fvr/wire.py @@ -0,0 +1,41 @@ +import math + +class awg: + """AWG wire. + """ + def __init__(self, number: int|str): + """Determine parameters for a given AWG wire size. + + Args: + number: AWG wire size, also '00', '000', '0000' + """ + self.number = number + self.num2int() + + def num2int(self): + if isinstance(self.number, int): + self._number = self.number + elif self.number.isdigit(): + if self.number in ['00', '000', '0000']: + self._number = 1 - len(self.number) + else: + self._number = int(self.number) + else: + raise ValueError + + @property + def diameter(self): + """The diameter for a given AWG wire size in mm""" + return 0.127 * 92**((36-self._number)/39) + + @property + def area(self): + """The area for a given AWG wire size in mm²""" + return math.pi/4*self.diameter**2 + + def __str__(self): + res = ( + '%s' % self.number + ' AWG\n' + 'A = %.4g' % self.area + ' mm²\n' + + 'd = %.4g' % self.diameter + ' mm\n') + return res