[C++] [UNIX] Графика
скорее всего в жизни это вряд ли пригодится, но хотелось бы просто уметь, по той аналогии, что когда-то давно рисовали в школе на паскале или бейсикеПросто шоб было - не подход в программировании. Если ты скажешь конкрентную задачу, то тебе точно помогут.
В отличае от учебного бейсика, где это было встроенно специально для обучения, данные возможности реализуются отдельными библиотеками. Какие из них тебе нужны - зависит от задачи.
ЗЫ Вот вам и школьное образование.
лько под FreeBSD, поэтому порекомендуйте что-нибудь соответствующее, где с этим можно ознакомится,По аналонгии с Паскалем и Бейсиком на Сях не рисуют. Более того, в самом стандерте языка графика не описывается. Так что возможности рисования полностью зависят от библиотеки. Если ты хочешь близкое к Паскалю, то на мехмате на 3 курсе рисуют. И даже книжечка есть типа программирование под X Windows. По этот способ не переносим. Можно использовать переносимые библиотеки типа QT, Gtk для оконных интерфейсов. Там есть елементы для рисования.
главное, не очень старое, иначе много придется ис
проще наверно через SDL такую графику реализовать
man curses
o rly?
Xlib, но это непереносимо.
примерчик . переименовать в .tar.gz
линковать так:
примерчик . переименовать в .tar.gz
линковать так:
gcc ... -lX11
По аналонгии с Паскалем и Бейсиком на Сях не рисуют.когда это в стандартный поскаль стали входить функции рисования? Нечего его ровнять с бейсиком.
когда это в стандартный поскаль стали входить функции рисования?а кто такой "стандартный поскаль"?
разве для паскаля есть стандарт?
> разве для паскаля есть стандарт?
Прикинь, да?
---
"Расширь своё сознание!"
Прикинь, да?
---
"Расширь своё сознание!"
Прикинь, да?ссылочку дай. А то что-то я впервые про это слышу. А также расскажи, где он используется (если учесть, что самое древнее, что используется - это турбопаскаль 5.5 - первый (вроде) компилер паскаля, который объекты поддерживает, а там графика через подключаемый модуль реализуется)
а кто такой "стандартный поскаль"?да, прикинь. Однако он солишком архаичный чтобы его использовать.
разве для паскаля есть стандарт?
Номер я тебе могу найти, только он тебе нужен?
---
...Я работаю антинаучным аферистом...
---
...Я работаю антинаучным аферистом...
Номер я тебе могу найти, только он тебе нужен?номер чего?
Стандарта ИСО или АНСИ.
Ты по ссылкам, что ли, ходить не умеешь?
---
...Я работаю...
Ты по ссылкам, что ли, ходить не умеешь?
---
...Я работаю...
Смотри документацию к библиотекам QT и GTK - они написаны понятным и человеческим языком.
Из собственного опыта могу сказать, что когда мне потребовалось построить графики, я поступил следующим образом. В проге, которая делала вычисления, я перенаправил вывод в файл, а затем написал скрипт на Perl-е, где есть замечательная библиотечка GD::Graph, которая по полученным данным просто строила график и сохраняла его в gif-ку.
Затем полученная gif-ка вставлялась в tex и после этого печаталось. Как вариант, может тебя устроит и такой подход.
Из собственного опыта могу сказать, что когда мне потребовалось построить графики, я поступил следующим образом. В проге, которая делала вычисления, я перенаправил вывод в файл, а затем написал скрипт на Perl-е, где есть замечательная библиотечка GD::Graph, которая по полученным данным просто строила график и сохраняла его в gif-ку.
Затем полученная gif-ка вставлялась в tex и после этого печаталось. Как вариант, может тебя устроит и такой подход.
>а затем написал скрипт на Perl-е, где есть замечательная библиотечка GD::Graph
Ну, вообще-то GD::Graph — это API к библиотеке gdlib, написанной на C.
Ну, вообще-то GD::Graph — это API к библиотеке gdlib, написанной на C.
Через popen(3) скармливать команды в gnuplot.
Если не получится через popen, создать пару псевдотерминалов.
---
"Аллах не ведёт людей неверных."
Если не получится через popen, создать пару псевдотерминалов.
---
"Аллах не ведёт людей неверных."
Посмотри на такую библиотеку: cimg.sf.net.
В ней легко рисуются простейшие рисунки + она кроссплатформенная.
В ней легко рисуются простейшие рисунки + она кроссплатформенная.
Убейте меня, но почему никто не посоветовал человеку взботнуть OpenGL? =)
Он ведь может просто не знать, что даже текстурками вращать и световые источники ставить теперь совсем несложно.
Шолегг, хочешь рисовать 3D-графику проще, чем кружочки и линии? Если да - подскажем как.
Он ведь может просто не знать, что даже текстурками вращать и световые источники ставить теперь совсем несложно.
Шолегг, хочешь рисовать 3D-графику проще, чем кружочки и линии? Если да - подскажем как.
Стандарта ИСО или АНСИ.окей, посмотрел я эти стандарты.
Ты по ссылкам, что ли, ходить не умеешь?
Никакого упоминания о работе с графикой не нашел.
И что, никаких мыслей, с чем это связано?
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."
И что, никаких мыслей, с чем это связано?видимо по той причине, что рисовать можно лишь подключив внешнюю библиотеку, т.е. во встроенный набор функций рисование не входит. О чем я и говорил ранее.
> рисовать можно лишь подключив внешнюю библиотеку
А если рисовать нечем?
---
...Я работаю антинаучным аферистом...
А если рисовать нечем?
---
...Я работаю антинаучным аферистом...
И что, никаких мыслей, с чем это связано?
видимо по той причине, что рисовать можно лишь подключив внешнюю библиотеку, т.е. во встроенный набор функций рисование не входит. О чем я и говорил ранее.
Гы, лол. В стандарте нет некой функции, потому что она доступна только через внешние библиотеки. Чуве, у тебя проблемы с причинно-следственной связью.
Кстати, поглядел стандарт Full BASIC. Оказывается, в этом стандарте действительно есть графика.
ya rly!
+1 к :
Для графики OpenGL хорошо.
Если хочется порисовать виджеты — то wxWindows — кроссплатформенная библиотека. Сам ее использовал через питонский интерфейс wxPython, но она вполне Сишная, opensourc'ная и документации навалом достаточно хорошего качества.
При небольшой пряморукости OpenGL встраивается в wxWidgets, примеры есть в сети.
Получишь виджеты хорошего качества + картинки хорошего качества.
Для графики OpenGL хорошо.
Если хочется порисовать виджеты — то wxWindows — кроссплатформенная библиотека. Сам ее использовал через питонский интерфейс wxPython, но она вполне Сишная, opensourc'ная и документации навалом достаточно хорошего качества.
При небольшой пряморукости OpenGL встраивается в wxWidgets, примеры есть в сети.
Получишь виджеты хорошего качества + картинки хорошего качества.
Кстати, да. Надо попробовать поразбираться с OpenGL.
Спасибо за хорошую идею!
Спасибо за хорошую идею!

Советую Qt. Ее плюс — кросплатформенность. Минус — надо изучать библиотеку, структуру приложения на ней. Но она того стоит. Там есть практически всё для обыденной жизни программиста, т. е. для программ общего назначения (файлы, строки, контейнеры, алгоритмы, межпроцессное взаимодействие, графика и конечно элементы пользовательского интерфейса).
начинать надо с aalib
Проще всего в 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";

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

единственный минус - неинтерактивно. Нельзя от клавиатуры/мышки кроп покрутить, приблизить/удалить..
> единственный минус - неинтерактивно.
Сделать псевдотерминал и пихать команды в gs/gnuplot.
---
...Я работаю антинаучным аферистом...
Сделать псевдотерминал и пихать команды в gs/gnuplot.
---
...Я работаю антинаучным аферистом...
Если много объектов - например, траингуляция на ~3000 элементов, то оперативно только OpenGL и т.п.
Оставить комментарий
Rico
я пока еще новичок в с++, но очень интересно было бы научиться рисовать графику на с++: различные объекты по точкам (линии, окружности... задавать цвет линий, отображаемого текста и фона, и т.п.скорее всего в жизни это вряд ли пригодится, но хотелось бы просто уметь, по той аналогии, что когда-то давно рисовали в школе на паскале или бейсике
сейчас работаю только под FreeBSD, поэтому порекомендуйте что-нибудь соответствующее, где с этим можно ознакомится,
главное, не очень старое, иначе много придется исправлять
Thanks in advance