Стереометрия для математиков
Уточню - для будущих математиков.
Речь идёт о некой программе, направленной на подготовку к ЕГЭ по части всяких геометрических построений, и помогающей зрительно представить чертёж, связанный с решением поставленного задания.
Задания по стереометрии берутся из туров ЕГЭ прошедших годов, а роль преподавателя состоит в том, чтобы построить самому, или помочь построить ученикам, соответствующий заданию чертёж в изометрии.
На втором этапе предлагается сделать на чертеже дополнительные построения и, тем самым, решить задачу. Разумеется, тому, кто не справится, можно предложить и решение - итоговый чертёж с поясняющим текстом.
Такая программа, как мне кажется, будет востребована, а по части красот программирования она оказалась весьма привлекательной для меня.
Поэтому я сообщаю, что заканчиваю публикацию статей по теме редактора для художественного рисования и открываю новый проект, с пространственной векторной графикой.
Этот проект к настоящему времени я уже достаточно продвинул, и пришло время писать статьи. С тем, чтобы, во-первых, не позабыть некоторые подробности, а, во-вторых, чтобы поделиться своим опытом с вами, уважаемые читатели.
ЧТО ИМЕЕТСЯ В ИНТЕРНЕТЕ
Программы, натаскивающие учеников к ЕГЭ, имеются в интернете. По части стереометрии интересен онлайн сервис под названием Лаборатория «Стереометрия» https://clck.ru/Ys7XD со своими собственными простенькими заданиями. Однако для серьёзной подготовки к ЕГЭ он не очень годится.
Разработчики сервиса, конечно, постарались, но влезть в него со стороны с тем, чтобы поставить свои собственные задачами – это непонятно как делать. Я же хочу сделать программу, удобную и в этом плане.
ИНТЕРФЕЙС
Вы видите на иллюстрации, что значительную часть интерфейса я позаимствовал из программы для художественного рисования. Работа с полями, чтение и запись картинки во внешние файлы, перемещение поля для рисования с помощью стрелочек – все эти удобства я сохранил в новом проекте. Сокращена палитра выбора цвета, но оставлены кнопочки темнения и светления тона. Ластик перекочевал в нижнюю часть левой панели.
На освободившуюся часть левой панели помещены кнопки управления векторной графикой, а ниже этих кнопок имеется панель инструментов, и кнопки выбора.
СТРУКТУРА ГРАФИКИ
Структуру графики я тоже заимствовал из программы для художественного рисования. Графические элементы, такие, как точки, прямые, отрезки, плоскости и сечения, представляются в форме строк из целых чисел.
К примеру, точка «К», которую вы видите нарисованной на чертеже, представляется строкой –
8> 1 3488 2587 0 0 0 0 3 0 20555 2326 5 8
1 здесь логотип точки,
3488, 2587, 0 – координаты X,Y,Zувеличенные в 10 раз,
3 – привязка к третьему отрезку, на котором точка находится, нужна ли эта привязка, я пока не решил.
2326 – цвет точки, 5 – её размер, 8 – её уникальный номер (1-255)
Число 20555 это буквенное обозначение точки. Число это содержит код символа, обозначающего латинскую букву, индекс 1-5 или ноль, как маленькая буква «о», следующие за латинской буквой, а также позицию – место расположения буквенного обозначения.
Позиция – это число от нуля до 15. Это то место, на котором будет напечатана буква (см. схему на иллюстрации).
ОФОРМЛЕНИЕ ЗАДАНИЯ
Задание, вместе с графической иллюстрацией к нему, может быть помещено в обычный текстовый файл. Выглядит этот файл, например, так –
Задание 1.
В правильной треугольной пирамиде SABC сторона основания AB равна 9, а боковое ребро SA=6. На рёбрах AB и SC отмечены точки K и M соответственно, причём AK : KB = SM : MC=2:7. Плоскость а содержит прямую KM и параллельна прямой SA.
а) Докажите, что плоскость а делит ребро SB в отношении 2 : 7, считая от вершины S.
б) Найдите расстояние между прямыми SA и KM.
X просмотр__ 1-точка 2-отрезок 3-прямая 4-плоскость 5-сечение N_строк= 8
_____ x= 100 y= 400 u= 30 k= 40
1> 2 -176 481 0 4245 -948 0 0 0 20546 2326 5 1
2> 2 3273 3596 0 -176 481 0 0 0 2115 2326 5 2
3> 2 4245 -948 0 3273 3596 0 0 0 12353 2326 5 3
4> 2 3273 3596 0 2448 1043 1549 0 0 4179 2326 5 4
5> 2 3488 2585 0 1864 917 1206 0 0 77 31008 5 5
6> 2 -176 481 0 2448 1043 1549 0 0 0 2326 5 6
7> 2 4245 -948 0 2448 1043 1549 0 0 0 2326 5 7
8> 1 3488 2587 0 0 0 0 3 0 20555 2326 5 8
Естественно, графическое приложение к заданию не делается вручную. Программа имеет средства для создания чертежа с помощью своих инструментов.
Цветовая идентификация графических элементов
В графической программе «Стереометрия для математиков» использована оригинальная система идентификации графических элементов. Цвет обычно представляется длинным числом, содержащим BGR компоненты. Каждая компонента это два байта – FF или 255 в десятичном виде. Старшие и младшие байты в компонентах неравноценны – собственно ощущение цвета заложено в старших байтах, младшие байты привносят в цвет совсем небольшую добавку.
А это значит, что младшие байты компонент могут использоваться совсем для других целей, а именно – для идентификации элементов. И даже не байт целиком, трёх бит будет вполне достаточно. Три бита от каждого компонента составят число 511. Итак, используя младшие биты цвета, можно каждому графическому элементу присвоить свой собственный индивидуальный номер.
Таким способом осуществляется идентификация элементов и может быть проведён их выбор. Пример на иллюстрации показывает, как это делается.
Мы кликаем правой кнопкой мыши по зелёной полосочке и видим, что это – отрезок, и этот отрезок имеет номер 23. Кликаем по красному контуру сечения, и видим, что номер этого элемента – 21.
Цветовой способ идентификации графических элементов хорошо зарекомендовал себя, оказался очень удобным во многих отношениях.
Тип заливки - Горизонтальная штриховка
Алгоритм быстрой заливки горизонтальными линиями http://proza.ru/2020/10/16/1478 может быть легко переделан в горизонтальную штриховку. Для этого вертикальные переходы между линиями заливки нужно делать не на соседние пиксели, а пропуская три, четыре или пять рядов пикселей.
Заливка делается внутри контура цвета Cb. Цвет заливки Ca отличается от цвета контура только наличием бита в четвёртом разряде. Расстояние между линиями штриховки регулируется параметром М. А он, в свою очередь, устанавливается по величине DWo - по размеру точки рисования.
Инструмент Создать точку
Когда векторный рисунок - стереометрическая модель, уже построен, то добавлять в него новые элементы нетрудно. Нужно только удлинять в нём прямые, соединять элементы между собой в нужных местах, привязывая к ним концы новых отрезков, и чертёж будет разрастаться как бы сам собой.
Однако, как я уже сказал, для этого нужна хоть какая-то начальная основа. Например, если в условии задания сказано «трёхгранная правильная призма», то она со всеми своими гранями и рёбрами должна быть уже нарисована. А если её нет?
Вот именно для этой цели – для начального черчения с чистого листа, мне и пришлось изобретать специальный инструмент. Инструмент этот получился весьма простым и эффективным. Собственно о том, как он работает, рассказывается на иллюстрации.
Если Вам придётся изобретать что-либо подобное, то можете использовать мой опыт. Главная проблема состояла в том, чтобы создавать изображение сразу в стереометрии, ориентируясь на оси, начерченные на рисунке.
КАК ИЗОБРАЖЕНИЯ ПЕРЕДВИГАЮТСЯ ПО РИСУНКУ
Расскажу немного об этом. Графика, находящаяся на рисунке, существует в двух видах, это как бы два слоя – закреплённый и незакреплённый, находящийся сверху. И существует два оператора – оператор, закрепляющий незакреплённую графику, и оператор «cls», счищающий её.
Пока мы водим стилусом в стороне от основания ножки и в стороне от находящейся на ножке точке, ровно ничего не происходит.
Но если мы поведём стилусом вблизи основания ножки, то она прицепится к нему и станет двигаться. Вместе с прикреплённой сверху точкой, естественно.
То же происходит и с точкой – только двигаться она станет исключительно односторонне – вниз по ножке, укорачивая её, или вверх по ножке, удлиняя её. Собственно видимость движения создаётся постоянным стиранием незакреплённой графики и перерисовыванием точки на ножке на новом месте.
Иногда бывает трудным установить сразу нужные координаты X и Y. Поэтому можно вначале установить координату Y, а затем включить сиреневый ластик. Эта опция зафиксирует значение Y и тогда можно устанавливать координату X основания ножки спокойно и без помех.
Запоминаем результат нажимая кнопку «ok». Нажатая при сиреневом ластике, эта кнопка создаст два элемента – точку и вертикальный отрезок – ножку, идущую к ней. Опция бесцветного ластика создаст только точку.
Так, расставляя точки и отрезки по всему полю рисунка, мы и создадим первоначальное изображение стереометрической модели.
Другие инструменты на панели инструментов
Четыре инструмента, каждый со своей спецификой, предлагаются в правой части панели. Это - создание отрезка, перемещение выбранного элемента, создание сечения, и создание точки с заданными координатами. Наиболее простым является перемещение - мы попросту цепляем один из элементов и несём его на новое место. Место это должно находиться на другом элементе, таким способом происходит привязка к новому месту.
СОЗДАНИЕ ОТРЕЗКА. Отрезок создаётся вольным рисованием и передвижением его концов. Надо лишь позаботиться о том, чтобы его концы были привязаны к существующим графическим элементам. Непривязанный конец отрезка будет будет помещён на фронтальную плоскость. Опция ''Сиреневый ластик'' фиксирует направление отрезка. Возможно лишь передвигать его концы вдоль существующей линии. Опция ''Синий ластик'' фиксирует длину отрезка и разрешает только его параллельный перенос.
СОЗДАНИЕ СЕЧЕНИЯ. Для создания сечения нужно вначале создать центральную точку заливки и расположить вокруг неё от трёх до шести точек - будущие углы контура. Поворотом модели убедиться в том, что все точки лежат в одной плоскости. После этого включаем инструмент ''Создание сечения'' и кликая по точкам, начиная с центральной, обходим контур и запоминаем результат. Центральная точка удаляется автоматически, остальные точки удалять нельзя, поскольку на них идут ссылки в элементе ''Сечение''.
Толщина контура и разреженность его штриховки зависят от цифры на кнопке ''размер точки''. При размере точки 2,5,8 штриховка начинается с центральной точки. При размере 3,6,9 - с точки на 1 пиксель выше. При размере 1,4,7 - с точки на 1 пиксель ниже. Таким способом разные сечения с их штриховкой можно сделать просвечивающими друг через друга.
Вращение модели
Режим поворота модели активируется кликом по голубому полю с изображением координатных осей. На белом поле выше показываются характеристики системы. В программе принята фронтально косоугольная система, её характеристики могут выглядеть, например, так -
x100y400u30k.4
что означает - начало координат находится на 100 пикселей правее левой кромки рисунка и на 400 пикселей ниже верхнего его края. Ось Y составляет угол 30 градусов с осью X и сокращена в линейных размерах на величину k=.4
Если Вас эти цифры почему либо не устраивают, то Вы исправляете их на белом поле и запоминаете их, вторично кликнув по голубому полю и выйдя из режима поворота.
Собственно вращение делается так - в основании модели кликом правой кнопки мыши намечаем вертикальную ось поворота. В этой точке появляется маленький кружок. А правее его - большой кружок. Двигая большой кружок мы и проводим вращение.
В процессе вращения появляется воздушная перспектива. Силу перспективы можно регулировать, используя Ластик разных цветов. Кнопка «cls» возвращает модель в исходное состояние. Кнопка «ok» закрепляет модель в том положении, в которое мы её повернули.
Рисуем основание трёхгранной призмы
"Основанием трёхгранной правильной призмы является треугольник со стороной 200" - читаем в задании, и, что совершенно естественно, немедленно хотим нарисовать это основание.
Поэтому, взяв инструмент «создать точку», мы рисуем точку с координатами 0,0,0 затем – с координатами 200,0,0 а затем начинаем размышлять. Ясно, что третья точка лежит на уровне Х=100 и в отдалении. Но насколько «в отдалении», этого мы пока не знаем.
Поэтому поступаем просто – рисуем точку 100,0,0 – вблизи, и точку 100,200,0 в качестве «точки в отдалении». В результате, у нас на чертеже имеются 4 коричневых точки.
Берём инструмент «отрезок» и соединяем точки «вблизи» и «в отдалении» красной линией. На этой линии с помощью кнопки «п» мы поставим нужную нам точку.
Вызываем калькулятор. Гипотенуза от правой точки к нужной нам составляет 200, катет при ней – 100. Проводя вычисления по теореме Пифагора находим величину отдаления точки, она равна 173.205.
Это значение мы и заносим в качестве первого значения пропорции, указав общую длину красной линии – 200.
Кликаем по красному отрезку и получаем нужную точку с очень хорошей точностью. Точки основания получены. Соединяем их между собой, а ненужную красную линию и дальнюю коричневую точку – удаляем. Как вы видите, задача решена просто и изящно.
__________
скачать программу можно тут - http://disk.yandex.ru/d/T5-M4ZNJabZ9yw некоторые материалы, изложенные в статье, опубликованы мною на сайте http://proza.ru/avtor/dimamasht в разделе "Векторная графика в Стереометрии".