![]() |
|
|
![]()
|
|
| newgigabyte |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 10.1.2008 Репутация: нет Всего: 2 |
Нужно нарисовать мат формулу.(как минимум нужно рисовать придел интеграл и степень)
что можете посоветовать по данному вопросу... сам подумал и понял что нужно строить дерево синтаксического разбора.может можно обойтись без него??? --------------------
|
|||
|
||||
| nworm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 4 Всего: 8 |
Что значит "нарисовать формулу"? Пример можно?
|
|||
|
||||
| esperanto |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 31.5.2003 Репутация: 2 Всего: 4 |
да. --------------------
B.Sc ->M.Sc.->Microsoft SDE-> (Ph.D. student + Intel SDE + psyсhology B.A) - > Skype SDET |
|||
|
||||
| newgigabyte |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 10.1.2008 Репутация: нет Всего: 2 |
т.е. есть какая-то математическая формула(например интеграл будет записан так: int(f(x),x=0..infinity) )
надо нарисовать картинку с этой формулой(где интеграл будет нормально нарисован) Это сообщение отредактировал(а) newgigabyte - 8.2.2009, 12:14 --------------------
|
|||
|
||||
| nworm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 4 Всего: 8 |
Тогда можно LaTeX смотреть.
|
|||
|
||||
| AVA12 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 4.5.2008 Репутация: 1 Всего: 4 |
Не совсем понятно, в чем именно заключается проблема:
- нужно придумать язык описания формул (для людей); - нужно придумать представление формул (для программы); - есть язык и представление, нужно придумать транслятор первого во второе; - есть представление формул, нужно придумать алгоритм отрисовки; - ничего нету, нужно придумать все. |
|||
|
||||
| newgigabyte |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 10.1.2008 Репутация: нет Всего: 2 |
Нужно придумать алгоритм отрисовки
--------------------
|
|||
|
||||
| AVA12 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 4.5.2008 Репутация: 1 Всего: 4 |
Краткое руководство, буквально в двух словах :)
Изображение формулы состоит из одного или нескольких прямоугольных блоков. Каждый из них можно сгенерировать отдельно, а затем состыковать с другими. Блоки могут быть простыми (строка текста или отдельный графический элемент) или составными (содержат один или несколько вложенных блоков). Пример:
Формула 1) содержит один простой текстовый блок. Формула 2) состоит из трех блоков ("y = x", показатель степени, " + 1"); показатель степени вынесен в отдельный блок, поскольку он выбивается из ряда. Показатель является составным блоком (содержащим простой текстовый блок "2"). Формула 3) состоит из двух блоков - простого("y = ") и составного (дробь); дробь состоит из трех простых блоков (числитель, черта, знаменатель). При отрисовке блоков, расположенных горизонтально, необходимо правильно выравнивать блоки по вертикали. Простое выравнивание по середине (аналог vertical-align: middle в CSS) использовать нельзя, некоторые типы блоков (индексы, степени, "многоэтажные" дроби) будут выровнены неверно. Поэтому для каждого блока необходимо помнить положение его центральной линии (для индекса линия может быть выше, для степени - ниже самого блока, для дроби линия проходит по черте). Блоки состыковываются так, чтобы центральные линии всех блоков лежали на одной прямой. Простые типы блоков: - текст: обычный текст, имена функций, математические символы; центральная линия проходит по середине строки; - курсив: то же, что и текст, но отображается курсивным шрифтом (имя переменной); - рисунок: отдельный графический элемент; центральная линия не используется. Составные типы блоков: Строка: один или несколько дочерних блоков, расположенных по горизонтали. Границей блока считается обрамляющий прямоугольник состыкованных дочерних блоков (то же верно и для других составных типов). Центральная линия совпадает с центральной линией дочерних блоков. Индекс. Отображается мелким шрифтом. Перед обработкой индекса программа запоминает текущий размер шрифта и устанавливает мелкий шрифт, после обработки размер шрифта восстанавливается. Обработка сходна с обработкой строки, но центральная линия индекса будет выше центральной линии дочерних блоков. Показатель степени. То же, что индекс, но центральная линия ниже центральной линии дочерних блоков. Дробь. Генерируются числитель и знаменатель, определяется максимальная ширина, ширина черты чуть больше. Числитель и знаменатель пристыковываются к черте сверху и снизу и выравниваются по центру. Центральная линия проходит по черте. Корень. Состоит из трех или четырех блоков: показатель степени (если есть), знак корня, черта и подкоренное выражение. Сперва генерируется выражение, к нему пристыковываются черта и знак корня (соответствующих размеров), размещается показатель степени. Центральная линия совпадает с центральной линией подкоренного выражения. Интеграл, сумма, произведение: крупный символ, к которому пристыкованы индексы. Центральная линия совпадает с центральной линией символа. И т. п. Каждому типу блока соответствует отдельная функция обработки. Функция получает на вход содержимое блока (текст, картинка или список дочерних блоков), возвращает размеры итогового построения и смещение центральной линии от верхней или нижней границы блока. Также, в зависимости от способа отрисовки, функция может возвращать готовое изображение блока, текст разметки, дерево вложенных блоков с указанием их размеров, расположения и содержания, и т. п. |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |