Реферат – Език за предоставяне на химически съединения в пространството


 Категория: Реферати


Увод:

Пространствената графика се радва на все по-голяма популярност в наши дни. Това се дължи на голямото поле за изява която този тип графика притежава – като се започне от специялните ефекти в кино индустрията, мине се през компютърните игри и различните видове симулации и се стигне до сериозни програми използвани в сферата на бизнеса, науката и обучението.
Пространствената графика в науката се използва предимно за разработки на специфични симулации отразяващи даден процес в природата, представяйки го по удобен начин. Една програма симулация също така може да дава и някаква допълнителна информация относно даден процес. Подобни програми се разработват в области и подобласти на физиката, химията, биологията и географията. Общото между тези науки, което предразполага използването на пространствена графика в тях е, че те всичките се занимават с действително съществуващи обекти.
Този реферат демонстрира ползата от прилагането на пространствената графика за целите на науката химия. Оказва се че триизмерната графика има потенцялно голямо приложение в тази наука, а именно – в предсавянето на структурата на веществата и пространствената ориентация на изграждащите ги частици и онагледяване на структурните промени, които настъпват по време на даден химичен процес.
Авторът е разработил описателно-интерпретаторен език чрез който удобно могат да бъдат написани пространствени представяния на атоми и молекули на химически елементи, както и инструмент, който ги имплементира и визуализира в триизмерна среда. Езикът включва подръжка на анимация, а синтаксиса му e XML базиран, не е труден за усвояване и може лесно да бъде използван и от лица които не притежават някакви твърде задълбочени познания в областта на програмирането и информатиката.
Всъщност езика е разработен за използване от хора разботещи в областта на химията, с цел да им помогне и да ги улесни при представянето на спецялизирана информация от областта на химията. Пространственото представяне на веществата и анимацията осигурена от езика може много успешно да се използва при различни химически презентации и доклади, а също и в учебните часове по химия с цел по нагледното представяне на този тип материя и по-успещното и усвояване от страна на слушателите.
Езикът представлява интерпретативно-описателен език, чиято цел е да улесни презентациите в областта на химията, като чертае атоми и молекули в пространството, визуализира и онагледява различни химични реакции и процеси. Езикът включва в себе си и някой други полезни допълнения спомагащи за по доброто разбиране на съответната материя.

Open Inventor

Що е Open Inventor?
Open Inventor е обектно-ориентирана библиотека от високо ниво предназначена за пространствени разработки. Той е мощно средство за програмиране, което предлага на програмистите и разработчиците много удобен и лесен начин за написване на мощни 3D приложения с минимални усилия, от тяхна страна. Библютеката е разработена на езика C++, но съществуват пакети за употреба и с други популярни програмни езици (C и Java). Open Inventor е построен върху OpenGL, а двата продукта са разработени от една и съща компания – Silicon Graphics Inc. Реализации на библиотеката се подържат и от други софтуерни компании (Template Graphics Systems и Systems In Motion) под различни лицензи. Причината за това е че Open Inventor се радва на завидно голяма популярност сред програмисти на пространствени разработки.
В текущата разработка, Open Inventor играе много важна роля – той е средството с което програмата визуализира химическите обекти в пространството. Библиотеката също така е използвана за реализацията на анимации и осигурява добро ниво на интерактивност.
Open Inventor и OpenGL
Както беше споменато по-горе, Open Inventor е построен изцяло върху OpenGL. OpenGL е графична библиотека от ниско ниво, която отдавна е доказала своята ефективност и ефикасност и се е превърнала в стандартна, при разработката на всякакъв вид пространствени приложения под всички видове операционни системи. Въпреки това, за да бъдат писани ефективни програми на OpenGL, от програмиста се очаква да владее графичната библиотеката много добре за да се възползва адекватно от всичките и приемущества.
Open Inventor се явява един вид надграждане и допълване на OpenGL, чиято цел е да улесни пространственото програмиране, като се използват всичките силни страни на OpenGL. Програмиста използващ Open Inventor не се занимава директно със самото изчертаване на пространствените обекти, а с тяхното създаване и манипулиране. Заявките за чертаене са капсулирани вътре в самата библиотека и тъй като Open Inventor е правен от същите хора които са създали OpenGL, то тези заявки са организирани и оптимизирани по такъв начин, че да се получи възможно най-добра производителност от OpenGL.
Употреба и начин на действие
Open Inventor се използва много лесно поради самата същност и организация на библиотеката. Много разработчици и софтуерни компании са категорични, че Open Inventor разполага с един изключително удобен интерфейс.
Библиотеката е ориентирана към работа с обекти описващи определени пространствени фигури и техни свойства или обекти задаващи определен вид релации между същите пространствени фигури. Тези обектит биват организирани в една дървовидна структутра която се нарича граф-сцена. Граф-сцената е носител на пълната информация за това какво и как би трябвало да бъде начертано на екрана, а поддръжката и е основната задача на програмиста използващ Open Inventor.
Освен логически и в програмен вид граф-сцената може да бъде представена и по друг начин – разработчиците на Open Inventor са измислили и създали стандартен файлов формат за описване и съхраняване на граф сцената и нейните обекти. Това спомага за по лесното прехвърляне на елементи от една сцена в друга и позволява приемсвеност на сцената. Нещо повече: тази особеност предоставя възможността при изграждането на дадена програма да се използват освен възможностите на програмния език и тези на файловия формат, което понякога улеснява много процеса на разработка.
Съдържание на библиотека
Open Inventor разполага с широк набор от обекти, съответстващи на готови пространствени фигури (конуси, сфери, цилиндри и т.н.) които директно могат да бъда включени в граф сцената. Също така са предоставени голям набор от обекти и инструменти чрез които могат да се манипулират свойствата на тези пространствени фигури (цвят, големина, местоположение). Това е изключително удобно и спестява време на програмиста, позволявайки му лесно да се справя с геометричните и цветови параметри на фигурите.
Важен аспект в библиотеката е нивото на интерактивност, която тя предлага. Open Inventor разполага с механизми чрез които може да се дефинира как потребителят директно или индиректно да влияе върху граф-сцената. На първо място това се осъществява благодарение на събитийния модел на библиотеката. Open Inventor превежда събитията от клавиатурата и от мишката, преобразува ги в свои вътрешни съобщения и ги изпраща в граф-сцената, така че ако събитието е предназначено а определено листо в това дърво да се случи зададено действие. Събития може и да се генерират чрез обекти наречени сензори, като програмиста може да зададе какви са последствията от тези събития. Накрая чрез обекти от тип драгери, потребителят може директно да влияе върху текущата сцена и да променя свойствата на пространствените обекти.
Друг важен аспект в библиотеката е анимирането. То се постига най-често чрез един спецялен сензор, който изпълнява дадено действие през определен интервал от време. Така през тези интервали от време програмиста може да променя свойствата на обектите или структурата на граф-сцената, при което се получава анимация. Много полезни тук се явяват обектите от тип преобразуватели (engines). Те позволяват задаването на определен вид релации между свойствата на елементи от граф-сцената. Това означава че при промяна на едно свойство ще се изменят автоматично всички свързани с него, което при анимиранието е изключително удобно.
Open Inventor притежава още много допълнителни екстри като подръжка на пространствен звук, механизми за откриване на колизии на геометрични обекти, класове за четене и писане на VRML файлове, четене и писане на DXF файлове посредством библиотеката DIME, както и пълна колекция от класове отговарящи на някой геометрични обекти (вектори, матрици, кватерньони и т.н.) и обекти за работа с изображения.
Заедно с повечето реализации на Open Inventor върви стандартен пакет от класове осигуряващи графичен интерфейс. Този пакет включва и “слоя” между операционната система и самата библиотека. За различните операционни системи има различни пакети (SoWin, SoXt, SoQt). Важно е да се отбележи, че тези пакети могат да се разширяват и модифицират.

Extensible Markup Language (XML)

Що е XML?
XML е език, който набира все по-голяма и по-голяма популярност. Езикът е оригинално разработен от W3C за да се използва за електронни публикации, но в последствие се превръща в стандартен формат за прехвърляне на различни видове информация както в интернет така и навсякъде другаде.
Една от особеностите на XML се състои в това, че той не представлява език с фиксиран формат какъвто е например HTML. Вместо това XML представлява по скоро метаезик – език за описание на други езици , който позволява изграждането на други фиксирани маркерни езици за неограничен брой типове документи.
Основна структура
Силата на XML се дължи на факта, че той предоставя проста и удобна йерархична организация на данните. Тази организация на данните всъщност образува една логическа дървовидна структура. Основна единица в тази струтура е маркерът. Маркер представлява консрукция заградена от “остри” скоби или казано по друг начин знаците по-малко и по-голямо < >. Между тези два знака се разполага името на маркера, изреждат се атрибутите му (ако има такива) и стойностите им.
Съществуват 3 основни типа маркери:
• Отварящ маркер

• Затварящ маркер

• Празен маркер

Тук с tagName бележим името на маркера, с attributeN n-тия по ред атрибут, с argN низът който ще приеме n-тия атрибут.
Редно е да се отблежи, че на всеки отварящ маркер съответства затварящ със същото име. Затварящият маркер няма атрибути. Йерархичността се проявява в това, че всички маркери между един отварящ и един затварящ маркер се водят за нагови наследници в съответстващата дървовидна структура. Празният маркер съчетава в себе си едновременно отварящ и затварящ маркер, така че той винаги отговаря на листо в съответстващата дървовидна структура.

Модификация

В текущата разработка авторът е съставил описателен структурен език, който описва химически обекти и реакции, като езикът е базиран на синтаксиса на XML. Разбира се за целите на разработката много от възможностите на XML се явяват излишни (именувани пространства, CDATA секции, коментари и т.н.). Съответно те не са включени в езика описващ химически обекти и ако бъдат използвани приложената програма няма да успее да ги прочете адекватно. Езикът обаче запазва основните структурни единици за съхраняване на информация дефинирани от XML – маркерите и атрибутите.
Цели, възможности и реализация

Цели на проекта

Едната цел която си е поставил авторът на текущата разаботка е съставянето на описателно-структурен език, който да описва определени химически обекти и процеси. Другата цел е създаването на програма интерпретатор, която служи за четене и визуализиране на документите описани с езика в една пространствена среда, така че споменатите обекти и процеси да бъдат онагледени по един достъпен, удобен и ефективен начин.
За да бъде езикът по-лесен и по-достъпен той е базиран на XML и използва основните му възможности. Анимацията в съставения език е направена по модел на анимацията описана от стандарта SMIL. SMIL представлява спецялен XML език който служи за описването на декларативна анимация.
За пространствената визуализация на обектите е използвана библиотеката Open Inventor. Авторът е избрал тази библиотека по ред причини свързани с удобния и интерфейс, богатите и възможности и многото платформи които я поддържат. Към реферата е приложено пълно описание на елементите на езика.

Възможности

Езикът включва декларирането на атоми и на химични връзки. Тук трябва непременно да се отбележи, че молекулите се задават индиректно. Иначе казано – два атома са в една молекула ако са свързани един с друг или с други атоми които са в една молекула.
Езикът позволява един файл да зарежда съдържанието на друг чрез маркера frame. По този начин информацията съхранена в документ за атоми, атомни групи или молекули може да се използва многократно във нови документи само с декларацията на един маркер. По този начин може да се изгради цялостна химична база данни с атоми, молекули и групи, чрез която да се формират лесно нови документи. За да се осигури правилното позициониране в пространството е включена възможността за пространствено модулиране на координатите – метод чрез който координатите на групи от атоми или молекули се трансформират чрез система от зададени ротации и транслации.
Включена е и поддръжка на анимация от декларативен тип. Това означава че на анимацията се задава кога започва, колко трае, повтаря ли се, през какъв интервал се повтаря. Има механизъм по който може да се зададе анимацията да се повтаря непрекъснато или само определен брой пъти. Анимациите са два типа – ротации и транслации, като на всяко едно преобразувание се задава върху кои атоми и молекули ще има въздействие.
Методът по който се описват химическите реакции в езика е също декларативен – те се описват по сходен начин като анимациите. Отново тряба да се уточни кога ще се случат, дали ще се повтарят и през колко време. Валидността на реакциите автоматично се следи и коригира в зависимост от валентноста на атомите които участват.
Чрез анимациите и реакциите се визуализират и илюстрират успешно най-разнообразни химически процеси.
Езикът подържа два режима на текст за удобство. Единият е по-плътен и по четлив, но за сметка на това при опит на потребителя да промени текущия режим на камерата, текстът ще се вижда под различни ъгли, което понякога е неудобно. За това е прибавена и възможността за употреба на по-ситен текст, който остава четлив независимо как се върти камерата.
Като възможност езикът предвижда поставянето на хипервръзки от един документ към друг, посредством текст. По този начин може да се организира цялостна химическа презентация организирана от взаимно свързани документи.

Реализация

За създаването на програмата интерпретатор, авторът е разделил работата си на две основни части. Първата част е свързана с анализа на документите написани според езика и представянето им по подходящ начин. Втората част е свързана с тълкуването и изпълнението на горепосочения анализ.
За да отговори на изискванията на първата част, авторът е написал свой текстови анализиращ модул. Този модул представлява опростен XML парсер (чете само маркери и атрибути), който построява дървовидна структура от данни в паметта на компютъра в зависимост от йерархичната подредба на документа.
Тази йерархична структура се подава в последствие на тълкуващия модул, който на нейна база изгражда всичките пространствени обекти зададени в документа, като построява подходяща граф-сцена на Open Inventor. Всички тези процеси се извършват преди началото на визуализацията.
Веднъж създадена, граф-сцената се изчертава с помоща на Open Inventor. Граф-сцената се изчиства само при зареждането на нов документ или при презареждането на текущия.
Анимацията е реализирана чрез класа SoTimeSensor на Open Inventor. Този клас кара спецялно зададена фукция да се вика през малък интервал (25 милисекунди) от време. При всяко извикване на тази функция се правят необходимите промени в граф-сцената за да се осъществи анимацията.
Друг важен елемент за анимирането са преобразувателите – друг тип класове в Open Inventor. Благодарение на тях при промяна в координатите на един атом се сменят положенията на всичките му химически връзки.
Активирането на хипервръзките се осъществява чрез класа SoSelection. Този клас предоставя възможност за обработване на събитията когато потребителя щракне с левия бтон върху текст с хипервръзка.

Изпозвани инструменти

За създаването на програмата, авторът е използвал езика за програмиране C++, поради редица негови качества които го правят мощно средство за разработване на приложения. Програмата е компилирана с Microsoft Visual C 6.0 Introductory Edition под Windows XP. За пространствената графика е използвана графичната библиотека Coin на компанията SIM, която е една от реализациите на библиотеката Open Inventor достъпна под лиценза GNU GPL. Използвана е също библиотеката SoWin, която осигурява графичен интерфейс за Open Inventor под Windows.
Авторът разполага и с версия на програмата компилирана и работеща под Linux, тъй като почти целия изходен код на програмата е преносим между Linux и Windows.

Спецификация на езика

В езикът съществуват следните имена на маркери
• cml
• atom
• wconn
• conn
• text
• trans
• rot
• vis
• react
• frame
• dtransf
Следва описание на действието на всеки един маркер, както и информация за атрибутите им.
cml
Това е основният маркер в езика. Той трябва да е разположен на най-високото ниво и да съдържа в себе си всички останали маркери. Не притежава атрибути.
atom
Това е основната градивна единица в езика. Маркерите от този тип описват атоми. Този тип маркер е снабден с множество атрибути които описват химическите и пространствените свойства на обекта
Описание на атрибутите:
label
Приема низ форматиран по следния начин: “ string “, където string е уникален низ идентифициращ атома. Този низ се използва в други маркери определящи химически взаимоотношения и анимация.
Ако атрибутът отсъства ще бъде зададен низ от вида “AtomN” където N е най-малкото неизползвано за идентификация число досега
coord
Приема низ форматиран по следния начин: “ x y z “, където x, y и z са съответно реалните пространствени координати които атомът трябва да заеме. И трите числа са десетични дроби. Не трябва да се употребява в комбинация с offset.
offset
Приема низ форматиран по следния начин: “ x y z “, където x, y и z са съответно координати на отместване от позицията на последния дефиниран атом. И трите числа са десетични дроби. Не трябва да се употребява в комбинация с coord.
Ако нито един от атрибутите coord и offset не присъства, атомът се разполага на координати 0, 0, 0.
color
Приема низ форматиран по следния начин: “ r g b ”, където r, g и b отговарят на червената, зелената и синята компонента на цвета с който ще бъде изчертан атома. И трите числа представляват десетични дроби в диапазон от 0 до 1, като с нарастването на стойността се увеличава наситеността на дадения цвят.
Ако атрибутът не присъства, атомът се изчертава по подразбиране с цветова комбинация 0.8, 0.8, 0.8 (светло сиво).
rad
Приема низ форматиран по следния начин: “ r “, където r е положително дробно число бележещо дължината на радиуса, с който ще бъде изчертан атома.
По подразбиране атомите са с радиус 1.
vis
Приема низ “ true “ или низ “ false “. Определя дали атомът ще бъде видим. По подразбиране атомите са видими.
val
Приема низ форматиран по следния начин: ” v “, където v е цяло, неотрицателно число по-малко или равно на 7. Задава химическата валентност на атома. Ако атрибутът отсъства, атомът е по подразбиране от нулева валентност.
text
Приема низ форматиран по следния начин: “ string “, където string отговаря на низ с най-много два символа, който ще бъде изписан пред съптветния атом. Предвиден е за задаване на името на химическия елемент от който е атома (Na, K, Ca, S …). Ако атрибутът отсъства никакъв текст няма да бъде изписан.
wconn
Този маркер описва слаба химична връзка между два атома. Атрибутите му са свързани с характера на химическата връзка.
Между два конкретни атома може да съществува само една слаба връзка. Ако се срещне маркер описващ слаба връзка между два атома между които такава вече съществува, то този маркер ще бъде игнориран.
Описание на атрибутите:
atom1
Приема низ форматиран по следния начин: “ string “, където string отговаря на идентификацинен низ на атом. Задава първия атом, който участва в слабата химична връзка. Ако низът е невалиден (не идентифицира атом) или атрибутът не бъде зададен, то маркерът ще е невалиден (няма да се вземе предвид).
atom2
Идентичен е с Atom1. Задава втория атом, който участва в слабата химична връзка. Ако вторият атом е идентичен със първия, то маркерът е невалиден.
conn
Този маркер описва силна химична връзка между два атома. Атрибутите му са свързани с характера на химическата връзка. По атрибути прилича много на слабата връзка с тази разлика че може да се зададе от каква степен е връзката (единична, двойна, тройна).
Между два конкретни атома може да съществува само една силна връзка. Ако се срещне маркер описващ силна връзка между два атома между които такава вече съществува, то този маркер ще бъде игнориран.
Описание на атрибутите:
atom1
Приема низ форматиран по следния начин: “ string “, където string отговаря на идентификацинен низ на атом. Задава първия атом, който участва в силната химична връзка. Ако низът е невалиден (не идентифицира атом) или атрибутът не бъде зададен ,то маркерът ще е невалиден (няма да се вземе предвид).
atom2
Идентичен е с Atom1. Задава втория атом, който участва в силната химична връзка. Ако вторият атом е идентичен с първия, то маркерът е невалиден.
deg
Приема низ форматиран по следния начин: “ d “, където d е цяло положително число по-малко или равно на 7, което задава степента на химичната връзка. При положение че се зададе връзка която не съответства на валентностите на двата атома, то нейната степен ще се понижи до подходяща стойност (при положение че стане нула маркерът ще бъде игнориран).
Ако не бъде зададен то химичната връзка е от първа степен по подразбиране.
text
Маркерът описва текст, който ще бъде поставен в пространството. Чрез този маркер може да се дава информация за такущата сцена или да се дефинира хипервръзка. Атрибутите му описват форматирането и изчертаването на текста.
Описание на атрибутите:
text
Приема низ форматиран по следния начин: “ row1 | row2 | … | rowN “, където с rowN се бележи изречението на N-тия ред, a символът ‘|’ бележи край на ред. Поставя текст на няколко реда, разполагайки редовете един под друг.
Ако атрибутът не бъде зададен, то няма да бъде изписан какъвто и да било текст.
coord
Приема низ форматиран по следния начин: “ x y z “, където x, y и z са съответно реалните пространствени координати на горния ляв ъгъл на първия ред. И трите числа са десетични дроби.
Ако атрибутът не бъде зададен, то горния ляв ъгъл се разполага на координати 0, 0, 0 по подразбиране.
color
Приема низ форматиран по следния начин: “ r g b ”, където r, g и b отговарят на червената, зелената и синята компонента на цвета с който ще бъде изчертан текста. И трите числа представляват десетични дроби в диапазон от 0 до 1, като с нарастването на стойността се увеличава наситеността на дадения цвят.
Ако атрибутът не присъства, атомът се изчертава по подразбиране с цветова комбинация 1, 1, 1 (бяло).
type
Приема низ “ 2D ” или “ 3D “. Определя типа на изчертаване на текста.
Ако типа е “ 2D ”, текстът ще бъде изчертан с малък, тесен шрифт. Освен това текстът ще запази координатите на горния ляв ъгъл, но винаги ще бъде водоравен, независимо как бива променяна сцената и обектите в нея или как бива местена камерата в пространсвото. По този начин текстът е удобен за четене от всякакви ъгли.
Ако типа е “ 3D ”, текстът ще бъде изчертан с плътен шрифт. Текстът ще запази координатите на горния ляв ъгъл, но винаги ще бъде деформиран, при местене на камерата в пространсвото. Този текст е по удобен за употреба когато сцената не се разглежда много от различни ъгли.
По подразбиране текстът е от първия вид.
link
Приема низ форматиран по следния начин: “ fullFilePath “, където fullFilePath е низ съдържащ пълния път, името и разширението на даден файл. Атрибутът служи за създаване на хипервръзка към този файл. Това означава че ако в интерактивния режим на приложението се кликне върху текста ще бъде зареден съотвтния файл (при положение че той съществува).
trans
Този маркер задава анимация чрез транслиране на един или повече атома или молекули. Анимацията е декларативна. Атрибутите са свързани с нагласянето на параметрите на анимацията.
Описание на атрибутите:
atoms
Приема низ форматиран по следния начин: “ string1 string2 string3 … stringN“, където stringN е низът идентифициращ N-тия атом. Този атрибут указва кои атоми ще бъдат трансформирани чрез анимацията. Взимат се само атоми чиито идентификационни низове са правилни.
mols
Приема низ форматиран по следния начин: “ string1 string2 string3 … stringN“, където stringN е низът идентифициращ N-тия атом. Този атрибут е почти идентичен с миналия. Разликата е че тук в анимацията се включват не само атомите отговарящи на идентификационните низове, но и атомите с които те са свързани в молекули.
Пример: Нека имаме атом и идентификационен низ Atom1, който участва в молекула с 5 други атома. Тогава като подадем на този атрибут “ Atom1 “ той ще включи в списъка на елементи на анимацията всичките 6 атома.
beg
Приема низ форматиран по следния начин: “ b “, където b е неотрицателна десетична дроб, която определя колко секунди да изминат преди началото на анимацията.
Ако не бъде зададен атрибутът, тази стойност е 0 по подразбиране (анимацията започва веднага).
dur
Приема низ форматиран по следния начин: “ d “, където d е положителна десетична дроб, която определя колко секунди да трае самата анимация.
Ако не бъде зададен атрибутът, тази стойност е 1 по подразбиране.
over
Приема низ форматиран по следния начин: “ o “, където o е неотрицателна десетична дроб, която определя колко секунди да изминат преди анимацията да бъде повторена.
Ако не бъде зададен атрибутът, тази стойност е 0 по подразбиране (анимацията започва веднага отново след като е приключила).
rep
Може да приеме низ “ inf “ или низ форматиран по следния начин: “ r “, където r е цяло неотрицателно число.
В първия случай анимацията ще се повтаря непрекъснато след завършване. Иначе анимацията ще се повтори r на брой пъти преди да спре.
По подразбиране анимацията не се повтаря.
vect
Приема низ форматиран по следния начин: “ x y z “, където x, y и z са десетични дроби, определящи вектора чрез който ще се транслират атомите върху които се извършва анимацията.
Ако не се зададе вектор то ще му бъде дадена стойност 0, 0, 0 по подразбиране, което ознчава че няма да има анимация.
rot
Този маркер задава анимация чрез ротация на един или повече атома или молекули. Анимацията е декларативна. Атрибутите са свързани с нагласянето на параметрите на анимацията. Повечето от тях са идентични с тези на предишната анимация.
Описание на атрибутите:
atoms
Приема низ форматиран по следния начин: “ string1 string2 string3 … stringN“, където stringN е низът идентифициращ N-тия атом. Този атрибут указва кои атоми ще бъдат трансформирани чрез анимацията. Взимат се само атоми чиито идентификационни низове са правилни.
mols
Приема низ форматиран по следния начин: “ string1 string2 string3 … stringN“, където stringN е низът идентифициращ N-тия атом. Този атрибут е почти идентичен с миналия. Разликата е че тук в анимацията се включват не само атомите отговарящи на идентификационните низове, но и атомите с които те са свързани в молекули.
Пример: Нека имаме атом и идентификационен низ Atom1, който участва в молекула с 5 други атома. Тогава като подадем на този атрибут “ Atom1 “ той ще включи в списъка на елементи на анимацията всичките 6 атома.
beg
Приема низ форматиран по следния начин: “ b “, където b е неотрицателна десетична дроб, която определя колко секунди да изминат преди началото на анимацията.
Ако не бъде зададен атрибута, тази стойност е 0 по подразбиране (анимацията започва веднага).
dur
Приема низ форматиран по следния начин: “ d “, където d е положителна десетична дроб, която определя колко секунди да трае самата анимация.
Ако не бъде зададен атрибута, тази стойност е 1 по подразбиране.
over
Приема низ форматиран по следния начин: “ o “, където o е неотрицателна десетична дроб, която определя колко секунди да изминат преди анимацията да бъде повторена.
Ако не бъде зададен атрибута, тази стойност е 0 по подразбиране (анимацията започва веднага отново след като е приключила).
rep
Може да приеме низ “ inf “ или низ форматиран по следния начин: “ r “, където r е цяло неотрицателно число.
В първия случай анимацията ще се повтаря непрекъснато след завършване. Иначе анимацията ще се повтори r на брой пъти преди да спре.
По подразбиране анимацията не се повтаря.
from
Приема низ форматиран по следния начин: “ x y z “, където x, y и z са десетични дроби, определящи началата точка на вектора около който ще се ротират атомите върху които се извършва анимацията.
Ако не се зададе вектор то ще му бъде дадена стойност 0, 0, 0.
to
Приема низ форматиран по следния начин: “ x y z “, където x, y и z са десетични дроби, определящи крайната точка на вектора около който ще се ротират атомите върху които се извършва анимацията.
Ако не се зададе вектор то ще му бъде дадена стойност 1, 0, 0.
angle
Приема низ форматиран по следния начин: “ a “, където a е дестична дроб, определяща ъгъла с който ще се ротират атомите върху които се извършва анимацията
Ако не се зададе атрибутът, по подразбиране ъгълът е 0 (няма анимация).

vis
Маркерът показва или скрива даден елемент през определено време. Тъй като е обвързан с времето за него също може да се мисли като за анимация с присъщите за нея атрибути.
Описание на атрибутите:
atom
Приема низ форматиран по следния начин: “ string “, където string е идентификационен низ на атом. Този атрибут указва върху кой атом ще има ефект действието. Ако атрибутът не присъства, от маркера няма да има ефект.
beg
Приема низ форматиран по следния начин: “ b “, където b е неотрицателна десетична дроб, която определя колко секунди да изминат преди началото на действието.
Ако не бъде зададен атрибутът, тази стойност е 0 по подразбиране (действието започва веднага).
over
Приема низ форматиран по следния начин: “ o “, където o е неотрицателна десетична дроб, която определя колко секунди да изминат преди действието да бъде повторена.
Ако не бъде зададен атрибутът, тази стойност е 1 по подразбиране.
rep
Може да приеме низ “ inf “ или низ форматиран по следния начин: “ r “, където r е цяло неотрицателно число.
В първия случай действието ще се повтаря непрекъснато след завършване. Иначе действието ще се повтори r на брой пъти преди да спре.
По подразбиране действието не се повтаря.
vis
Приема низ “ true “ или “ false “. Определя дали действието ще показва или скрива атома. По подразбиране действието показва атома.
react
Маркерът задава реакция между два атома. Казано по друг начин този маркер променя, добавя или унищожава силна или слаба химична връзка между два атома. Тъй като е обвързан с времето за него също може да се мисли като за анимация с присъщите за нея атрибути.
Описание на атрибутите:

аtom1
Приема низ форматиран по следния начин: “ string “, където string е идентификационен низ на атом. Този атрибут указва единия атом върху който атом ще има ефект действието. Ако атрибутът не присъства, от маркера няма да има ефект.
atom2
Същия като atom1, но определя втория атом.
Ако двата атома са еднакви маркера няма ефект.
beg
Приема низ форматиран по следния начин: “ b “, където b е неотрицателна десетична дроб, която определя колко секунди да изминат преди началото на действието.
Ако не бъде зададен атрибутът, тази стойност е 0 по подразбиране (действието започва веднага).
over
Приема низ форматиран по следния начин: “ o “, където o е неотрицателна десетична дроб, която определя колко секунди да изминат преди действието да бъде повторена.
Ако не бъде зададен атрибутът, тази стойност е 1 по подразбиран..
rep
Може да приеме низ “ inf “ или низ форматиран по следния начин: “ r “, където r е цяло неотрицателно число.
В първия случай действието ще се повтаря непрекъснато след завършване. Иначе действието ще се повтори r на брой пъти преди да спре.
По подразбиране действието не се повтаря.
weak
Приема низ “true” или “false”. Задава дали действието е свързано с промяната на слаба връзка. В противен случай действието е свързано с промяната на силна връзка.
По подразбиране връзката не е слаба.
deg
Приема низ форматиран по следния начин: “ d “, където d е цяло неотрицателно число по-малко или равно на 7, което задава степента на химичната връзка. При положение че се зададе връзка която не съответства на валентностите на двата атома, то нейната степен ще се понижи до подходяща стойност (при положение че е нула химичната връзката се разрушава).
Ако не бъде зададен то химичната връзка е от първа степен по подразбиране.

frame
Маркерът служи за зареждае на документ в документа. Например ако съществува файл с готов модел на някоя молекула, тази молекула може да се зареди от друг файл с помощта на този маркер като се окаже пътят към първия. Маркерът има един единствен атрибут задаващ пътя към файл.
Всички идентификационни имена на атоми във включените файлове се променят по следния начин – от AtomLabel на М_AtomLabel, където M номера на файла по реда на включването му.
Описание на атрибутите:
link
Приема низ форматиран по следния начин: “ fullFilePath “, където fullFilePath е низ съдържащ пълния път, името и разширението на даден файл. Атрибутът служи за зареждане на съдържанието на указания файл в дадения. (За да се избегне зацикляне ако сочения файл притежава маркери frame, те не се разглеждат).

dtransf
Маркерът изменя координатите на всички атоми които са му наследници в йерархията. Трасформациите които извършва са ротации и транслации. Тези маркери могат да се вписват един в друг при което ефекта им се натрупва.
Описание на атрибутите:
type
Приема низ “rot” или “trans”. Съответно това определя дали маркерът ще извършва транслация или ротация.
vect
Приема низ форматиран по следния начин: “ x y z “, където x, y и z са десетични дроби, определящи вектор с който се транслират атомите ако става дума за транслация.
from
Приема низ форматиран по следния начин: “ x y z “, където x, y и z са десетични дроби, определящи началата точка на вектора около който ще се ротират атомите ако става дума за ротация.
Ако не се зададе вектор то ще му бъде дадена стойност 0, 0, 0.
to
Приема низ форматиран по следния начин: “ x y z “, където x, y и z са десетични дроби, определящи крайната точка на вектора около който ще се ротират атомите ако става дума за ротация.
Ако не се зададе вектор то ще му бъде дадена стойност 1, 0, 0.
angle
Само при ротация. Задава ъгъла на ротиране.
Заключение
В представеният проект авторът е разработил синтаксис на XML базиран описателно-интерпретативен скриптов език за представяне на атоми и молекули и е приложил интерпретатор за самото му изпълнение. Езикът е много удобен като помощно средство за някой презентации и демонстрации в областа на химията. Синтаксисът не е труден за писане и може лесно да се използва от всеки запознат със спецификациите му. Самото представяне на атоми, молекули и текст и реализирането на анимция е извършено в триизмерното пространство, като за целта е използвана графичата библиотеката Open Inventor

Автор: Васил Веселинов Люцканов, СМГ, 12 клас

Етикети: , , ,

Този материал съдържа 5,319 думи.
Ако ще ти свърши работа, може да помогнеш на друг, като качиш нещо твое :)

Остави коментар по "Реферат – Език за предоставяне на химически съединения в пространството"