polygon-perimeter-calculator
Version:
Модуль для расчёта периметра многоугольника по координатам вершин
52 lines (44 loc) • 1.89 kB
JavaScript
/**
* Модуль для расчёта периметра многоугольника по координатам вершин
* @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
};