Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Печать формул 
:(
    Опции темы
newgigabyte
Дата 6.2.2009, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 10.1.2008

Репутация: нет
Всего: 2



Нужно нарисовать мат формулу.(как минимум нужно рисовать придел интеграл и степень)
что можете посоветовать по данному вопросу... 
сам подумал и понял что нужно строить дерево синтаксического разбора.может можно обойтись без него???
--------------------
PM MAIL   Вверх
nworm
Дата 6.2.2009, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



Что значит "нарисовать формулу"? Пример можно?
PM MAIL WWW   Вверх
esperanto
Дата 7.2.2009, 10:19 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 194
Регистрация: 31.5.2003

Репутация: 2
Всего: 4



Цитата(newgigabyte @ 6.2.2009,  20:29)
 может можно обойтись без него???

да.
--------------------
B.Sc ->M.Sc.->Microsoft SDE-> (Ph.D. student + Intel SDE + psyсhology B.A) - > Skype SDET
PM MAIL   Вверх
newgigabyte
Дата 7.2.2009, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 10.1.2008

Репутация: нет
Всего: 2



т.е. есть какая-то математическая формула(например интеграл будет записан так: int(f(x),x=0..infinity) )
надо нарисовать картинку с этой формулой(где интеграл будет нормально нарисован)

Это сообщение отредактировал(а) newgigabyte - 8.2.2009, 12:14
--------------------
PM MAIL   Вверх
nworm
Дата 8.2.2009, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



Тогда можно LaTeX смотреть. 
PM MAIL WWW   Вверх
AVA12
Дата 8.2.2009, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 4.5.2008

Репутация: 1
Всего: 4



Не совсем понятно, в чем именно заключается проблема:

 - нужно придумать язык описания формул (для людей);
 - нужно придумать представление формул (для программы);
 - есть язык и представление, нужно придумать транслятор первого во второе;
 - есть представление формул, нужно придумать алгоритм отрисовки;
 - ничего нету, нужно придумать все.
PM ICQ Jabber   Вверх
newgigabyte
Дата 8.2.2009, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 10.1.2008

Репутация: нет
Всего: 2



Нужно придумать алгоритм отрисовки
--------------------
PM MAIL   Вверх
AVA12
Дата 9.2.2009, 02:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 4.5.2008

Репутация: 1
Всего: 4



Краткое руководство, буквально в двух словах :)

Изображение формулы состоит из одного или нескольких прямоугольных блоков. Каждый из них можно сгенерировать отдельно, а затем состыковать с другими. Блоки могут быть простыми (строка текста или отдельный графический элемент) или составными (содержат один или несколько вложенных блоков). Пример:
Код
                      2               1
1) y = x + 1  2) y = x  + 1  3) y = -----
                                    x + 1

Формула 1) содержит один простой текстовый блок.
Формула 2) состоит из трех блоков ("y = x", показатель степени, " + 1"); показатель степени вынесен в отдельный блок, поскольку он выбивается из ряда. Показатель является составным блоком (содержащим простой текстовый блок "2").
Формула 3) состоит из двух блоков - простого("y = ") и составного (дробь); дробь состоит из трех простых блоков (числитель, черта, знаменатель).

При отрисовке блоков, расположенных горизонтально, необходимо правильно выравнивать блоки по вертикали. Простое выравнивание по середине (аналог vertical-align: middle в CSS) использовать нельзя, некоторые типы блоков (индексы, степени, "многоэтажные" дроби) будут выровнены неверно. Поэтому для каждого блока необходимо помнить положение его центральной линии (для индекса линия может быть выше, для степени - ниже самого блока, для дроби линия проходит по черте). Блоки состыковываются так, чтобы центральные линии всех блоков лежали на одной прямой.

Простые типы блоков:

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

Составные типы блоков:

Строка: один или несколько дочерних блоков, расположенных по горизонтали. Границей блока считается обрамляющий прямоугольник состыкованных дочерних блоков (то же верно и для других составных типов). Центральная линия совпадает с центральной линией дочерних блоков.

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

Показатель степени. То же, что индекс, но центральная линия ниже центральной линии дочерних блоков.

Дробь. Генерируются числитель и знаменатель, определяется максимальная ширина, ширина черты чуть больше. Числитель и знаменатель пристыковываются к черте сверху и снизу и выравниваются по центру. Центральная линия проходит по черте.

Корень. Состоит из трех или четырех блоков: показатель степени (если есть), знак корня, черта и подкоренное выражение. Сперва генерируется выражение, к нему пристыковываются черта и знак корня (соответствующих размеров), размещается показатель степени. Центральная линия совпадает с центральной линией подкоренного выражения.

Интеграл, сумма, произведение: крупный символ, к которому пристыкованы индексы. Центральная линия совпадает с центральной линией символа.

И т. п.

Каждому типу блока соответствует отдельная функция обработки. Функция получает на вход содержимое блока (текст, картинка или список дочерних блоков), возвращает размеры итогового построения и смещение центральной линии от верхней или нижней границы блока. Также, в зависимости от способа отрисовки, функция может возвращать готовое изображение блока, текст разметки, дерево вложенных блоков с указанием их размеров, расположения и содержания, и т. п.
PM ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0425 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.