Я пытаюсь нарисовать кривую между двумя точками, в частности, я оставляю картину того, что я хочу:Как рисовать кривой между двумя точками? OpenGL
Этот образ был взят из этого pdf на странице 10.
Я понимаю, что применяет концепцию Bresenham algorithm
, но не знает, как реализовать концепцию рисования кривой.
На странице 11 ПРВ pseudocode algorithm
показано на рисунке, но не понимают понятие «ошибки» для реализации. Пожалуйста, если кто-нибудь поможет мне понять это. Я работаю с C++ и OpenGL.
псевдокод:
set up x, y to x0, y0
set up error variable exy for P(x0+1,y0+1)
loop
set pixel x, y
if ex + exy > 0 then increment x, sub difference error
if ey + exy < 0 then increment y, add difference error
loop until end pixel
Спасибо вам всем.
«Я понимаю, что применяет концепцию алгоритма Брешенема, но не знает, как реализовать концепцию рисования кривой. *« Вы не используете алгоритм Брешенема для рисования линий, а не кривых. Теперь вы можете использовать алгоритм Брешенема, чтобы нарисовать кривую, сначала разделив ее на кучу строк. Но это другое дело. –
Итак, идите и найдите кубические и/или квадратичные сплайны. Написано множество строк, в которых вычисляются точки на каждом из них. Как сказал Никол, алгоритм Брешенема не имеет (или очень ограниченного, в лучшем случае) практического использования здесь. – enhzflep
Алгоритм Bresenham для кривых всегда только для определенного типа уравнения/кривой, который вы получаете при компиляции/времени кода. поэтому, если вы создадите Bresenham для эллипса, он всегда будет рисовать только эллипс. Это ограничение неприемлемо для произвольной формы кривой, не говоря уже о подразделении по пунктам inflex и т. Д. Вместо этого используйте кубические кривые. см. [Правильная реализация кубической сплайновой интерполяции] (http://stackoverflow.com/a/20517874/2521214) Все кубические кривые обрабатываются одинаково, единственное отличие заключается в том, как вы вычисляете коэффициенты. – Spektre