A TypeScript library for calculating areas of triangles and quadrilaterals using Bretschneider's formula
npm install polygon-mathtypescript
import { calculateTriangleArea } from 'polygon-math';
// Using Heron's formula (sides only)
const triangle1 = {
sides: [3, 4, 5] as [number, number, number]
};
const result1 = calculateTriangleArea(triangle1);
console.log(result1.area); // 6
// Using SAS formula (with angles)
const triangle2 = {
sides: [5, 7, 8] as [number, number, number],
angles: [60, 70, 50] as [number, number, number]
};
const result2 = calculateTriangleArea(triangle2);
console.log(result2.area); // Calculated using SAS formula
`
$3
`typescript
import { calculateQuadrilateralArea } from 'polygon-math';
const quadrilateral = {
sides: [5, 6, 7, 8] as [number, number, number, number],
angles: [90, 120] as [number, number] // Two opposite angles
};
const result = calculateQuadrilateralArea(quadrilateral);
console.log(result.area); // Calculated using Bretschneider's formula
`
$3
`typescript
import { calculatePolygonArea } from 'geometric-area-calculator';
// Triangle (3 sides)
const triangleResult = calculatePolygonArea([3, 4, 5]);
// Quadrilateral (4 sides + 2 angles)
const quadResult = calculatePolygonArea([5, 6, 7, 8], [90, 120]);
`
API Reference
$3
`typescript
interface Triangle {
sides: [number, number, number];
angles?: [number, number, number]; // Optional
}
interface Quadrilateral {
sides: [number, number, number, number];
angles: [number, number]; // Required: two opposite angles
}
interface CalculationResult {
area: number;
isValid: boolean;
error?: string;
}
`
$3
- calculateTriangleArea(triangle: Triangle): CalculationResult
- calculateQuadrilateralArea(quadrilateral: Quadrilateral): CalculationResult
- calculatePolygonArea(sides: number[], angles?: number[]): CalculationResult
Mathematical Formulas
$3
- Heron's Formula: Area = √[s(s-a)(s-b)(s-c)] where s = (a+b+c)/2
- SAS Formula: Area = 0.5 × a × b × sin(C) where C is the included angle
$3
Area = √[(s-a)(s-b)(s-c)(s-d) - abcd·cos²((α+γ)/2)]
Where:
- a, b, c, d are the side lengths
- s = (a+b+c+d)/2 is the semi-perimeter
- α, γ are opposite angles
Error Handling
The library validates inputs and returns detailed error messages:
`typescript
const result = calculateTriangleArea({
sides: [1, 2, 10] // Invalid triangle
});
console.log(result.isValid); // false
console.log(result.error); // "Invalid triangle sides. Must satisfy triangle inequality theorem."
``