| Calculate the Volume of a Conical Frustum. | Wikipedia reference: https://en.wikipedia.org/wiki/Frustum >>> vol_conical_frustum(45, 7, 28) 48490.482608158454 >>> vol_conical_frustum(1, 1, 2) 7.330382858376184 >>> vol_conical_frustum(1.6, 2.6, 3.6) 48.7240076620753
(height: float, radius_1: float, radius_2: float)
| 441 | |
| 442 | |
| 443 | def vol_conical_frustum(height: float, radius_1: float, radius_2: float) -> float: |
| 444 | """ |
| 445 | | Calculate the Volume of a Conical Frustum. |
| 446 | | Wikipedia reference: https://en.wikipedia.org/wiki/Frustum |
| 447 | |
| 448 | >>> vol_conical_frustum(45, 7, 28) |
| 449 | 48490.482608158454 |
| 450 | >>> vol_conical_frustum(1, 1, 2) |
| 451 | 7.330382858376184 |
| 452 | >>> vol_conical_frustum(1.6, 2.6, 3.6) |
| 453 | 48.7240076620753 |
| 454 | >>> vol_conical_frustum(0, 0, 0) |
| 455 | 0.0 |
| 456 | >>> vol_conical_frustum(-2, 2, 1) |
| 457 | Traceback (most recent call last): |
| 458 | ... |
| 459 | ValueError: vol_conical_frustum() only accepts non-negative values |
| 460 | >>> vol_conical_frustum(2, -2, 1) |
| 461 | Traceback (most recent call last): |
| 462 | ... |
| 463 | ValueError: vol_conical_frustum() only accepts non-negative values |
| 464 | >>> vol_conical_frustum(2, 2, -1) |
| 465 | Traceback (most recent call last): |
| 466 | ... |
| 467 | ValueError: vol_conical_frustum() only accepts non-negative values |
| 468 | """ |
| 469 | # Volume is 1/3 * pi * height * |
| 470 | # (radius_1 squared + radius_2 squared + radius_1 * radius_2) |
| 471 | if radius_1 < 0 or radius_2 < 0 or height < 0: |
| 472 | raise ValueError("vol_conical_frustum() only accepts non-negative values") |
| 473 | return ( |
| 474 | 1 |
| 475 | / 3 |
| 476 | * pi |
| 477 | * height |
| 478 | * (pow(radius_1, 2) + pow(radius_2, 2) + radius_1 * radius_2) |
| 479 | ) |
| 480 | |
| 481 | |
| 482 | def vol_torus(torus_radius: float, tube_radius: float) -> float: |