1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/eran-BezierMathUtils

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

#BezierMathUtils

Мое фото

Описание

Класс BezierMathUtils предназначен для предоставления математических формул, необходимых для вычисления биэзеровых кривых.

Например, существует следующий запрос:

Есть две точки A и B, требуется переместить некоторый объект с точки A в точку B. Метод перемещения должен быть основан на биэзеровой кривой.

Здесь ключевой задачей является нахождение подходящего контрольной точки M (или M') между точками A и B.

Функции

Два метода, предоставленные данной библиотекой, предназначены для решения этой проблемы:

public static function calculateABLinePerpendicularBisectorPointByOffsetPercent(...){}
public static function calculateABLinePerpendicularBisectorPoint(...){}

Объяснение

Оба этих метода используются для определения координат точки M, которая затем используется как контрольная точка для биэзеровой кривой.

  • Указаны координаты двух точек A и B, а также расстояние от точки M до середины отрезка AB.

  • Точка M должна удовлетворять следующим условиям:

  • Она должна находиться на перпендикулярной биссектрисе прямой AB;

  • Расстояние MO от точки M до середины отрезка AB должно быть постоянным значением, которое указано при вызове функции;

  • Вид указания этого значения может быть двумя способами:

    1. Прямое указание смещения (не рекомендуется) Внимание: функция calculateABLinePerpendicularBisectorPoint принимает значение offset в квадрате;
    1. Указание смещения как процента от длины отрезка AB; функция: calculateABLinePerpendicularBisectorPointByOffsetPercent.

ISSUE


Принцип работы

Внимание! Ниже представлены принципы реализации алгоритма, они могут быть полезны только тем, кто имеет базовое понимание математики средней школы.

Используемые формулы

  1. Стандартное решение уравнения второй степени Формула:

  2. Нахождение вертикальной биссектрисы отрезка AB Формула: y=-((x2-x1)/(y2-y1)) *[x-(x1+x2)/2]+(y1+y2)/2

  3. Способ нахождения координат середины отрезка

  • Здесь стоит отметить, что ссылка на страницу Бaidu была исправлена, так как она содержала ошибку в скобках. Также было замечено, что функция вертикальной биссектрисы линейной алгебры должна удовлетворять условию: любая точка M на этой линии находится на одинаковом расстоянии от концов отрезка AB.
  • Поэтому можно установить равенство => ( X - Ax )^2 + ( Y - Ay )^2 = ( X - Bx )^2 + ( Y - By )^2
  • После преобразования получаем =>
  • y = [(Ax^2 + Ay^2) - (Bx^2 + By^2)] / 2 * (Ay - By) - (Ax - Bx) / (Ay - By) X
  • Я использовал эту формулу для нескольких наборов данных, все они были корректными, но в коде из-за слишком больших чисел возникало переполнение типа Number. Поэтому эта формула не подходит для вычислений. На сайте найденная формула должна быть упрощенной версией моей формулы, но точно это не известно. Если кто-то знает, пожалуйста, сообщите мне, спасибо.

Решение:

Исходя из формулы 3 мы можем найти координаты середины отрезка AB, обозначим эти координаты E и F соответственно:

(X-E)^2 + (Y-F)^2 = offset^2

Подставив эти два уравнения вместе, мы можем решить для последнего X и Y.

Поскольку это стандартное уравнение второй степени вида AX^2 + BX + C = 0, то его решение будет иметь два значения, что видно на самом верхнем изображении.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Математическая формула, связанная с кривой Безье. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/eran-BezierMathUtils.git
git@api.gitlife.ru:oschina-mirror/eran-BezierMathUtils.git
oschina-mirror
eran-BezierMathUtils
eran-BezierMathUtils
master