Приложение для рисования с 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();

1 ответ

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

Другие вопросы по тегам