Тангенс рациональной кривой БезьеC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Тангенс рациональной кривой Безье

Сообщение Anonymous »

Сейчас я занимаюсь математикой Безье (у меня это не очень хорошо получается), но у меня возникла проблема при попытке вычислить тангенс рациональной кривой Безье.
для контекста, это мой обычный расчет Безье в Rational, который работает без каких-либо проблем (на основе как учебника Pomax по кривым Безье, так и видео Фрейи Холмер
Вот мой обычный и рабочий код для Rational Кривая Безье

Код: Выделить всё

float CalculateCubic(float t, float[] points, float[] weights)
{
float t2 = t * t;
float t3 = t2 * t;

float[] f = {
weights[0] * (-t3 + 3 * t2 - 3*t + 1),
weights[1] * (3 * t3 - 6 * t2 + 3 * t),
weights[2] * (-3 * t3 + 3 * t2),
weights[3] * (t3)
};

float basis = f[0] + f[1] + f[2] + f[3];

return (f[0] * points[0] + f[1] * points[1] + f[2] * points[2] + f[3] * points[3]) /basis;
}
после чего я попытался создать функцию, которая меняет полином точки на ее производные, чтобы получить тангенс (или скорость):

Код: Выделить всё

float CalculateCubicTangent(float t, float[] points, float[] weights)
{
float t2 = t * t;

float[] f = {
weights[0] * (-3 * t2 + 6 * t - 3),
weights[1] * (9 * t2 - 12 * t + 3),
weights[2] * (-9 * t2 + 6 * t),
weights[3] * (3 * t2)
};

float basis = f[0] + f[1] + f[2] + f[3];

return (f[0] * points[0] + f[1] * points[1] + f[2] * points[2] + f[3] * points[3]) / basis;
}
Однако базой для вычисления чаще всего является 0 или очень маленькое число (я предполагаю, что это вызвано ошибкой округления). заставляя его возвращать NaN или Infinity большую часть времени
Итак, мне интересно, что я делаю неправильно/как мне на самом деле следует подойти к этой проблеме? любые ресурсы по этой части также приветствуются!

Подробнее здесь: https://stackoverflow.com/questions/790 ... zier-curve
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Тангенс рациональной кривой Безье
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Тангенс рациональной кривой Безье
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Оцените кривую Безье как кубическую Безье в CSS [дубликат]
    Anonymous » » в форуме CSS
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Настройка пользовательской кубической кривой Безье в Swiper JS
    Anonymous » » в форуме CSS
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • SwiftUI: фигура с использованием кривой Безье не может быть заполнена градиентом
    Anonymous » » в форуме IOS
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»