@NickoliaDeGori
Front-end разработчик + Android - разработчик

Как найти длину кривой Безье, и точки на ней через равные промежутки?

Приветствую Господа!

У меня встал вопрос!

Имеем кривую Безье с одной опорной вершиной:

81dad463005143bc86df5cd084041a87.png

Нужно, найти длину кривой, и расположить на ней через равные промежутки объекты где первый объект будет P1 а последний Pn.

b9c21e3108154a50a2e1c24c2d355674.png

Заранее Спасибо!
  • Вопрос задан
  • 790 просмотров
Решения вопроса 1
bobrovskyserg
@bobrovskyserg
Ни вапрос.
Это - параметрически заданная парабола.
Длина параметрической кривой считается по формуле из интернета.
Найдёшь?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
szQocks
@szQocks
на вход функция принимает массив точек кривой безье, о том как найти точки в инете легко ищется, хотя это я нашёл так же в инете на просторах гитхаба xDD
const subtract = (v1, v2) => ({
  x: v1.x - v2.x,
  y: v1.y - v2.y
});

const magnitude = ({ x, y }) => Math.sqrt(x * x + y * y);


const pointDistance = (point1, point2) => magnitude(subtract(point1, point2));


const curveLength = (points) => {
  let lastPoint = points[0];
  const pointsSansFirst = points.slice(1);
  return pointsSansFirst.reduce((acc, point) => {
    const dist = pointDistance(point, lastPoint);
    lastPoint = point;
    return acc + dist;
  }, 0);
};
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы