вычисление параметров для определения подразделов квадратичных кривых Безье

Мне описали квадратичную кривую Безье как (startX, startY) к (anchorX, anchorY) и использование контрольной точки (controlX, controlY).

У меня есть два вопроса:

(1) Я хочу определить точки y на той кривой на основе точки x.

(2) Затем учитывая линейный сегмент на моем bezier (определенный двумя посредниками указывает на моей кривой Безье (startX', startY', anchorX', anchorY')), я хочу знать контрольную точку для того линейного сегмента так, чтобы это перекрыло исходный bezier точно.

Почему? Я хочу эту информацию для оптимизации. Я тяну жребий горизонтального Безье. Когда Безье больше, чем экран, производительность страдает, потому что механизм визуализации заканчивает тем, что представил вне степеней того, что видимо. Ответы на этот вопрос позволят мне просто представить то, что видимо.

5
задан jedierikb 16 April 2010 в 23:21
поделиться

1 ответ

Часть 1

Формула для квадратичной кривой Безье:

B(t) = a(1-t)2    + 2bt(1-t)   + ct2
     = a(1-2t+t2) + 2bt - 2bt2 + ct2
     = (a-2b+c)t2+2(b-a)t + a

где жирным шрифтом обозначен вектор. Учитывая B x (t), мы имеем:

x = (ax-2bx+cx)t2+2(bx-ax)t + ax

где v x - x-компонента v .

Согласно квадратичной формуле,

     -2(bx-ax) ± 2√((bx-ax)2 - ax(ax-2bx+cx))
t = -----------------------------------------
             (2ax(ax-2bx+cx))

     ax-bx ± √(bx2 - axcx)
  = ----------------------
         ax(ax-2bx+cx)

Предполагая, что решение существует, подставьте t обратно в исходное уравнение, чтобы получить другие компоненты B (t) при заданном x.

Часть 2

Вместо того, чтобы создавать вторую кривую Безье, которая совпадает с частью первой (сейчас мне не хочется ломать символы), вы можете просто ограничить область своего параметрического параметра правильным под- интервал [0,1]. То есть используйте часть 1, чтобы найти значения t для двух разных значений x; назовем эти t-значения i и j. Нарисуйте B (t) для t ∈ [i, j]. Аналогичным образом нарисуйте B (t (j-i) + i) для t ∈ [0,1].

13
ответ дан 18 December 2019 в 13:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: