[C++] [UNIX] Графика

Rico

я пока еще новичок в с++, но очень интересно было бы научиться рисовать графику на с++: различные объекты по точкам (линии, окружности... задавать цвет линий, отображаемого текста и фона, и т.п.
скорее всего в жизни это вряд ли пригодится, но хотелось бы просто уметь, по той аналогии, что когда-то давно рисовали в школе на паскале или бейсике
сейчас работаю только под FreeBSD, поэтому порекомендуйте что-нибудь соответствующее, где с этим можно ознакомится,
главное, не очень старое, иначе много придется исправлять
Thanks in advance

FRider

скорее всего в жизни это вряд ли пригодится, но хотелось бы просто уметь, по той аналогии, что когда-то давно рисовали в школе на паскале или бейсике
Просто шоб было - не подход в программировании. Если ты скажешь конкрентную задачу, то тебе точно помогут.
В отличае от учебного бейсика, где это было встроенно специально для обучения, данные возможности реализуются отдельными библиотеками. Какие из них тебе нужны - зависит от задачи.
ЗЫ Вот вам и школьное образование.

Realist

лько под FreeBSD, поэтому порекомендуйте что-нибудь соответствующее, где с этим можно ознакомится,
главное, не очень старое, иначе много придется ис
По аналонгии с Паскалем и Бейсиком на Сях не рисуют. Более того, в самом стандерте языка графика не описывается. Так что возможности рисования полностью зависят от библиотеки. Если ты хочешь близкое к Паскалю, то на мехмате на 3 курсе рисуют. И даже книжечка есть типа программирование под X Windows. По этот способ не переносим. Можно использовать переносимые библиотеки типа QT, Gtk для оконных интерфейсов. Там есть елементы для рисования.

vall

проще наверно через SDL такую графику реализовать

evgen5555

man curses

vall

o rly?

yolki

Xlib, но это непереносимо.
примерчик . переименовать в .tar.gz
линковать так:

gcc ... -lX11

Andbar

По аналонгии с Паскалем и Бейсиком на Сях не рисуют.
когда это в стандартный поскаль стали входить функции рисования? Нечего его ровнять с бейсиком.

mira-bella

когда это в стандартный поскаль стали входить функции рисования?
а кто такой "стандартный поскаль"?
разве для паскаля есть стандарт?

Ivan8209

> разве для паскаля есть стандарт?
Прикинь, да?
---
"Расширь своё сознание!"

Andbar

Прикинь, да?
ссылочку дай. А то что-то я впервые про это слышу. А также расскажи, где он используется (если учесть, что самое древнее, что используется - это турбопаскаль 5.5 - первый (вроде) компилер паскаля, который объекты поддерживает, а там графика через подключаемый модуль реализуется)

Andbar

а кто такой "стандартный поскаль"?
разве для паскаля есть стандарт?
да, прикинь. Однако он солишком архаичный чтобы его использовать.

Ivan8209

Номер я тебе могу найти, только он тебе нужен?
---
...Я работаю антинаучным аферистом...

Andbar

Номер я тебе могу найти, только он тебе нужен?
номер чего?

Ivan8209

Стандарта ИСО или АНСИ.
Ты по ссылкам, что ли, ходить не умеешь?
---
...Я работаю...

Sharp

Смотри документацию к библиотекам QT и GTK - они написаны понятным и человеческим языком.
Из собственного опыта могу сказать, что когда мне потребовалось построить графики, я поступил следующим образом. В проге, которая делала вычисления, я перенаправил вывод в файл, а затем написал скрипт на Perl-е, где есть замечательная библиотечка GD::Graph, которая по полученным данным просто строила график и сохраняла его в gif-ку.
Затем полученная gif-ка вставлялась в tex и после этого печаталось. Как вариант, может тебя устроит и такой подход.

qsk78

>а затем написал скрипт на Perl-е, где есть замечательная библиотечка GD::Graph
Ну, вообще-то GD::Graph — это API к библиотеке gdlib, написанной на C.

Ivan8209

Через popen(3) скармливать команды в gnuplot.
Если не получится через popen, создать пару псевдотерминалов.
---
"Аллах не ведёт людей неверных."

ma3yp

Посмотри на такую библиотеку: cimg.sf.net.
В ней легко рисуются простейшие рисунки + она кроссплатформенная.

2354570

Убейте меня, но почему никто не посоветовал человеку взботнуть OpenGL? =)
Он ведь может просто не знать, что даже текстурками вращать и световые источники ставить теперь совсем несложно.
Шолегг, хочешь рисовать 3D-графику проще, чем кружочки и линии? Если да - подскажем как.

Andbar

Стандарта ИСО или АНСИ.
Ты по ссылкам, что ли, ходить не умеешь?
окей, посмотрел я эти стандарты.
Никакого упоминания о работе с графикой не нашел.

Ivan8209

И что, никаких мыслей, с чем это связано?
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."

Andbar

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

Ivan8209

> рисовать можно лишь подключив внешнюю библиотеку
А если рисовать нечем?
---
...Я работаю антинаучным аферистом...

Flack_bfsp

И что, никаких мыслей, с чем это связано?

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

Гы, лол. В стандарте нет некой функции, потому что она доступна только через внешние библиотеки. Чуве, у тебя проблемы с причинно-следственной связью.
Кстати, поглядел стандарт Full BASIC. Оказывается, в этом стандарте действительно есть графика.

evgen5555

ya rly!

pilot

+1 к :
Для графики OpenGL хорошо.
Если хочется порисовать виджеты — то wxWindows — кроссплатформенная библиотека. Сам ее использовал через питонский интерфейс wxPython, но она вполне Сишная, opensourc'ная и документации навалом достаточно хорошего качества.
При небольшой пряморукости OpenGL встраивается в wxWidgets, примеры есть в сети.
Получишь виджеты хорошего качества + картинки хорошего качества.

Rico

Кстати, да. Надо попробовать поразбираться с OpenGL.
Спасибо за хорошую идею!

Missi4ka

Советую Qt. Ее плюс — кросплатформенность. Минус — надо изучать библиотеку, структуру приложения на ней. Но она того стоит. Там есть практически всё для обыденной жизни программиста, т. е. для программ общего назначения (файлы, строки, контейнеры, алгоритмы, межпроцессное взаимодействие, графика и конечно элементы пользовательского интерфейса).

Kalya777

начинать надо с aalib

Olyalyau

Проще всего в C++ рисовать так:
 
std::cout << "%!PS-Adobe-2.0\n";
std::cout << "%%Creator: Das bin Ich!\n";
std::cout << "%%Title: Yo-Yo\n";
std::cout << "%%Pages: 1\n";
std::cout << "%%PageOrder: Ascend\n";
std::cout << "%%BoundingBox: 0 0 240 200\n";
std::cout << "%%EndComments\n";
std::cout << "\n";
std::cout << "2 setlinewidth\n";
std::cout << "10 10 moveto\n";
std::cout << "110 10 lineto\n";
std::cout << "110 110 lineto\n";
std::cout << "10 110 lineto\n";
std::cout << "closepath\n";
std::cout << "stroke\n";
std::cout << "\n";
std::cout << "150 10 moveto\n";
std::cout << "0 1 3 {\n";
std::cout << " 60 0 rlineto\n";
std::cout << " 360 5 div rotate\n";
std::cout << " } for\n";
std::cout << "closepath\n";
std::cout << "fill\n";
std::cout << "\n";
std::cout << "showpage\n";
std::cout << "\n";
std::cout << "%%EOF\n";

yolki

+1 и картинки можно сразу в ТеХ вставлять
единственный минус - неинтерактивно. Нельзя от клавиатуры/мышки кроп покрутить, приблизить/удалить..

Ivan8209

> единственный минус - неинтерактивно.
Сделать псевдотерминал и пихать команды в gs/gnuplot.
---
...Я работаю антинаучным аферистом...

yolki

Если много объектов - например, траингуляция на ~3000 элементов, то оперативно только OpenGL и т.п.
Оставить комментарий
Имя или ник:
Комментарий: