#javascript #geometry
#javascript #геометрия
Вопрос:
У меня есть в качестве входных данных радиус окружности и координаты X и Y центра. Я хотел бы иметь на выходе координаты соединенной серии отрезков (многоугольная цепочка), которая аппроксимирует окружность. Есть ли способ сделать это в JavaScript?
Комментарии:
1. Math.sin() и Math.cos() . Все остальное относится конкретно к вашему вопросу.
Ответ №1:
Мы используем холст и context.lineTo(x, y);
для рисования полигонов в Javascript. Чтобы получить сегменты, выполните итерацию, увеличивая angle
параметрическое уравнение окружности:
let x = center.x radius * Math.cos(angle);
let y = center.y radius * Math.sin(angle);
Это рабочий пример:
let radius = 50;
let segments = 10;
let segmentAngle = Math.PI * 2 / segments;
let center = { x: 100, y: 75 };
let points = [];
for (let angle = 0; angle < 2 * Math.PI; angle = segmentAngle) {
points.push({
x: center.x 50 * Math.cos(angle),
y: center.y 50 * Math.sin(angle)
});
};
paintSegments(points);
console.log(points);
function paintSegments(points) {
let canvas = document.getElementById("myCanvas");
let context = canvas.getContext("2d");
context.beginPath();
points.forEach(function(point) {
context.lineTo(point.x, point.y);
});
context.lineTo(center.x radius, center.y);
context.stroke();
}
<canvas id="myCanvas" width="300" height="150" style="border:1px solid #d3d3d3;">Your browser does not support the HTML5 canvas tag.</canvas>