Предназначение
Програмата sketchps служи за достъпно, непосредствено и качествено създаване на прости геометрични чертежи по зададени данни – координати и др. на съдържащите се в тях обекти. Описанието на чертежа, във вид на текстов файл, се подава на sketchps, която по него създава файл във формат PostScript. Предвижда се входният файл да се създава чрез програма, но описания на прости чертежи лесно могат да се правят и „на ръка“.
Създаването на чертеж чрез sketchps е достъпно, защото не зависи от език за програмиране, графична библиотека, операционна система, допълнителни програми и други елементи на работната среда. Нужно е само по един или друг начин (ръчно или програмно) да се подготви текстов файл с описание на чертежа. За възпроизвеждане на получения резултат е необходима програма-визуализатор на PostScript, каквито има различни свободно разпространяеми за всички операционни системи.
Създаването на чертеж е и непосредствено, в смисъл, че описанието му е прост текст, непосредствено представящ съответните, свързани с геометрични построения и с избор на работни параметри действия. Овладяването на използвания от програмата и описан по-долу език за описание на чертежи не изисква никакви допълнителни знания и е постижимо за броени минути.
Накрая, получаваният резултат е качествен, благодарение на използването на езика PostScript, а също и поради възможността геометричните размери в чертежа-резултат да се изменят, докато тези, свързани с представянето – дебелини на линии и размери на обозначения на точки — остават фиксирани.
Изходният за sketchps формат EPS (Encapsulated PostScript) е подходящ не само за показване на резултата върху екран, но и за вграждане като илюстрация в печатни документи. Евентуално мащабиране не нарушава качеството на изобразяване – няма пикселизиране или загуба на детайли – важна отлика от растерните образи. От друга страна, чрез превеждане в растерен вид (напр. PNG или GIF) резултатът може да се използва и за илюстрации в Web.
Sketchps може да се използва за онагледяване на данни за и на резултати от програми, боравещи с геометрични обекти – точки, отсечки и окръжности. Програмата дава възможност обекти от трите вида, вкл. съставни – начупени линии и многоъгълници, да се рисуват всеки с избран цвят и други атрибути. Други фигури могат да се представят чрез посочените. Координатната система, спрямо която се описват геометричните фигури и точки, може да се премества, завърта и мащабира.
Основна подбуждаща причина за създаването на sketchps беше желанието ми да предоставя на студентите от водения от мен курс по алгоритмична (изчислителна) геометрия във ФМИ на СУ „Кл. Охридски“, както и на учениците от съботната школа по информатика при Софийската математическа гимназия удобен инструмент за онагледяване на геометрична информация. Алтернативите на подобно средство – ръчно чертане, използване на графични програмни библиотеки (напр. OpenGL при студентите) и др. под. – по ред много основателни причини бяха и са неприемливи.
Начин на използване
Програмата чете текст с описания на геометрични обекти от стандартния вход и образува текст-резултат на стандартния изход, представляващ програма на езика PostScript, чието изпълнение поражда рисунка на обектите.
Пример: ако е налице файл one.sps с описания (за съдържанието на такъв файл вж. следващия раздел), можем да напишем следното на командния ред:
sketchps <one.sps >one.eps
(знаковете < и > са за пренасочване на стандартните вход и изход съответно от клавиатурата към посочения входен файл и от монитора към посочения файл-резултат). Получаваме изходен файл one.eps, който може да бъде подаден на програма като gs, gv, ggv, ghostview или друга подобна, така че да видим рисунката.
Името на входния файл може да бъде произволно избрано. По начало същото важи и за изходния, но е за препоръчване неговото име да завършва с .eps, което е стандартно за файлове във формат EPS.
В получавания файл-резултат, освен собствено рисунката, се съхранява и информация за границите ѝ – (невидима) правоъгълна рамка в чертожното пространство. Тази информация sketchps извлича и записва въз основа на всички координати, разстояния и дебелини на линии в рисунката. Тя се използва от разнообразни програми, които вмъкват рисунката в един или друг вид документ за правилното ѝ разполагане и евентуално мащабиране.
Разбира се, нищо не пречи входът на sketchps да постъпва не от файл, а от клавиатурата или по канал (pipe) от друга програма, а изходът да попада по канал в още някоя програма. Посоченият в примера начин на използване обаче е типичният.
Най-често входният текст за sketchps се образува като изход от някоя програма, но може да бъде написан и на ръка, с кой да е текстов редактор.
Когато sketchps установи грешка в подадения ѝ входен текст, тя изписва съобщение за това на т. нар. стандартен изход за грешки (stderr).
Програмата sketchps може да се използва и с параметри, което дава възможност получаваната в резултат на описанието рисунка да бъде преместена, уголемена/смалена или и едното и другото. Параметрите са един, два или четири и се тълкуват както следва.
- x y
- Двете числа задават координати на точка в абсолютната КС (вж. следващия раздел). Рисунката се премества така, че центъра на рамката ѝ да съвпада с тази точка.
- x1 y1 x2 y2
- Четирите числа задават две двойки координати на точки: краища на диагонал на правоъгълник в абсолютната КС. Рисунката се премества и мащабира така, че центърът на рамката ѝ да съвпадне с този на зададения правоъгълник и рамката да се вписва възможно най-плътно в правоъгълника (но без да се изменя отношението на ширината и височината ѝ).
- 0
- Подобно на предишния случай, като за целеви правоъгълник се взема лист с формат A4, „орязан“ с по малко от всяка страна.
Когато рисунката се подлага на някое от описаните преобразования, получаваният резултат може да се разминава със зададените в описанието ѝ координати и размери. В този случай за справка на потребителя даденото преобразование се записва в края на образувания изходен файл (във вид на коментарен ред на PostScript).
Посоченият начин за външно, независимо от описанието ѝ изменяне на рисунката може да е от полза, когато нейното местоположение или размер, каквито тя има по начало, я правят неудобна за използване. Например с параметрично повикване можем да осигурим подходящо голям размер и удобно разполагане на рисунката за разглеждане на съдържанието ѝ, като самата рисунка (нейното описание) запазва избраните при създаването ѝ размери и разположение.
Рисуване на геометрични обекти и формат на входния файл
Входният текст за sketchps представлява последователност от редове, всеки съдържащ команда или (числови) данни за някакво построение. Празните редове са без значение.
Командите биват два вида. Едни служат за построяване на геометрични фигури и точки, а други – за избор на чертожни параметри. Съвкупността от последните задава графичния контекст за геометричните построения. Всяка команда се разполага на отделен ред.
Всяка команда се съпровожда от съответните, нужни за изпълнението ѝ данни. Данните на построителна команда я следват на отделни редове. Понеже с една команда може да се задават произволен брой обекти, броят на редовете с данни варира и се избира съответно. При контекстните команди данните имат фиксиран обем и се записват на същия ред след командата.
За елементите на графичния контекст са в сила следните подразбирания:
Всяко от изброените може да се променя с подходяща команда.
Подразбиращата се координатна система наричаме абсолютна, тъй като тя има и следния смисъл. Посочването на ново начало, мащаб или завъртане при избор на нова текуща КС става чрез отнасяне на съответния параметър към абсолютната КС (вж. по-долу командите move, unit и rotate в това отношение). И така, абсолютната координатна система е и текуща по подразбиране, а всяка друга текуща КС се задава спрямо абсолютната.
Следва описание на командите, заедно с необходимите за всяка от тях данни.
| black | silver | gray | white |
| maroon | red | purple | fuchsia |
| green | lime | olive | yellow |
| navy | blue | teal | aqua |
Данните за командите биват цели числа или десетични дроби. Във втория случай за начало на дробната част може да се използва както точка, така и запетая.
Ако на някой ред се среща, в началото или на края на реда или с поне по един интервал от двете му страни, знакът – (минус), той и всичко до края на реда се пропускат при четене от sketchps. Това дава възможност при нужда да се записват пояснителни бележки (вж. примерите тук). Пропуска се и остатъкът от съдържанието на реда след прочетена команда или данни, така че там също може да се помества такъв текст.
Допълнителни бележки
Рисуването на точки става по фиксирано избран в програмата начин: малък бял кръг на фона на по-голям концентричен кръг. Цветът на последния се влияе, както и при останалите обекти, от избора на цвят с colour, но вътрешният кръг винаги е бял. Също така, размерът на двата кръга е фиксиран – не зависи от избора на мащаб – макар че местоположението на точката (нейните координати) се влияе от него.
За точките е предвидена и следната особеност: всички те, независимо къде сред другите обекти са описани, се поставят на чертежа така, че да припокриват каквото евентуално се намира на същото място, дори (части от) по-късно срещаните във входния текст обекти. Всички останали геометрични обекти се припокриват според реда на описването им – по-късно описаните се рисуват върху предишните.
Въпреки че точките се поставят накрая, те се рисуват според цветовия и мащабен контекст от мястото на описването им.
Използването на програмата с параметри може, както видяхме, да изменя мащаба на рисунката, но и това, както изричното сменяне на мащаба в графичния контекст с командата unit, не влияе нито на дебелините на линии, нито на размера, в който се изобразяват точки. Първите се задават изключително с командата width, а второто има отнапред избрана, неизменна стойност.
Ако пояснителните бележки във входния файл използват знакове извън множеството ascii (а кирилицата не е ascii!), този файл трябва да се съхранява с използване на кодиране UTF-8. Ако използвате само латиница, няма значение с какво кодиране записвате. Добре развитите текстови редактори позволяват да се направи избор на вида кодиране при записване на текст – най-добре използвайте някой такъв.
… и самата програма
Оттук може да вземете изпълними форми на програмата за GNU/Linux и за MS Windows
Всички команди, както и споменатите особености във връзка с поставянето на точки в чертежа, са илюстрирани в примерите, дадени тук.
За тези, които се интересуват от реализацията на програмата: тя е написана на езика D и текстът ѝ може да бъде взет оттук. С тази бележка давам право на всеки да го ползва за каквото намери за добре. Ако видоизменяте програмата по някакъв начин, моля уведомете ме и разпространявайте вашия вариант под различно от sketchps име.