LINUX.ORG.RU

Си. Рисование примитивной графики

 , , ,


2

5

Требуется графическая либа для рисования примитивной графики в linux. ЯП - си. Компилятор - gcc/

Получил задание по учёбе: требуется с помощью модуля GRAPH из TurboPascal нарисовать графики функций и тд. Но я делаю лабы на чистом Си. Винды нет. Можно же наверно создать элементарное окно и вывести в подобие canvas?
Гугл внятного ничего не даёт. #include <vga.h> уже попробовал. Ошибку уже посмотрел;-) Насчёт sdl толком не понял.

★★★
Ответ на: комментарий от Ignatov

turboC under dosbox.

после того как сделаешь(но ещё не здашь) работащие проги в турбосях, поэксперементируй в части переносимости полученного кода под gcc under linux , clang under linux

ну и реализуй(может найдёшь уже существующее и улучШИШь) graph.tpl под linux above «gtk» (миллионны лемингов школьников-так-и-мечтающих-о-линуксе будут твои)

qulinxao ★★☆
()
Ответ на: комментарий от Ignatov

Отрисовывай в png. Не нужно никаких sdl/opengl/окон. Все легко собирается и работает на любой системе.

crutch_master ★★★★★
()
Ответ на: комментарий от MKuznetsov

«задача - сделать заданными средствами на pascal под заданную ОС, но я дартаньян и сам знаю что делать» я бы вкатал 2 за профнепригодность. pascal кстати весьма уместен и есть под linux.

При чем тут Д'артаньян? На СИ мне сдавать разрешили, поэтому вопрос языка решён. Pascal знаю! СИ не очень - поэтому и выбрал его. ОС не такая глобальная проблема. Писать под Linux (да и если на СИ под винду тоже) для меня двойная проблема - тащить ноут.

Ignatov ★★★
() автор топика
Ответ на: комментарий от anonymous

а если препод задал на американском писать сочинение

Как вариан! Если показать преподавателю знание американского диалекта и английского в целом. И убедиться у преподавателя, что он знает диалект UK, сдать на английском, но с диалектом UK.

Ignatov ★★★
() автор топика
Ответ на: комментарий от crutch_master

Сдавать все равно со своего ноута. В аудитории на компах нет компилятора для СИ. Писать в файл... Задача вывести на монитор. Далеко уходить от задачи - иногда приходится с нуля переписывать.

Ignatov ★★★
() автор топика
Ответ на: комментарий от Eddy_Em

Для примитивной опенгл не нужен. SDL норм с SDL gfx (там примитивы).

slackwarrior ★★★★★
()
Ответ на: комментарий от crutch_master

Я так понял - cairo вполне подойдёт? Рисование есть, если нужно, текст выведет. Анимацию вроде тоже умеет. Квадратики нарисует и закрасит. Документации и на русском полно. Притом всё выведет в отдельном окошке.

Задачи:
Составить программу моделирования паркетов из:
a) прямоугольных треугольников;
Разработайте программу для построения следующих
графиков функций:
a) y = x^3;
Разработайте динамическую модель:
a) Солнца для двух планет;

Ignatov ★★★
() автор топика
Ответ на: комментарий от slackwarrior

gl*() апи теперь депрекате, ты не знал?

С какого перепоя? Надо будет попробовать. Если OpenGL действительно теперь без шейдеров не работает, то это ж жопа!

// с другой стороны, если написал шейдеры для opengl, то и в вебе запустишь на webgl

Eddy_Em ☆☆☆☆☆
()
Последнее исправление: Eddy_Em (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

С какого перепоя? Надо будет попробовать. Если OpenGL действительно теперь без шейдеров не работает, то это ж жопа!

Попробуй под мобилку че-нибудь в триде :) В новых библия-книжках про опенгл с ходу «забудьте все, что вы знали про glFunctionName()»

slackwarrior ★★★★★
()
Ответ на: комментарий от slackwarrior

под мобилку

Спасибо, я такими извращениями не страдаю.

В новых библия-книжках про опенгл с ходу

Если разработчики опенгля идиоты, то ладно. Забьем на опенгль.

Жалко ☹

Eddy_Em ☆☆☆☆☆
()

Получил задание по учёбе: требуется с помощью модуля GRAPH из TurboPascal нарисовать графики функций и тд. Но я делаю лабы на чистом Си. Винды нет. Можно же наверно создать элементарное окно и вывести в подобие canvas?

Можно, но тут есть такой момент, что задание само по себе ущербно. Ну что ты, в самом деле, не понимаешь как нарисовать что-то с помощью всяких line и cicrle? Какое знание тебе откроет выполнение этого задания? Если уж ты собрался сделать этот тупняк для галочки, чтобы преподу показать и он(а) от тебя отвязался, то не надо выёживаться - сделай как все на паскале и забудь как страшный сон.

no-such-file ★★★★★
()

Если устраивает через фреймбуфер тогда рекомендую свою библиотеку: http://sourceforge.net/projects/csnippets/

возьми из неё каталог iolib в свой проект и подключи через include ".iolib.c"

пример

#include "../.iolib.c"

int main()
{
    int x, y, c = 100;
    fb_init();
    while(c--)
        for( y = 0; y < fb_yres(); y++ )
            for( x = 0; x < fb_xres(); x++ )
                fb_set_pixel( x, y, x ^ y ^ c );

    fb_quit();
    return 0;
}

peter_t
()
Ответ на: комментарий от Ignatov

Не вижу тут противоречия. У SDL_gfx с собой демки есть (можно прям по ним прикинуть, что тебе пригодится и не велосипедить).

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Более чёткая задача
Честно - раньше не приходилось рисовать из программы. Но баловался ещё в школе, ну и формы двигал по экрану в дельфи;-) То, что всё завязано на координатах - я конечно понимаю. Как это работает в винде - есть лекция с примерами и полным объяснением. Мне же интересена реализации данной задачи конкретно в linux. Пока смотрю в сторону cairo и SDL_gfx. Не примут - перепишу. Зато знать буду;-)

Ignatov ★★★
() автор топика
Ответ на: комментарий от slackwarrior

Полазил по форумам - тоже пишут, что SDL_gfx предпочтительнее;-)

Ignatov ★★★
() автор топика
Ответ на: комментарий от Eddy_Em

Спасибо, я такими извращениями не страдаю.

Страдаешь-страдаешь. Еще не такими :) На новых картах только VBO и шейдеры дают максимальную производительность, а glFunctionName() - это легаси (в профайлах выше 3.0). Из OpenGL ES поэтому оно вообще выпилено. Deal with it.

Если разработчики опенгля идиоты, то ладно. Забьем на опенгль.

Не, если ты не понимаешь, зачем это нужно - жалко тебя :) (Spatial locality и т.д. уловки для получения прироста производительности без существенного подъема цены железяки) К знанию матричного матана и построения сцен используемый АПИ ортогонален.

slackwarrior ★★★★★
()
Ответ на: комментарий от Legioner

Поставь винду в виртуалке и не выпендривайся, диплом краснее будет.

А потом страдаем - мало софта в linux;-) У меня сессия (я заочник. Еще и с работы на время сессии полностью отпустили) чтобы учиться! А в Pascal еще и по чёткой инстукции выполнить то, что я без манула сделаю... Это по-моему не учеба.

P.S. То, что я на уровне знаю Pascal и слабо знаю СИ, я уже писал

Ignatov ★★★
() автор топика
Ответ на: комментарий от slackwarrior

SDL_gfx. Если не затруднит - ткните в примеры. Желательно создание формы для рисования, чтобы было от чего оттолкнуться. Либы установил. Компилится. Инициализация работает.

Ignatov ★★★
() автор топика
Ответ на: комментарий от Ignatov

P.S. То, что я на уровне знаю Pascal и слабо знаю СИ, я уже писал

Да в общем не особо большая проблема :) Окромя личных амбиций «изучить Си» или там «сделать на линуксе». У нас в курсе САПР машинные основы графики сдавали тоже в основном на паскале - кто по уму делал, у них к концу курса свои либы примитивов были с 2D и 3D возможностями (ну, кроме аппаратного ускорения - но для лаб и понимания, как оно вообще работает, вполне годно. Хошь в голом досе кубики крути, хошь на канвасе дельфов... и на Си портировалось норм во фреймбуфер линукса). Просто делай как тебе удобнее :)

slackwarrior ★★★★★
()
Ответ на: комментарий от Ignatov

«See the source in the test/*.c files for some sample code and implementation hints.» (с)

slackwarrior ★★★★★
()
Ответ на: комментарий от Ignatov

А потом страдаем - мало софта в linux;-) У меня сессия (я заочник. Еще и с работы на время сессии полностью отпустили) чтобы учиться! А в Pascal еще и по чёткой инстукции выполнить то, что я без манула сделаю... Это по-моему не учеба.

Хочешь потратить силы с пользой - найди open source проект и помогай ему. А твои выкрутасы никто не оценит. А если попадётся придурочный препод, может ещё и загнобить.

Legioner ★★★★★
()

ребуется с помощью модуля GRAPH из TurboPascal нарисовать графики функций и тд.

Dosbox + freedos + turbopascal (он давно уже бесплатно раздается).

И не выгребывайся. Делай в точности то, что от тебя требует преподаватель.

anonymous
()
Ответ на: комментарий от Legioner

По такой логике еще и полностью на винду переходить надо;-) А то придурки загнобят;-) Это же выкрутасы!

найди open source проект и помогай ему.

Извини! Но без меня явно лучше будет работать;-) А то сломаю что нибудь.

Ignatov ★★★
() автор топика
Ответ на: комментарий от anonymous

Делай в точности то, что от тебя требует преподаватель.

И раздать всей группе

PROFIT!

Ignatov ★★★
() автор топика
Последнее исправление: Ignatov (всего исправлений: 1)
Ответ на: комментарий от Ignatov

По такой логике еще и полностью на винду переходить надо;-)

Если от тебя этого требуют в ВУЗе, то да, надо. Дома для себя ты можешь хоть на MacOS торчать, а на работе (учёбе) будь добр - делай то, что от тебя требуют.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Я ж написал уже! Мне интересно как это реализуется в Linux! Скажут переделать под GRAPH - переделаю! Там еще написано, что на TurboPascal надо делать;-) Но у меня задача стоит на СИ. Да! Можно на борландском СИ сделать. Но это опять под оффтоп.

PS у нас тут на ЛОРе все такие? Просишь конфету «коровка» тебе все предлагаю печенье «плазма» или говорят, что конфеты не нужны.

Ignatov ★★★
() автор топика
Ответ на: комментарий от Ignatov

или говорят, что конфеты не нужны.

Газировки нету, жри кило печенек! :) И да, не выпендривайся, слушай валенки :)

slackwarrior ★★★★★
()
Ответ на: комментарий от Ignatov

На СИ мне сдавать разрешили, поэтому вопрос языка решён. Pascal знаю! СИ не очень - поэтому и выбрал его.

во первых, что-то сдаётся мне, что и Pascal вы тоже не знаете :-)

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

Например вместо построения тупого графика y=x^3, строить графики полиномов N-ного порядка и выделять их особые точки, пересечения с осями, координатами мыша и нормали/касательные в этих местах. По запросу переключаться на производные. Такая хрень может пригодится в дальнейшем.

MKuznetsov ★★★★★
()
Ответ на: комментарий от no-such-file

Почему все сразу к языку прикопались? Разрешили на СИ. Блок-схемы на бумаге идентичные. Разница в синтаксисе.

Ignatov ★★★
() автор топика
Ответ на: комментарий от MKuznetsov

Задачи на линейные алгоритмы, ветвления и массивы. Всё начальный уровень. Смысл посчитать пример, найди максимальный элемент. Уж это я в паскале знаю. Про совершенные знания я не говорил. Насчет новых фич - «по условиям» их проще вынести в процедуры, но их «как бэ не проходили еще». Предмет и назван «Основы программирования».

Ignatov ★★★
() автор топика
Ответ на: комментарий от MKuznetsov

Такая хрень может пригодится в дальнейшем.

Как и любая хрень, может с большой вероятностью не пригодиться. Никогда :)

slackwarrior ★★★★★
()
Ответ на: комментарий от Ignatov

Мне интересно как это реализуется в Linux!

Занимайся своими убогими интересами в свободное от учебы время. А по учебе делай все в точности так, как тебе велено.

anonymous
()
Ответ на: комментарий от slackwarrior

Умеешь считать до 10 - остановись на 8 :)

Вот именно! Почему бы не освоить СИ, тем более если преподаватель только «за»?;-) Тем более суть программы от этого не меняется. Другое дело когда сдавать завтра, а в дельфи получается быстрее, т.к. знаком больше.

Ignatov ★★★
() автор топика
Ответ на: комментарий от Ignatov

По такой логике еще и полностью на винду переходить надо;-) А то придурки загнобят;-) Это же выкрутасы!

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

Извини! Но без меня явно лучше будет работать;-) А то сломаю что нибудь.

Не переживай, не сломаешь.

Legioner ★★★★★
()
Ответ на: комментарий от anonymous

Занимайся своими убогими интересами в свободное от учебы время. А по учебе делай все в точности так, как тебе велено.

Я уже 100 раз писал - сдам через GRAPH. Но вопрос то от этого не закрывается же;-)

Ignatov ★★★
() автор топика
Ответ на: комментарий от Legioner

В твоём случае задача - сдать твою информатику побыстрее

Сдам;-) С учетом того что в свой армейский праздник добиваю массимы, а не пью пиво. + времени еще предостаточно.

Ignatov ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.