UNPKG

polygon-perimeter-calculator

Version:
52 lines (44 loc) 1.89 kB
/** * Модуль для расчёта периметра многоугольника по координатам вершин * @module polygon-perimeter-calculator */ /** * Рассчитывает расстояние между двумя точками * @param {{x: number, y: number}} point1 - Первая точка * @param {{x: number, y: number}} point2 - Вторая точка * @returns {number} Расстояние между точками */ function calculateDistance(point1, point2) { const dx = point2.x - point1.x; const dy = point2.y - point1.y; return Math.sqrt(dx * dx + dy * dy); } /** * Рассчитывает периметр многоугольника * @param {Array<{x: number, y: number}> vertices - Массив вершин многоугольника * @returns {number} Периметр многоугольника * @throws {Error} Если передано меньше 2 вершин */ function calculatePerimeter(vertices) { if (!Array.isArray(vertices)) { throw new Error('Входные данные должны быть массивом'); } if (vertices.length < 2) { throw new Error('Для расчёта периметра нужно минимум 2 точки'); } let perimeter = 0; for (let i = 0; i < vertices.length; i++) { const current = vertices[i]; const next = vertices[(i + 1) % vertices.length]; if (typeof current.x !== 'number' || typeof current.y !== 'number' || typeof next.x !== 'number' || typeof next.y !== 'number') { throw new Error('Все точки должны содержать числовые координаты x и y'); } perimeter += calculateDistance(current, next); } return perimeter; } module.exports = { calculatePerimeter, calculateDistance };