Цитата |
---|
Конечно, будет хорошо если будет реализован приведённый выше алгоритм (по сложности эквивалентный целому САПР), но думаю к тому времени все чертежи уже будут вручную переведены в электронный вид вручную. А те, что не переведут не будут переводить вообще, т.к. они устареют морально и потеряют совою актуальность. |
Думаю, что АЛГОРИТМ не особенно сложный. Японцы, чтобы заставить своих роботов делать то, что они уже делают, придумали что-то намного сложнее. Это мы отстаём.
Для пункта 10 этого АЛГОРИТМА можно что-то использовать из автоматического анализа формул редактора "Айсберг" (см.далее) ->
В редакторе "Айсберг" текст вновь введённой формулы понимается как линейная структура, состоящая из узлов и связей.
К типу "связи" отнесены следующие символы:
знак сложения "+",
знак вычитания "-",
знак умножения "*",
знак деления "/",
знак возведения в степень "^",
открытая круглая скобка "(",
закрытая круглая скобка ")".
"Связью" называется любой из этих семи символов, либо группа таких символов. Все остальные символы, или группы символов, стоящие между связями, называются "узлом". На первом шаге алгоритма текст формулы дробится на список строк. Каждая нечётная строка такого списка это узел, каждая чётная строка – связь. В том случае, когда в начале формулы стоят скобки или знак "-", на нечётных строках располагаются связи, а на чётных узлы.
На втором шаге алгоритма анализируются строки типа "связи". Для этого введены дополнительные понятия – "действие" и "нормальная пара символов". В редакторе "Айсберг" действием называется любой из следующих пяти символов: "+", "-", "*", "/", "^".
К нормальным парам символов относятся следующие варианты:
две открытых скобки "((",
две закрытых скобки "))",
действие и открытая скобка "Д(",
закрытая скобка и действие ")Д",
открытая скобка и знак минус "(-".
Группы символов "связи" анализируются попарно, при этом исключаются все "ненормальные" пары символов. Одиночные символы – "связи" не обрабатываются.
На третьем шаге алгоритма анализируются строки типа "узлы". Тип "узлы" включает в себя три подтипа: "функции", "переменные", "числа".
Подтип "функции" - это узлы, стоящие перед открытой скобкой и содержащие обозначение типовой функции.
В редакторе "Айсберг" используются следующие типовые функции:
тригонометрические – синус "Sin", косинус – "Cos", тангенс – "Tan", обратные тригонометрические с приставкой "Arc…", тригонометрические с аргументом в градусах с добавкой "…D" (degrees),
функции работы со степенями: корень квадратный "Sqrt", натуральный логарифм "Ln", десятичный логарифм "Log",
абсолютное значение "Abs".
Подтип "переменные" это узлы, содержащие обозначения типовых переменных числа π – "pi" и числа E – "e", а также обозначения дополнительных переменных, введённых в расчёт пользователем, например "Nmax", "d1", "Dвала2"…
Все узлы, которые не классифицированы как "функции" или как "переменные" относятся к подтипу "числа".
Поиск ведётся в следующем порядке: "функции", "переменные", "числа".
Ну и т.д.... Не буду утомлять описанием следующих шагов.