Приложение для рисования с OpenGL/Openframeworks

Я пытаюсь запрограммировать приложение для мазка/рисования кистью, используя OpenGL в Openframeworks. Сейчас я просто пытаюсь создать волнистые линии, которые следуют за вашей мышью.

Я начал с использования ofpolyline, но мне только что удалось создать прямую линию, которая следует за моей мышью. Я был бы очень признателен за псевдокод или что-то еще, чтобы указать мне правильное направление.

start. set (mouseX,mouseY);
end.set(mouseX,mouseY);

ofPolyline myline;
myline.addVertex(start.x,start.y);
myline.curveTo(end.x,end.y); 
myline.bezierTo(mouseX,mouseY, mouseX,mouseY,mouseX, mouseY);
myline.addVertex(end.x,end.y);
myline.draw();

person Andrea F    schedule 22.06.2013    source источник
comment
Что именно ты пытаешься сделать? Хотите рисовать мышкой?   -  person Andreas Haferburg    schedule 22.06.2013
comment
Да, я хотел бы, чтобы это выглядело так, как будто вы рисуете карандашом, а затем мазком кисти.   -  person Andrea F    schedule 23.06.2013


Ответы (1)


Кривая Безье с двумя вершинами всегда представляет собой отрезок прямой линии. Вам нужно добавить больше вершин/контрольных точек, чтобы получить невырожденные (круглые) кривые. Таким образом, вы можете где-то сохранить последнюю позицию мыши и добавить новую вершину, когда мышь будет перемещена на определенную величину (например, на 20 пикселей). Или добавить вершину, когда пользователь щелкает. Однако, если вы всегда просто вызываете bezierTo(x,y,x,y,x,y), вы все равно будете получать только прямые линии. Вам нужно сместить две контрольные точки от (x, y), чтобы получить круглые кривые.

person Andreas Haferburg    schedule 22.06.2013