Conversion math library update

* Now inputs diameter instead of radius to prevent confusion
* Added length_from_weight
This commit is contained in:
Donkie
2023-07-10 11:02:22 +02:00
parent 6afbdb17f3
commit f995662f05
2 changed files with 20 additions and 4 deletions

View File

@@ -213,7 +213,7 @@ async def use_length(db: AsyncSession, spool_id: int, length: float) -> models.S
# Calculate and use weight # Calculate and use weight
weight = weight_from_length( weight = weight_from_length(
length=length, length=length,
radius=filament_info[0] / 2, diameter=filament_info[0],
density=filament_info[1], density=filament_info[1],
) )
await use_weight_safe(db, spool_id, weight) await use_weight_safe(db, spool_id, weight)

View File

@@ -3,17 +3,33 @@
import math import math
def weight_from_length(*, length: float, radius: float, density: float) -> float: def weight_from_length(*, length: float, diameter: float, density: float) -> float:
"""Calculate the weight of a piece of filament. """Calculate the weight of a piece of filament.
Args: Args:
length (float): Filament length in mm length (float): Filament length in mm
radius (float): Filament radius in mm diameter (float): Filament diameter in mm
density (float): Density of filament material in g/cm3 density (float): Density of filament material in g/cm3
Returns: Returns:
float: Weight in g float: Weight in g
""" """
volume_mm3 = length * math.pi * radius * radius volume_mm3 = length * math.pi * (diameter / 2) ** 2
volume_cm3 = volume_mm3 / 1000 volume_cm3 = volume_mm3 / 1000
return density * volume_cm3 return density * volume_cm3
def length_from_weight(*, weight: float, diameter: float, density: float) -> float:
"""Calculate the length of a piece of filament.
Args:
weight (float): Filament weight in g
diameter (float): Filament diameter in mm
density (float): Density of filament material in g/cm3
Returns:
float: Length in mm
"""
volume_cm3 = weight / density
volume_mm3 = volume_cm3 * 1000
return volume_mm3 / (math.pi * (diameter / 2) ** 2)