МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Государственное образовательное учреждение высшего и профессионального обр...
5 downloads
152 Views
942KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Государственное образовательное учреждение высшего и профессионального образования «Оренбургский государственный университет» Кафедра начертательной геометрии, инженерной и компьютерной графики
А.И. ВОРОНКОВ, М.А. ВАСИЛЬЕВА, А.П. ИВАНОВА, И.Г. ЧМЫХ
РЕШЕНИЕ МЕТРИЧЕСКИХ ЗАДАЧ ПО НАЧЕРТАТЕЛЬНОЙ ГЕОМЕТРИИ НА ЭВМ
МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ПРАКТИЧЕСКИМ ЗАНЯТИЯМ ПО НАЧЕРТАТЕЛЬНОЙ ГЕОМЕТРИИ
Рекомендовано к изданию Редакционно-издательским советом государственного образовательного учреждения высшего и профессионального образования «Оренбургский государственный университет»
Оренбург 2003
ББК 22.151.3 я7 Р 47 УДК 514.18:618.3 (07)
Рецензенты кандидат технических наук, доцент В.А. Демченко кандидат технических наук, доцент Г.К. Самойлов
Р 47
Воронков А.И., Васильева М.А., Иванова А.П., Чмых И.Г. Решение метрических задач по начертательной геометрии на ЭВМ: Методические указания к практическим занятиям по начертательной геометрии. – Оренбург: ГОУ ВПО ОГУ, 2003.66 с.
Методические указания предназначены для демонстрации возможностей ЭВМ в решении метрических задач способом замены плоскостей проекций и плоскопараллельных перемещений для студентов технических специальностей ВУЗов.
ББК 22.151.3 я7
К
1602050000 6 Л 9 − 98
© Воронков А.И., Васильева М.А., Иванова А.П., Чмых И.Г., 2003 © ГОУ ВПО ОГУ, 2003 2
1 Описание программы 1.1 Общие сведения Программа «Решение метрических задач на ЭВМ» предназначена для демонстрации возможностей ЭВМ в решении метрических задач способом замены плоскостей проекций и плоскопараллельных перемещений. 1.2 Функциональное назначение и логическая структура Программа выполнена на языке "Паскаль", на ЭВМ типа IBM, в операционной системе MS-DOS и является наглядным учебным пособием в изучении решения задач по начертательной геометрии. Программа включает в себя примеры решения двух видов задач: - методом замены плоскостей проекций; - методом плоскопараллельного перемещения. Структура программы построена так, что решение выбранного вида задач на ЭВМ осуществляется пошагово, что дает большую наглядность, по сравнению с описанием в учебнике (см. приложение А). 1.3 Вызов и загрузка Для нормальной работы программы необходима ЭВМ класса не ниже IBM – 286 и операционная система MS DOS. Загрузка программы производится запуском программного файла "KOMG4", после чего на экране компьютера появляется исходное меню из 3-х пунктов: - способ замены плоскостей; - графическое решение основных видов задач; - выход. Перемещение по пунктам меню осуществляется клавишами курсора. Запуск выбранного пункта, - нажатием клавиши "Enter". 1.4 Входные данные Данная программа предназначена для демонстрации решения задач выбранного раздела начертательной геометрии и входные данные для ее выполнения не требуются.
3
2 Руководство пользователя Для запуска данной программы необходимо скопировать программный файл "KOMG4.EXE" на жесткий диск компьютера, подвести клавишами курсора подсвеченный курсор к программному файлу и нажать клавишу "Enter". После этого на экране монитора появится основное меню учебной программы. Перемещение по пунктам меню осуществляется подсвеченным курсором, выбор пункта – нажатием клавиши "Enter". После выбора одного из вышеназванных пунктов появляется основной текст учебного пособия, перемещение по страницам которого осуществляется клавишами "Page Up" и "Page Down". Выйти из программы можно из основного меню, путем выбора пункта меню "Выход".
Список использованных источников 1 Гордон В.О., Семенцов-Огиевский М.А. Курс начертательной геометрии. - М.: Издательство «Наука», 1969. -368с.
4
Приложение А
(обязательное) Листинг программы Решение основных задач способом замены плоскостей проекций Путем замены исходных ("старых") плоскостей проекций геометрические фигуры приводятся в частное положение относительно новых плоскостей проекций. При этом решение поставленных задач значительно упрощается, если преобразование f одной системы плоскостей проекции в другую представить как композицию (произведение) двух преобразований f , f , при этом исходная и новая система координат будет иметь общее начало. При первом преобразовании f оставим неизменной одну из плоскостей проекций исходной системы отнесения, а другую плоскость проекций заменим на новую. С линией пересечения плоскостей проекций будем совмещать всегда ось Х новой системы координат. При втором преобразовании f заменяется оставшаяся плоскость проекций исходной системы отнесения. Здесь также будем соблюдать сделанные выше ограничения.
PgUp – предыдущая страница
PgDn – следующая страница
Esc – выход 5
Решение основных задач способом замены плоскостей проекций 1. Преобразовать прямую (АВ) общего положения в прямую уровня или, другими словами, определить натуральную длину отрезка [АВ], {нажмите клавишу <enter>}
PgUp – предыдущая страница 6
PgDn – следующая страница
Esc – выход
Решение основных задач способом замены плоскостей проекций 1. Преобразовать прямую <АВ> общего положения в прямую уровня или, другими словами, определить длину отрезка [АВ], {нажмите клавишу <enter>} Для решения этой задачи выбираем новую плоскость проекций, параллельно данной прямой. На рисунке новая фронтальная плоскость проекций П2 выбрана параллельно АВ, т.е. новая ось х12 выбрана параллельно горизонтальной проекции А1В1 прямой АВ, {нажмите клавишу <enter>}
PgUp – предыдущая страница
PgDn – следующая страница
Esc – выход 7
Решение основных задач способом замены плоскостей проекций 1. Преобразовать прямую (АВ) общего положения в прямую уровня или, другими словами, определить натуральную длину отрезка [АВ], {нажмите клавишу <enter>} Для решения этой задачи выбираем новую плоскость проекций параллельно данной прямой. На рисунке новая фронтальная плоскость проекций П2 выбрана параллельно АВ, т.е. новая ось х12 выбрана параллельно горизонтальной проекции А1В1 прямой АВ, {нажмите клавишу <enter>} Проекция А2 В2 на новой плоскости проекций П2 определяется проекциями А2 , В2 ее точек А, В. Правило: при замене фронтальной плоскости проекций на новую остается неизменной аппликата (высота) данной точки. {нажмите клавишу <enter>}
PgUp – предыдущая страница 8
PgDn – следующая страница
Esc – выход
Решение основных задач способом замены плоскостей проекций 1. Преобразовать прямую (АВ) общего положения в прямую уровня или, другими словами, определить натуральную длину отрезка [АВ], {нажмите клавишу <enter>} Для решения этой задачи выбираем новую плоскость проекций параллельно данной прямой. На рисунке новая фронтальная плоскость проекций П2 выбрана параллельно АВ, т.е. новая ось х12 выбрана параллельно горизонтальной проекции А1В1 прямой АВ, {нажмите клавишу <enter>} Проекция А2 В2 на новой плоскости проекций П2 определяется проекциями А2 , В2 ее точек А, В. Правило: при замене фронтальной плоскости проекций на новую остается неизменной аппликата (высота) данной точки. {нажмите клавишу <enter>} Очевидно, эта задача так же легко решается заменой горизонтальной плоскости проекций П1 на новую плоскость П1 . Для этого новую ось х21 = П 2 ∧ П1 нужно выбрать параллельно фронтальной проекции А2В2 данной прямой. Построение новых проекций А1 , В1 точек А, В выполняется по правилу: при замене горизонтальной плоскости проекций на новую остается неизменной ордината (глубина) данной точки. PgUp – предыдущая страница
PgDn – следующая страница
Esc – выход 9
Решение основных задач способом замены плоскостей проекций Приведем аналитическое решение этой задачи. Пусть прямая АВ задана системой уравнений: (1) у = к1 х + b1 , z = к 2 х + b2 Заменим фронтальную плоскость проекций П 2 на новую плоскость П2 , параллельную прямой АВ. Плоскость П2 определяется уравнением: у = к1 х1
Отсюда к1
(2)
sin а =
(3)
cos а =
1 + к12 к1 1 + к12
; ,
а – угол поворота осей координат. Он будет положителен, если вращение осуществляется против движения часовой стрелки. При замене горизонтальной плоскости проекции П1 на новую плоскость П1 : х = х * cos a + z * sin a , y = y, z = − х * sin a + z * cos a ;
PgUp – предыдущая страница 10
PgDn – следующая страница
Esc – выход
Решение основных задач способом замены плоскостей проекций При замене фронтальной плоскости проекций П 2 на новую плоскость П2 : х = х * cos a + z * sin a , y = − х * sin a + y * cos a ; z = z, Подставив (2) и (3) в (4) и выразив х, у, z получаем формулы обратного преобразования: х=
(5)
y=
х 1 + к12 к1 х 1 + к12
− −
к1 y 1 + к12 y 1 + к12
; ;
z = z.
Подставив значения х, y, z из (5) в (1), проекций П на новую плоскость проекций П : y=
b1 1+ k
2 1
;
PgUp – предыдущая страница
y=
k 2 ( х − k1 y ) 1 + k12
+ b2 .
PgDn – следующая страница
Esc – выход 11
Решение основных задач способом замены плоскостей проекций 2. Преобразовать прямую (АВ) общего положения в проецирующую прямую. {нажмите клавишу <enter>}
PgUp – предыдущая страница 12
PgDn – следующая страница
Esc – выход
Решение основных задач способом замены плоскостей проекций 2. Преобразовать прямую (АВ) общего положения в проецирующую прямую. {нажмите клавишу <enter>} Задачу решаем композицией двух преобразований. Преобразованием f ( П 2 → П 2 ) прямую АВ преобразуем в прямую уровня в системе П1 , П 2 (см. задачу 1) {нажмите клавишу <enter>}
PgUp – предыдущая страница
PgDn – следующая страница
Esc – выход 13
Решение основных задач способом замены плоскостей проекций 2. Преобразовать прямую (АВ) общего положения в проецирующую прямую. {нажмите клавишу <enter>} Задачу решаем композицией двух преобразований. Преобразованием f ( П 2 → П 2 ) прямую АВ преобразуем в прямую уровня в системе П1 , П 2 (см. задачу 1) {нажмите клавишу <enter>} Вторым преобразованием f ( П1 → П 1 ) , где новая плоскость проекций П 1 выбирается перпендикулярно АВ ( А 2 В 2 ⊥ х 21 ) , в системе П 1 , П 2 получаем проекционную прямую.
PgUp – предыдущая страница 14
PgDn – следующая страница
Esc – выход
Решение основных задач способом замены плоскостей проекций 3. Преобразовать плоскость общего положения в проецирующую. {нажмите клавишу <enter>}
PgUp – предыдущая страница
PgDn – следующая страница
Esc – выход 15
Решение основных задач способом замены плоскостей проекций 3. Преобразовать плоскость общего положения в проецирующую. {нажмите клавишу <enter>} По условию задачи новая плоскость проекций должна быть перпендикулярной данной плоскости Ф(А1В1С1, А2В2С2). Это условие будет выполнено, если она будет перпендикулярна горизонтали плоскости Ф при замене плоскости П 2 на П 2 или фронтали плоскости Ф при замене П1 на П 1 . На рисунке показано решение этой задачи заменой горизонтальной плоскости проекций П1 на новую плоскость проекций П 1 . Здесь Ф⊥ П 1 , так как П 1 ⊥f ⊂ Ф( х 21 ⊥f 2 ) . {нажмите клавишу <enter>}
PgUp – предыдущая страница 16
PgDn – следующая страница
Esc – выход
Решение основных задач способом замены плоскостей проекций 3. Преобразовать плоскость общего положения в проецирующую. {нажмите клавишу <enter>} По условию задачи новая плоскость проекций должна быть перпендикулярной данной плоскости Ф(А1В1С1, А2В2С2). Это условие будет выполнено, если она будет перпендикулярна горизонтали плоскости Ф при замене плоскости П 2 на П 2 или фронтали плоскости Ф при замене П1 на П 1 . На рисунке показано решение этой задачи заменой горизонтальной плоскости проекций П1 на новую плоскость проекций П 1 . Здесь Ф⊥ П 1 , так как П 1 ⊥f ⊂ Ф( х 21 ⊥f 2 ) . {нажмите клавишу <enter>} Построение новых проекций А1 , В 1 , С 1 точек А1, В1, С1 плоскости Ф ясно на рисунке.
PgUp – предыдущая страница
PgDn – следующая страница
Esc – выход 17
Решение основных задач способом замены плоскостей проекций 4. Преобразовать плоскость общего положения Ф(А, В, С) в плоскость уровня, т.е., определить натуральные размеры треугольника АВС. {нажмите клавишу <enter>}
PgUp – предыдущая страница 18
PgDn – следующая страница
Esc – выход
Решение основных задач способом замены плоскостей проекций 4. Преобразовать плоскость общего положения Ф(А, В, С) в плоскость уровня, т.е., определить натуральные размеры треугольника АВС. {нажмите клавишу <enter>} Нетрудно показать, что решение этой задачи требует последовательного выполнения двух замен плоскостей проекций (композиции двух преобразований), так как невозможно выбрать новую плоскость проекций, которая была бы одновременно параллельной плоскости Ф и перпендикулярной одной из плоскостей проекций исходной системы П1 , П 2 . Поэтому первой заменой f (П1 → П 1 ) плоскость Ф преобразуем в проецирующую в системе П 2 , П 1 (см. задачу 3) {нажмите клавишу <enter>}
PgUp – предыдущая страница
PgDn – следующая страница
Esc – выход 19
Решение основных задач способом замены плоскостей проекций 4. Преобразовать плоскость общего положения Ф(А, В, С) в плоскость уровня, т.е., определить натуральные размеры треугольника АВС. {нажмите клавишу <enter>} Нетрудно показать, что решение этой задачи требует последовательного выполнения двух замен плоскостей проекций (композиции двух преобразований), так как невозможно выбрать новую плоскость проекций, которая была бы одновременно параллельной плоскости Ф и перпендикулярной одной из плоскостей проекций исходной системы П1 , П 2 . Поэтому первой заменой f (П1 → П 1 ) плоскость Ф преобразуем в проецирующую в системе П 2 , П 1 (см. задачу 3) {нажмите клавишу <enter>}
(
)
Второй заменой f П 2 → П 2 , где П 2 ||Ф, проводим ее в положение плоскости уровня в системе П 1 , П 2 .
PgUp – предыдущая страница 20
PgDn – следующая страница
Esc – выход
Решение основных задач способом плоскопараллельного движения П л о с к о п а р а л л е л ь н ы м движением фигуры в пространстве называется такое ее перемещение, при котором все точки фигуры перемещаются в параллельных плоскостях. Теорема о параллельном перемещении относительно П1: при плоскопараллельном движении фигуры относительно горизонтальной плоскости проекции фронтальные проекции ее точек перемещаются по прямым, перпендикулярным линиям связи, а горизонтальная проекция фигуры остается конгруэнтной самой себе. Теорема о параллельном перемещении относительно П2: при плоскопараллельном движении фигуры относительно фронтальной плоскости проекции горизонтальные проекции ее точек перемещаются по прямым, перпендикулярным линиям связи, а фронтальная проекция фигуры остается конгруэнтной самой себе.
PgUp – предыдущая страница
PgDn – следующая страница
Esc – выход 21
Решение основных задач способом плоскопараллельного движения 1. Преобразовать прямую общего положения в прямую уровня – фронталь. {нажмите клавишу <enter>}
PgUp – предыдущая страница 22
PgDn – следующая страница
Esc – выход
Решение основных задач способом плоскопараллельного движения
1. Преобразовать прямую общего положения в прямую уровня – фронталь. {нажмите клавишу <enter>}
Выполним плоскопараллельное движение прямой АВ относительно горизонтальной плоскости проекции. Так как прямая АВ должна быть фронталью, то ее горизонтальную проекцию А1 В1 расположим перпендикулярно линиям связи. При этом согласно теореме горизонтальные проекции А1В1 , А1 В1 отрезка [АВ] и его образа [АВ ] должны быть конгруэнтны. {нажмите клавишу <enter>}
PgUp – предыдущая страница
PgDn – следующая страница
Esc – выход 23
Решение основных задач способом плоскопараллельного движения 1. Преобразовать прямую общего положения в прямую уровня – фронталь. {нажмите клавишу <enter>} Выполним плоскопараллельное движение прямой АВ относительно горизонтальной плоскости проекции. Так как прямая АВ должна быть фронталью, то ее А1 В1 расположим горизонтальную проекцию перпендикулярно линиям связи. При этом согласно теореме горизонтальные проекции А1В1 , А1 В1 отрезка [АВ] и его образа [АВ ] должны быть конгруэнтны. {нажмите клавишу <enter>} Фронтальная проекция А, В точек А, В перемещаются соответственно по прямым Ф2, W2 – вырожденным проекциям горизонтальных плоскостей уровня Ф, W в которых перемещаются точки А, В. В результате выполненного плоскопараллельного движения определим натуральную величину отрезка АВ(|АВ|= А2 В 2 ) и угол q его наклона к горизонтальной плоскости проекции.
PgUp – предыдущая страница 24
PgDn – следующая страница
Esc – выход
Решение основных задач способом плоскопараллельного движения 2. Преобразовать прямую (АВ) общего положения в горизонтальную проецирующую прямую. {нажмите клавишу <enter>}
PgUp – предыдущая страница
PgDn – следующая страница
Esc – выход 25
Решение основных задач способом плоскопараллельного движения 2. Преобразовать прямую (АВ) общего положения в горизонтальную проецирующую прямую. {нажмите клавишу <enter>} Задача решается композицией двух преобразований. Сначала плоскопараллельным движением относительно П1 прямую АВ преобразуем во фронтальную прямую уровня АВ (см. задачу 1) {нажмите клавишу <enter>}
PgUp – предыдущая страница 26
PgDn – следующая страница
Esc – выход
Решение основных задач способом плоскопараллельного движения
2. Преобразовать прямую (АВ) общего положения в горизонтальную проецирующую прямую. {нажмите клавишу <enter>}
Задача решается композицией двух преобразований. Сначала плоскопараллельным движением относительно П1 прямую АВ преобразуем во фронтальную прямую уровня АВ (см. задачу 1) {нажмите клавишу <enter>} Затем плоскопараллельным движением относительно П2 прямую АВ преобразуем в горизонтально проецирующую прямую АВ . При этом | А2 В 2 |=| А2 В 2 |, горизонтальные проекции А1 , В1 точек А , В перемещаются по прямой S1 – вырожденной проекции фронтальной плоскости уровня S, в которой перемещаются точки А , В .
PgUp – предыдущая страница
PgDn – следующая страница
Esc – выход 27
Решение основных задач способом плоскопараллельного движения 3. Построить центр О окружности м, описанной около треугольника АВС. {нажмите клавишу <enter>}
PgUp – предыдущая страница 28
PgDn – следующая страница
Esc – выход
Решение основных задач способом плоскопараллельного движения 3. Построить центр О окружности м, описанной около треугольника АВС. {нажмите клавишу <enter>} Для решения этой задачи необходимо АВС общего положения преобразовать в уровня, построить здесь искомую точку и преобразованием найти ее проекции на чертеже.
плоскость плоскость обратным исходном
Одним плоскопараллельным движением плоскость общего положения нельзя преобразовать в плоскость уровня. Поэтому выполним последовательно два плоскопараллельных движения треугольника АВС: сначала относительно фронтальной плоскости П1 . При первом плоскопараллельном движении u плоскость треугольника АВС преобразуем в проецирующую плоскость. Для этого фронтальную проекцию А 2 B 2 С 2 образа расположен так, чтобы фронталь f ( f 1 , f 2 ) стала горизонтально проецирующей. При этом |А2В2С2|=| А 2 B 2 С 2 |, а горизонтальные проекции А1, В1, С1 вершин А, В, С треугольника опишут соответственно прямые Ф1, W1, Г1 – вырожденные проекции фронтальных плоскостей уровня, проведенных через эти вершины.
PgUp – предыдущая страница
PgDn – следующая страница
Esc – выход 29
Решение основных задач способом плоскопараллельного движения
Вторым плоскопараллельным движением u относительно П1 треугольник АВС преобразуем в треугольник АВС , расположенный во фронтальной плоскости уровня. При этом отрезки В1 С1 , В1 С1 конгруэнтны, и последний располагаем перпендикулярно линиям связи. Поэтому фронтальная проекции А 2 B 2 С 2 определяет натуральные размеры треугольника АВС. {нажмите клавишу <enter>}
PgUp – предыдущая страница 30
PgDn – следующая страница
Esc – выход
Решение основных задач способом плоскопараллельного движения
Вторым плоскопараллельным движением u относительно П1 треугольник АВС преобразуем в треугольник АВС , расположенный во фронтальной плоскости уровня. При этом отрезки В1 С1 , В1 С1 конгруэнтны, и последний располагаем перпендикулярно линиям связи. Поэтому фронтальная проекции А 2 B 2 С 2 определяет натуральные размеры треугольника АВС. {нажмите клавишу <enter>} Известными построениями находим фронтальную проекцию О 2 центра О искомой окружности, по линиям связи −1
находим его горизонтальную проекцию О1 . Обратными преобразованиями u , u описанной вокруг треугольника АВС окружности.
PgUp – предыдущая страница
−1
PgDn – следующая страница
находим проекции О1, О2 центра О
Esc – выход 31
uses crt,graph; var c:char; GD,GM,kod,ukaz,s:integer; i:longint; procedure setka; begin for i:=0 to 19 do line(20*i,26,20*i,26+14*22); for i:=0 to 22 do line(0,26+14*i,20*19,26+14*i); end; procedure ent(n{,t}:integer); begin repeat { if t=1 then repeat outtextxy(315,80,' нажмите клавишу <enter> for i:=1 to 300000 do begin end; bar(315,80,600,90); for i:=1 to 300000 do begin end; until keypressed;} c:=readkey; kod:=ord(c); if kod=73 then begin s:=s-1; if s=0 then begin s:=1; kod:=33; end else exit; end; if kod=81 then begin s:=s+1; if s>n then begin s:=n; kod:=33; end else exit; 32
');
end; if kod=27 then exit; until kod=13; end; procedure niz; begin setcolor(8); setbkcolor(15); outtextxy(10,340,' PgUp - предидущая страница Esc - выход '); end;
PgDn - следующая страница
procedure otkr_gr; begin Gd:=0; InitGraph(GD,GM,''); setfillstyle(1,0); setcolor(black); bar(0,0,getmaxx,getmaxy); end; procedure nazv1; begin settextstyle(0,0,1); setcolor(8); setbkcolor(15); outtextxy(80,14,'Решение основных задач способом замены плоскостей проекций'); Line(79,24,546,24); end; procedure nazv2; begin settextstyle(0,0,1); setcolor(8); setbkcolor(15); outtextxy(70,14,'Решение основных задач способом плоскопараллельного движения'); Line(69,24,556,24); end; procedure t_ka(x,y:integer); begin 33
setfillstyle(1,0); circle(x,y,3); { floodfill(x,y,0);} end; procedure ris1; begin setcolor(8); setbkcolor(15); Line(2*20,26+14*6,12*20,26+14*6); {x12} Line(2*20+1,27+14*6,12*20,27+14*6); Line(2*20,26+14*6,2*20+10,30+14*6); {стрелки} Line(2*20,26+14*6,2*20+10,22+14*6); Line(5*20,25+14*2,11*20,25+14*4); {A2B2} Line(5*20,26+14*2,11*20,26+14*4); Line(5*20,27+14*2,11*20,27+14*4); Line(20*5,25+11*14,11*20,25+14*7); {A1B1} Line(20*5,26+11*14,11*20,26+14*7); Line(20*5,27+11*14,11*20,27+14*7); Line(20*5,26+14*2,20*5,26+14*11); {A1A2} Line(11*20,26+14*4,11*20,26+14*7); {B1B2} t_ka(5*20,26+14*2); {A2} t_ka(11*20,26+14*4); {B2} t_ka(5*20,26+14*11); {A1} t_ka(11*20,26+14*7); {B1} outtextxy(10,26+14*6-4,'X'); outtextxy(20,26+14*6-1,'12'); outtextxy(20*2+10,26+14*5,'П'); outtextxy(20*3,26+14*5+3,'2'); outtextxy(20*2+12,26+14*6+6,'П'); outtextxy(20*3,26+14*6+9,'1'); outtextxy(20*4+10,26+14*1,'A'); outtextxy(20*5,26+14*1+3,'2'); outtextxy(11*20,26+14*3,'B'); outtextxy(11*20+10,26+14*3+3,'2'); outtextxy(20*4,26+14*11-10,'A'); outtextxy(20*4+8,26+14*11-7,'1'); outtextxy(20*11+5,26+14*7-10,'B'); outtextxy(20*11+13,26+14*7-7,'1'); end; procedure ris2; begin setcolor(8); setbkcolor(15); Line(20*4,26+14*14,20*13,26+14*8); {x_12} Line(20*4+1,25+14*14,20*13,25+14*8); Line(20*4,26+14*14,20*4+10,26+14*14-8); {стрелки} Line(20*4,26+14*14,20*4+15,26+14*14-3); outtextxy(20*3-10,26+14*14-4,'X'); outtextxy(20*3-11,26+14*14-10,'-'); outtextxy(20*3,26+14*14-1,'12'); outtextxy(20*4+3,26+14*13-7,'П'); outtextxy(20*4+11,26+14*13-4,'1'); outtextxy(20*5-12,26+14*14+5,'П'); outtextxy(20*5-13,26+14*14-1,'-'); outtextxy(20*5-2,26+14*14+8,'2'); 34
end; procedure ris3; begin setcolor(8); setbkcolor(15); Line(11*20,26+14*7,20*13-2,26+14*10+4); {B1B_2} Line(20*5,26+14*11,20*8-3,26+14*16); {A1A_2} Line(20*13-2,25+14*10+4,20*8-3,25+14*16); {A_2B_2} Line(20*13-2,26+14*10+4,20*8-3,26+14*16); Line(20*13-2,27+14*10+4,20*8-3,27+14*16); arc(20*12+1,26+14*9-5,124,209,15); {дуга} putpixel(20*12-8,26+14*9-6,14); {точка} circle(20*12-8,26+14*9-6,1); Line(20*7-10,26+14*14+5,20*8-10,26+14*14+7); {штрихи} Line(20*12-1,26+14*9+4,20*13-3,26+14*9+6); Line(20*12+3,26+14*9+8,20*13-1,26+14*9+10); Line(20*5-4,26+14*4-4,20*5+4,26+14*4+4); {штрихи} Line(11*20-4,26+14*5-5,11*20+4,26+14*5-1); Line(11*20-4,26+14*5+1,11*20+4,26+14*5+5); t_ka(5*20,26+14*11); {A1} t_ka(11*20,26+14*7); {B1} t_ka(8*20-3,26+14*16); {A_2} t_ka(13*20-2,26+14*10+4); {B_2} outtextxy(20*9-12,26+14*16-8,'-'); outtextxy(20*9-11,26+14*16-2,'A'); outtextxy(20*8+19,26+14*16+1,'2'); outtextxy(20*13+5,26+14*10-6,'-'); outtextxy(13*20+6,26+14*10,'B'); outtextxy(14*20-4,26+14*10+3,'2'); end; procedure ris4; begin setcolor(8); setbkcolor(15); Line(13*20-2,26+14*10+4,20*5+4,26+14*19); {B_2A__1} t_ka(8*20-3,26+14*16); {A_2} t_ka(13*20-2,26+14*10+4); {B_2} t_ka(5*20+4,26+14*19); {A__1} Line(20*4+14,26+14*16,20*9-10,26+14*20-3); {X__21} Line(20*4+15,26+14*16,20*9-9,26+14*20-3); Line(20*4+14,26+14*16,20*5+6,26+14*16+12); {стрелки} Line(20*4+14,26+14*16,20*5+14,26+14*16+8); arc(20*6+8,26+14*18-4,318,50,15); {дуга} putpixel(20*6+17,26+14*18-5,14); {точка} circle(20*6+17,26+14*18-5,1); Line(20*6,26+14*12-1,20*5+5,26+14*12+1); {галка} Line(20*5+5,26+14*12+1,20*6-4,26+14*12-6); Line(20*6-6,26+14*18-1,20*6-1,26+14*18+10); {галка} Line(20*6-6,26+14*18-1,20*6+5,26+14*18+7); 35
outtextxy(20*3+5,26+14*16-6,'X'); outtextxy(20*3+4,26+14*16-13,'-'); outtextxy(20*3+4,26+14*16-15,'-'); outtextxy(20*3+15,26+14*16-3,'12'); outtextxy(20*4+10,26+14*17-6,'-'); outtextxy(20*4+10,26+14*17-9,'-'); outtextxy(20*4+10,26+14*17,'П'); outtextxy(20*4+17,26+14*17+3,'1'); outtextxy(20*5+10,26+14*16-1,'П'); outtextxy(20*5+10,26+14*16-8,'-'); outtextxy(20*5+20,26+14*16+2,'2'); outtextxy(20*4,26+14*20-7,'A = B'); outtextxy(20*4,26+14*20-4,' 1 1'); outtextxy(20*4-1,26+14*19-3,'_ _'); outtextxy(20*4-1,26+14*19-6,'_ _'); end; procedure ris31; begin setcolor(8); setbkcolor(15); Line(2*20,26+14*11,7*20+10,26+14*11); {x12} Line(2*20+1,27+14*11,7*20+10,27+14*11); Line(2*20,26+14*11,2*20+10,30+14*11); {стрелки} Line(2*20,26+14*11,2*20+10,22+14*11); Line(20*3,25+14*17,7*20,25+14*13); {A1B1} Line(20*3,26+14*17,7*20,26+14*13); Line(20*3,27+14*17,7*20,27+14*13); Line(20*3,25+14*17,6*20,25+14*21); {A1C1} Line(20*3,26+14*17,6*20,26+14*21); Line(20*3,27+14*17,6*20,27+14*21); Line(20*7-1,26+14*13,6*20-1,26+14*21); {B1C1} Line(20*7,26+14*13,6*20,26+14*21); Line(20*7+1,26+14*13,6*20+1,26+14*21); Line(3*20,25+14*3,7*20,25+14*3+3); {A2B2} Line(3*20,26+14*3,7*20,26+14*3+3); Line(3*20,27+14*3,7*20,27+14*3+3); Line(3*20,25+14*3,6*20,25+14*6+4); {A2С2} Line(3*20,26+14*3,6*20,26+14*6+4); Line(3*20,27+14*3,6*20,27+14*6+4); Line(20*7-1,26+14*3+3,6*20-1,26+14*6+4); {B2C2} Line(20*7,26+14*3+3,6*20,26+14*6+4); Line(20*7+1,26+14*3+3,6*20+1,26+14*6+4); Line(20*3,26+14*17,20*3,26+14*3); {A1A2} Line(7*20,26+14*3+3,7*20,26+14*13); {B1B2} Line(6*20,26+14*21,6*20,26+14*6+4); {B1B2} t_ka(3*20,26+14*17); {A1} t_ka(7*20,26+14*13); {B1} t_ka(6*20,26+14*21); {C1} t_ka(6*20,26+14*6+4); {C2} t_ka(3*20,26+14*3); {A2} t_ka(7*20,26+14*3+3); {B2} outtextxy(10,26+14*11-4,'X'); outtextxy(20,26+14*11-1,'12'); 36
outtextxy(20*2,26+14*10-1,'П'); outtextxy(20*3-10,26+14*10+2,'2'); outtextxy(20*2+3,26+14*11+6,'П'); outtextxy(20*3-10,26+14*11+9,'1'); outtextxy(20*2,26+14*3,'A'); outtextxy(20*2+10,26+14*3+3,'2'); outtextxy(7*20-5,26+14*2+3,'B'); outtextxy(7*20+5,26+14*2+6,'2'); outtextxy(5*20,26+14*6+3,'C'); outtextxy(5*20+10,26+14*6+6,'2'); outtextxy(20*2+5,26+14*17+5,'A'); outtextxy(20*2+13,26+14*17+8,'1'); outtextxy(20*7+5,26+14*13-10,'B'); outtextxy(20*7+13,26+14*13-7,'1'); outtextxy(20*6+6,26+14*21-2,'C'); outtextxy(20*6+12,26+14*21+1,'1'); end; procedure ris32; begin setcolor(8); setbkcolor(15); Line(20*2,26+14*17,20*8,26+14*17); {f1} Line(20*6+10,26+14*16+5,20*6+10,26+14*5-4); {1112} Line(20*2,26+14*2+7,20*8,26+14*5+7); {f2} Line(20*10+10,26+14*2,20*8-3,26+14*8); {x_21} Line(20*10+9,26+14*2,20*8-4,26+14*8); Line(20*10+10,26+14*2,20*10+7,26+14*2+12); {стрелки} Line(20*10+10,26+14*2,20*10-2,26+14*2+10); t_ka(3*20,26+14*17); {A1} t_ka(20*6+10,26+14*17); {11} t_ka(20*6+10,26+14*5-4); {12} t_ka(3*20,26+14*3); {A2} outtextxy(20*2-5,26+14*16+2,'f'); outtextxy(20*2+3,26+14*16+5,'1'); outtextxy(20*7-6,26+14*17+3,'1'); outtextxy(20*7+2,26+14*17+6,'1'); outtextxy(20*7+1,26+14*4+6,'1'); outtextxy(20*7+11,26+14*4+8,'2'); outtextxy(20*10,26+14*1+3,'X'); outtextxy(20*10,26+14*1-6,'_'); outtextxy(20*10+10,26+14*1+6,'21'); outtextxy(20*11-8,26+14*2+7,'П'); outtextxy(20*11,26+14*2+10,'1'); outtextxy(20*9-1,26+14*2+3,'П'); outtextxy(20*11-9,26+14*2+1,'-'); outtextxy(20*9+9,26+14*2+5,'2'); end; procedure ris33; begin setcolor(8); setbkcolor(15); Line(20*8,26+14*5+7,20*14-3,26+14*8+6); {A2A_1} Line(20*7,26+14*3+3,20*11+2,26+14*5+4); {B2B_1} Line(20*6,26+14*6+4,20*17-6,26+14*12-5); {C2C_1} Line(20*10-4,26+14*5-1,20*10+4,26+14*5-6); {штрихи} Line(20*7+3,26+14*12-4,20*7-3,26+14*12+4); Line(20*3+3,26+14*14-4,20*3-3,26+14*14+4); Line(20*3+3,26+14*14+1,20*3-3,26+14*14+9); Line(20*6+3,26+15*14,20*6-3,26+14*15+8); Line(20*6+3,26+15*14+5,20*6-3,26+14*15+13); 37
Line(20*6+3,26+15*14+10,20*6-3,26+14*15+18); Line(20*10-6,26+14*8+4,20*10+6,26+14*8+4); Line(20*10,26+14*8+6,20*10+12,26+14*8+6); Line(20*10+6,26+14*8+8,20*10+18,26+14*8+8); Line(20*13-3,26+14*8-4,20*13+3,26+14*8+4); Line(20*13-8,26+14*8-6,20*13-2,26+14*8+2); Line(20*11+2,25+14*5+4,20*17-6,25+14*12-5); {B_1C_1} Line(20*11+2,26+14*5+4,20*17-6,26+14*12-5); Line(20*11+2,27+14*5+4,20*17-6,27+14*12-5); t_ka(14*20-3,26+14*8+6); {A_1} t_ka(20*11+2,26+14*5+4); {B_1} t_ka(17*20-6,26+14*12-5); {C_1} t_ka(6*20,26+14*6+4); {C2} t_ka(7*20,26+14*3+3); {B2} outtextxy(20*14+3,26+14*8-3,'A = f'); outtextxy(20*14+11,26+14*8,'1 1'); outtextxy(20*14+2,26+14*8-10,'- -'); outtextxy(20*11+7,26+14*5-10,'-'); outtextxy(20*11+8,26+14*5-3,'B'); outtextxy(20*11+16,26+14*5,'1'); outtextxy(20*17+3,26+14*11+1,'C'); outtextxy(20*17+11,26+14*11+4,'1'); outtextxy(20*17+2,26+14*11-6,'-'); outtextxy(20*2-5,26+14*1+9,'f'); outtextxy(20*2+5,26+14*1+12,'2'); end; procedure ris34; begin setcolor(8); setbkcolor(15); Line(20*9+10,26+14*5,20*17+4,26+13*14+6); {x_21} Line(20*9+10,25+14*5,20*17+4,25+14*13+6); Line(20*17+4,26+14*13+6,20*16+8,26+14*13-1); {стрелки} Line(20*17+4,26+14*13+6,20*17-5,26+14*13-6); Line(20*8+11,26+14*14,20*14-3,26+14*8+6); {A__2A_1} Line(20*8+12,26+14*8-2,20*11+2,26+14*5+4); {B__2B_1} Line(20*14+8,26+14*14,20*17-6,26+14*12-5); {C__2C_1} Line(20*8+12,25+14*8-2,20*14++10,25+14*14-1); {B__2C__2} Line(20*8+12,26+14*8-2,20*14+10,26+14*14-1); Line(20*8+12,27+14*8-2,20*14+10,27+14*14-1); Line(20*8+11,25+14*14,20*14+10,25+14*14-1); {A__2C__2} Line(20*8+11,26+14*14,20*14+10,26+14*14-1); Line(20*8+11,27+14*14,20*14+10,27+14*14-1); Line(20*8+12,26+14*14,20*8+13,26+14*8-2); {A__2B__2} Line(20*8+11,26+14*14,20*8+12,26+14*8-2); Line(20*8+10,26+14*14,20*8+11,26+14*8-2); t_ka(14*20-3,26+14*8+6); {A_1} t_ka(20*11+2,26+14*5+4); {B_1} t_ka(17*20-6,26+14*12-5); {C_1} t_ka(20*8+11,26+14*14); {A__2} t_ka(20*8+12,26+14*8-2); {B__2} t_ka(20*14+10,26+14*14-1); {C__2} outtextxy(20*17,26+14*14+1,'X'); outtextxy(20*17,26+14*14-7,'='); outtextxy(20*17+10,26+14*14+4,'12'); outtextxy(20*17+5,26+14*12+9,'П'); 38
outtextxy(20*17+5,26+14*12+2,'-'); outtextxy(20*17+13,26+14*12+12,'1'); outtextxy(20*16,26+14*13+7,'П'); outtextxy(20*16,26+14*13,'='); outtextxy(20*16+10,26+14*13+10,'2'); arc(20*16+2,26+14*12+3,140,230,15); {дуга} putpixel(20*16-6,26+14*12+3,14); {точка} circle(20*16-6,26+14*12+3,1); arc(20*4+11,26+14*4-4,80,330,5); arc(20*5,26+14*4,0,150,5); arc(20*5,26+14*4,280,0,5); arc(20*10+1,26+14*13-8,130,0,5); arc(20*10+1,26+14*13-8,0,50,5); arc(20*10+8,26+14*12+1,0,220,5); arc(20*10+8,26+14*12+1,340,360,5); Line(20*8,26+14*4,20*8,26+14*4-8); Line(20*8,26+14*4,20*8+4,26+14*4-7); Line(20*8-10,26+14*7+4,20*8-10,26+14*7-4); Line(20*8-10,26+14*7+4,20*8-6,26+14*7-3); Line(20*8-7,26+14*7+5,20*8-3,26+14*7-2); Line(20*15,26+14*13+1,20*15,26+14*13+10); Line(20*15-4,26+14*13+2,20*15,26+14*13+10); Line(20*15+3,26+14*13-1,20*15+3,26+14*13+8); Line(20*9+10,26+14*7-4,20*9+10,26+14*7+4); Line(20*9+6,26+14*7-3,20*9+10,26+14*7+4); outtextxy(20*8+6,26+14*14+10,'A'); outtextxy(20*8+16,26+14*14+13,'2'); outtextxy(20*7+10,26+14*8,'='); outtextxy(20*8+5,26+14*14+3,'='); outtextxy(20*7+11,26+14*8+7,'B'); outtextxy(20*8,26+14*8+10,'2'); outtextxy(20*14+6,26+14*14+9,'C'); outtextxy(20*14+15,26+14*14+12,'2'); outtextxy(20*14+5,26+14*14+2,'='); end; procedure list1; begin setgraphmode(1); setfillstyle(1,0); bar(0,0,getmaxx,getmaxy); setcolor(8); setbkcolor(15); nazv1; setcolor(8); setbkcolor(15); niz; setcolor(8); setbkcolor(15); outtextxy(10,50,' Путем замены исходных ("старых") плоскостей проекций геометрические фигуры'); 39
outtextxy(10,60,'приводятся в частное положение относительно новых плоскостей проекций. При'); outtextxy(10,70,'этом решение поставленных задач значительно упрощается, если преобразование f'); outtextxy(10,80,'одной системы плоскостей проекций в другую представить как композицию (произ-'); outtextxy(10,82,' _ '); outtextxy(10,84,' _ _ '); outtextxy(10,93,'ведение) двух преобразований f, f. При этом исходная и новая системы коорди-'); outtextxy(10,103,'нат будут иметь общее начало. '); outtextxy(10,105,' _ '); outtextxy(10,114,' При первом преобразовании f оставим неизменной одну из плоскостей проекций'); outtextxy(10,124,'исходной системы отнесения, а другую плоскость проекций заменим на новую.'); outtextxy(10,134,'С линиец пересечения плоскостей проекций будем совмещать всегда ось x новой'); outtextxy(10,136,' _ '); outtextxy(10,138,' _ '); outtextxy(10,147,'системы коордиyнат. При втором преобразовании f заменяется оставшаяся плос-'); outtextxy(10,157,'кость проекций исходной системы отнесения. Здесь также будем соблюдать сде-'); outtextxy(10,167,'ланные выше ограничения.'); ent(7); if kod<>13 then exit; s:=s+1; end; procedure list2; begin setgraphmode(1); setfillstyle(1,0); bar(0,0,getmaxx,getmaxy); setcolor(8); setbkcolor(15); nazv1; setcolor(8); setbkcolor(15); ris1; setcolor(8); setbkcolor(15); niz; 40
setcolor(8); setbkcolor(15); outtextxy(300,40,'1. Преобразовать прямую (AB) общего поло-'); outtextxy(315,50,'жения в прямую уровня или, другими сло-'); outtextxy(315,60,'вами , определить натуральную длину '); outtextxy(315,70,'отрезка [AB].'); outtextxy(315,80,' { нажмите клавишу <enter> } '); ent(7); if kod<>13 then exit; setcolor(8); setbkcolor(15); ris2; setcolor(8); setbkcolor(15); outtextxy(300,100,' Для решения этой задачи выбираем новую'); outtextxy(315,110,'плоскость проекций параллельно данной'); outtextxy(315,120,'прямой. На рисунке новая фронтальная'); outtextxy(315,122,' _ '); outtextxy(315,131,'плоскость проекций П выбрана параллель-'); outtextxy(315,134,' 2 '); outtextxy(315,135,' _ '); outtextxy(315,142,'но AB, т.е. новая ось x выбрана парал-'); outtextxy(315,145,' 12 '); outtextxy(315,152,'лельно горизонтальной проекции A B пря-'); outtextxy(315,155,' 1 1 '); outtextxy(315,162,'мой AB. '); outtextxy(315,172,' { нажмите клавишу <enter> } '); ent(7); if kod<>13 then exit; ris3; setcolor(8); setbkcolor(15); outtextxy(300,183,' __ '); outtextxy(300,192,' Проекция A B на новой плоскости про-'); outtextxy(300,195,' 22 '); outtextxy(315,194,' _ _ _ '); outtextxy(315,203,'екций П определяется проекциями A ,B '); outtextxy(315,206,' 2 2 2'); outtextxy(315,213,'ее точек A, B. '); outtextxy(300,223,' Правило: при замене фронтальной плос-'); outtextxy(315,233,'кости проекций на новую остается неиз-'); outtextxy(315,243,'менной аппликата (высота) данной точки. '); outtextxy(315,253,' { нажмите клавишу <enter> } '); 41
ent(7); if kod<>13 then exit; outtextxy(10,273,' Очевидно, эта задача также легко решается заменой горизонтальной плоскости'); outtextxy(10,275,' _ _ _ '); outtextxy(10,284,'проекций П на новую плоскость проекций П . Для этого новую ось x = П /\ П '); outtextxy(10,287,' 1 1 21 2 1'); outtextxy(10,294,'нужно выбрать параллельно фронтальной проекции A B данной прямой. Построение'); outtextxy(10,297,' 22 '); outtextxy(10,296,' _ _ '); outtextxy(10,305,'новых проекций A , B точек A, B выполняется по правилу: при замене горизон-'); outtextxy(10,308,' 1 1 '); outtextxy(10,315,'тальной плоскости проекций на новую остается неизменной ордината ( глубина)'); outtextxy(10,325,'данной точки.'); ent(7); if kod<>13 then exit; s:=s+1; end; procedure list3; begin setgraphmode(1); setfillstyle(1,0); bar(0,0,getmaxx,getmaxy); setcolor(8); setbkcolor(15); nazv1; niz; ris1; ris2; ris3; setcolor(8); setbkcolor(15); outtextxy(300,40,' Приведем аналитическое решение этой'); outtextxy(315,50,'задачи. Пусть прямая AB задана системой'); outtextxy(315,60,'уравнений : '); outtextxy(315,70,'(1) y = k x + b ,z = k x + b '); outtextxy(315,73,' 1 1 2 2 '); outtextxy(315,83,' Заменим фронтальную плоскость проекций'); outtextxy(315,85,' _ '); outtextxy(315,94,'П на новую плоскость П , параллельную'); 42
outtextxy(315,97,' 2 2 '); outtextxy(315,99,' _ '); outtextxy(315,108,'прямой AB. Плоскость П определяется'); outtextxy(315,111,' 2 '); outtextxy(315,118,'уравнением : '); outtextxy(315,128,' y=kx '); outtextxy(315,131,' 1 '); outtextxy(315,138,' Отсюда '); outtextxy(315,150,' k '); outtextxy(315,153,' 1 '); line(450,161,550,161); line(470,165,540,165); line(455,170,457,170); line(457,170,457,183); line(458,170,458,182); line(458,183,470,165); outtextxy(315,156,'(2) sin a = ; '); outtextxy(315,167,' 2 '); outtextxy(315,171,' 1+k '); outtextxy(315,175,' 1 '); outtextxy(315,195,' 1 '); line(450,203,550,203); line(470,207,540,207); line(455,212,457,212); line(457,212,457,225); line(458,212,458,225); line(458,225,470,207); outtextxy(315,198,'(3) cos a = . '); outtextxy(315,209,' 2 '); outtextxy(315,213,' 1+k '); outtextxy(315,217,' 1 '); outtextxy(315,227,' a - угол поворота осей координат. '); outtextxy(315,237,'Он будет положителен, если вращение '); outtextxy(315,247,'осуществляется против движения часовой'); outtextxy(315,257,'стрелки.'); outtextxy(300,267,' При замене горизонтальной плоскости'); outtextxy(10,269,' _ '); outtextxy(10,278,'проекций П на новую плоскость проекций П outtextxy(10,281,' 1 1 '); outtextxy(10,280,' _ '); outtextxy(10,290,' x = x * cos a + z * sin a , '); outtextxy(10,292,' _ '); outtextxy(10,301,' y=y , '); outtextxy(10,303,' _ '); outtextxy(10,312,' z = - x * sin a + z * cos a ; '); ent(7); if kod<>13 then exit; s:=s+1; end;
');
43
procedure list4; begin setgraphmode(1); setfillstyle(1,0); bar(0,0,getmaxx,getmaxy); setcolor(8); setbkcolor(15); nazv1; niz; setcolor(8); setbkcolor(15); ris1; ris2; ris3; setcolor(8); setbkcolor(15); outtextxy(300,40,' При замене фронтальной плоскости про-'); outtextxy(315,42,' _ '); outtextxy(315,51,'екций П на новую плоскость П : '); outtextxy(315,53,' 2 2 '); outtextxy(315,58,' _ '); outtextxy(315,67,' x = x * cos a + y * sin a , '); outtextxy(315,72,' _ '); outtextxy(315,80,'(4) y = - x * sin a + y * cos a , '); outtextxy(315,86,' _ '); outtextxy(315,94,' z=z . '); outtextxy(315,109,'Подставив (2) и (3) в (4) и вы-'); outtextxy(315,111,' _ _ _ '); outtextxy(315,120,'разив x, y, z через x, y, z получа-'); outtextxy(315,130,'ем формулы обратного преобразования :'); outtextxy(345,153,'x = ;'); outtextxy(424,136,'_'); outtextxy(425,145,'x'); line(375,156,475,156); line(395,160,465,160); line(380,165,382,165); line(382,165,382,178); line(383,165,383,177); line(383,178,395,160); outtextxy(403,164,' 2'); outtextxy(403,168,'1 + k '); outtextxy(403,174,' 1'); outtextxy(485,153,'-'); outtextxy(536,136,' _'); outtextxy(536,145,'k y'); outtextxy(543,148,'1'); line(500,156,600,156); line(520,160,590,160); line(505,165,507,165); line(507,165,507,178); line(508,165,508,177); line(508,178,520,160); outtextxy(528,164,' 2'); 44
outtextxy(528,168,'1 + k '); outtextxy(528,174,' 1'); outtextxy(300,205,'(5)'); outtextxy(345,205,'y = ;'); outtextxy(410,188,' _'); outtextxy(410,197,'k x'); outtextxy(408,200,' 1'); line(375,208,475,208); line(395,212,465,212); line(380,217,382,217); line(382,217,382,230); line(383,217,383,229); line(383,230,395,212); outtextxy(403,216,' 2'); outtextxy(403,220,'1 + k '); outtextxy(403,226,' 1'); outtextxy(485,205,'-'); outtextxy(536,188,'_'); outtextxy(536,197,'y'); line(500,208,600,208); line(520,212,590,212); line(505,217,507,217); line(507,217,507,230); line(508,217,508,229); line(508,230,520,212); outtextxy(528,216,' 2'); outtextxy(528,220,'1 + k '); outtextxy(528,226,' 1'); outtextxy(345,236,' _ '); outtextxy(345,245,'z = z .'); outtextxy(315,260,'Подставив значения x, y, z из (5) в (1),'); outtextxy(10,270,'получаем уравнение прямой AB, в новой системе координат : ); outtextxy(10,280,'проекций П на новую плоскость проекций П : '); outtextxy(215,286,' _ _ '); outtextxy(215,295,' k (x - k y) '); outtextxy(215,298,' 2 1 '); line(355,306,455,306); line(375,310,445,310); line(360,315,362,315); line(362,315,362,328); line(363,315,363,327); line(363,328,375,310); outtextxy(215,292,' _ '); outtextxy(215,301,' y= '); outtextxy(215,303,' + b .'); outtextxy(215,307,' 2 '); outtextxy(215,314,' 2 '); outtextxy(215,319,' 1+k '); outtextxy(215,323,' 1 '); outtextxy(15,295,' b '); outtextxy(15,298,' 1 '); line(155,306,255,306); line(175,310,245,310); line(160,315,162,315); line(162,315,162,328); 45
line(163,315,163,327); outtextxy(15,292,' outtextxy(15,301,' outtextxy(15,314,' outtextxy(15,319,' outtextxy(15,323,' ent(7); if kod<>13 then exit; s:=s+1; end;
line(163,328,175,310); _ '); y= ; '); 2 '); 1+k '); 1 ');
procedure list5; begin setgraphmode(1); setfillstyle(1,0); bar(0,0,getmaxx,getmaxy); setcolor(8); setbkcolor(15); nazv1; ris1; niz; setcolor(8);setbkcolor(15); outtextxy(300,40,'2. Преобразовать прямую (AB) общего поло-'); outtextxy(315,50,'жения в проецирующую прямую. '); outtextxy(315,60,' { нажмите клавишу <enter> } '); ent(7); if kod<>13 then exit; ris2; ris3; outtextxy(315,80,' Задачу решаем композицией двух преобра-'); outtextxy(315,82,' _ _ '); outtextxy(315,91,'зований. Преобразованием f(П -> П )'); outtextxy(315,94,' 2 2 '); outtextxy(315,101,'прямую AB преобразуем в прямую уровня в'); outtextxy(315,103,' _ '); outtextxy(315,112,'системе П , П (см. задачу 1). '); outtextxy(315,115,' 1 2 '); outtextxy(315,125,' { нажмите клавишу <enter> } '); ent(7); if kod<>13 then exit; ris4; outtextxy(315,134,' _ _ '); outtextxy(315,136,' _ _ '); 46
outtextxy(315,145,' Вторым преобразованием f(П -> П ), где'); outtextxy(315,148,' 1 1 '); outtextxy(315,150,' _ '); outtextxy(315,152,' _ '); outtextxy(315,161,'новая плоскость проекций П выбирается'); outtextxy(315,163,' 1 '); outtextxy(315,165,' _ '); outtextxy(315,167,' __ _ '); outtextxy(315,176,'перпендикулярно AB (A B __ x ), в сис-'); outtextxy(315,179,' 2 2 21 '); line(523,173,523,183); outtextxy(315,181,' _ '); outtextxy(315,183,' _ _ '); outtextxy(315,192,'теме П ,П получаем проецирующую прямую.'); outtextxy(315,195,' 1 2 '); ent(7); if kod<>13 then exit; s:=s+1; end; procedure list6; begin setgraphmode(1); setfillstyle(1,0); bar(0,0,getmaxx,getmaxy); setcolor(8); nazv1; niz; ris31; outtextxy(380,40,'3. Преобразовать плоскость обще-'); outtextxy(395,50,'го положения в проецирующую. '); outtextxy(395,60,' { нажмите клавишу <enter> } '); ent(7); if kod<>13 then exit; ris32; outtextxy(380,80,' По условию задачи новая плос-'); outtextxy(395,90,'кость проекций должна быть'); outtextxy(395,100,'перпендикулярной данной плос-'); outtextxy(395,110,'кости Ф(A B C , A B C ). Это'); outtextxy(395,113,' 111 222 '); outtextxy(395,123,'условие будет выполнено, если'); outtextxy(395,133,'она будет перпендикулярна го-'); 47
outtextxy(395,143,'ризонтали плоскости Ф при за-'); outtextxy(395,144,' _ '); outtextxy(395,154,'мене плоскости П на П или'); outtextxy(395,157,' 2 2 '); outtextxy(395,167,'фронтали плоскости Ф при заме-'); outtextxy(395,169,' _ '); outtextxy(395,178,'не П на П .'); outtextxy(395,181,' 1 1 '); outtextxy(380,191,' На рисунке показано решение'); outtextxy(395,201,'этой задачи заменой горизон-'); outtextxy(395,211,'тальной плоскости проекций П '); outtextxy(395,214,' 1'); outtextxy(395,215,' _ '); outtextxy(395,225,'на новую плоскость проекций П '); outtextxy(395,228,' 1'); outtextxy(395,229,' _ _ '); outtextxy(395,238,'Здесь Ф __ П , так как П __ '); outtextxy(395,241,' 1 1 '); line(619,235,619,245); line(466,235,466,245); outtextxy(395,242,' _ '); outtextxy(395,251,'f Ф(x __ f ).'); outtextxy(395,254,' 21 2'); line(474,248,474,258); outtextxy(412,245,'_'); outtextxy(412,251,'_'); arc(411,251+4,90,270,3); outtextxy(395,264,' { нажмите клавишу <enter> } '); ent(7); if kod<>13 then exit; ris33; outtextxy(380,274,' _ '); outtextxy(380,284,' Построение новых проекций A ,'); outtextxy(380,287,' 1,'); outtextxy(395,288,'_ _ '); outtextxy(395,298,'B , C , точек A , B , C плос-'); outtextxy(395,301,' 1 1 1 1 1 '); outtextxy(395,311,'кости Ф ясно из рисунка.'); ent(7); if kod<>13 then exit; s:=s+1; end; 48
procedure list7; begin setgraphmode(1); setfillstyle(1,0); bar(0,0,getmaxx,getmaxy); setcolor(8); nazv1; niz; ris31; outtextxy(380,40,'4. Преобразовать плоскость обще-'); outtextxy(395,50,'го положения Ф(A, B, C) в пло-'); outtextxy(395,60,'скость уровня, т.е. определить'); outtextxy(395,70,'натуральные размеры треуголь-'); outtextxy(395,80,'ника ABC.'); outtextxy(395,90,' { нажмите клавишу <enter> } '); ent(7); if kod<>13 then exit; ris32; ris33; outtextxy(380,100,' Нетрудно показать, что реше-'); outtextxy(395,110,'ние этой задачи требует пос-'); outtextxy(395,120,'ледовательного выполнения двух'); outtextxy(395,130,'замен плоскостей проекций(ком-'); outtextxy(395,140,'позиции двух преобразований ),'); outtextxy(395,150,'так как невозможно выбрать но-'); outtextxy(395,160,'вую плоскость проекций, кото-'); outtextxy(395,170,'рая была бы одновременно па-'); outtextxy(395,180,'ралллельной плоскости Ф и пер-'); outtextxy(395,190,'пендикулярной одной из плос-'); outtextxy(395,200,'костей проекций исходной сис-'); outtextxy(395,210,'темы П , П .'); outtextxy(395,213,' 1 2 '); outtextxy(380,223,' Поэтому первой заменой '); outtextxy(395,225,'_ _ '); outtextxy(395,234,'f(П -> П ) плоскость Ф преоб-'); outtextxy(395,237,' 1 1 '); outtextxy(395,247,'разуем в проецирующую в сис-'); outtextxy(395,249,' _ '); outtextxy(395,258,'теме П , П (см. задачу 3). '); outtextxy(395,261,' 2 1 '); outtextxy(395,271,' { нажмите клавишу <enter> } '); ent(7); if kod<>13 then 49
exit; ris34; outtextxy(380,279,' _ _ '); outtextxy(380,281,' _ _ '); outtextxy(380,291,' Второй заменой f(П -> П ),'); outtextxy(380,294,' 2 2 '); outtextxy(395,292,' _ '); outtextxy(395,294,' _ '); outtextxy(395,303,'где П || Ф, приводим ее в по-'); outtextxy(395,305,' 2 '); outtextxy(395,315,'ложение плоскости уровня в'); outtextxy(395,317,' _ '); outtextxy(395,319,' _ _ '); outtextxy(395,328,'системе П , П .'); outtextxy(395,331,' 1 2 '); ent(7); if kod<>13 then exit; s:=s+1; end; procedure ris2_1; begin setcolor(8); Line(20*3,25+14*4,20*6+5,25+14*2); {A2B2} Line(20*3,26+14*4,20*6+5,26+14*2); Line(20*3,27+14*4,20*6+5,27+14*2); Line(20*3,27+14*8+2,20*6+5,27+14*6); {A1B2} Line(20*3,25+14*8+2,20*6+5,25+14*6); Line(20*3,26+14*8+2,20*6+5,26+14*6); Line(20*3,26+14*4,20*3,26+14*8+2); {A1A2} Line(20*6+5,26+14*2,20*6+5,26+14*6); {B1B2} t_ka(20*3,26+14*4); {A2} t_ka(20*3,26+14*8+2); {A1} t_ka(20*6+5,26+14*2); {B2} t_ka(6*20+5,26+14*6); {B1} outtextxy(20*2,26+14*3,'A'); outtextxy(20*2+10,26+14*3+3,'2'); outtextxy(20*6,26+14*1,'B'); outtextxy(20*6+10,26+14*1+3,'2'); outtextxy(20*2,26+14*8+3,'A'); outtextxy(20*2+8,26+14*8+6,'1'); outtextxy(6*20+5,26+14*6+4,'B'); outtextxy(6*20+13,26+14*6+7,'1'); end; procedure ris2_2; begin setcolor(8); Line(20*8+10,25+14*6,20*12+8,25+14*6); {A_1B_1} 50
Line(20*8+10,26+14*6,20*12+8,26+14*6); Line(20*8+10,27+14*6,20*12+8,27+14*6); Line(20*5-3,26+14*7-7,20*5+7,26+14*7); Line(20*10+7,26+14*6-3,20*10+13,26+14*6+3); t_ka(20*8+10,26+14*6); {A_1} t_ka(20*12+8,26+14*6); {B_1} outtextxy(20*8,26+14*6+7,'A'); outtextxy(20*8+8,26+14*6+10,'1'); outtextxy(20*12+3,26+14*6+8,'B'); outtextxy(20*12+11,26+14*6+11,'1'); outtextxy(20*8,26+14*6-3,'_'); outtextxy(20*12+3,26+14*6-2,'_'); end; procedure ris2_3; begin setcolor(8); Line(1*20+10,26+14*2,20*12+8,26+14*2); Line(1*20+10,26+14*4,20*11+6,26+14*4); Line(20*8+10,25+14*4,20*12+8,25+14*2); {A_2B_2} Line(20*8+10,26+14*4,20*12+8,26+14*2); Line(20*8+10,27+14*4,20*12+8,27+14*2); Line(20*8+10,26+14*6,20*8+10,26+14*4); {A_2A_1} Line(20*12+8,26+14*6,20*12+8,26+14*2); {B_2B_1} Line(20*7,26+14*4-3,20*8-5,26+14*4); {стрелки} Line(20*7,26+14*4+3,20*8-5,26+14*4); Line(20*8-15,26+14*2-3,20*8,26+14*2); Line(20*8-15,26+14*2+3,20*8,26+14*2); arc(20*6+5,26+14*4,270,360,12); putpixel(20*6+10,26+14*4+4,14); circle(20*6+10,26+14*4+4,1); arc(20*8,26+14*4,0,20,50); t_ka(20*8+10,26+14*4); {A_2} t_ka(20*12+8,26+14*2); {B_2} t_ka(20*8+10,26+14*6); {A_1} t_ka(20*12+8,26+14*6); {B_1} t_ka(20*3,26+14*4); {A2} t_ka(20*6+5,26+14*2); {B2} outtextxy(20*7+10,26+14*3,'A'); outtextxy(20*8,26+14*3+3,'2'); outtextxy(20*12+3,26+14*1,'B'); outtextxy(20*12+13,26+14*1+3,'2'); outtextxy(20*12+3,26+14*1-9,'_'); outtextxy(20*7+10,26+14*3-9,'_'); outtextxy(20*1-10,26+14*2-7,'W'); outtextxy(20*1,26+14*2-3,'2'); outtextxy(20*1-10,26+14*4-7,'Ф'); outtextxy(20*1,26+14*4-3,'2'); outtextxy(20*11-5,26+14*3+3,'q'); end; procedure ris2_4; begin setcolor(8); Line(20*17-8,26+14*1-3,20*17-8,26+14*6); 51
Line(20*17-7,26+14*1-3,20*17-7,26+14*5+2); Line(20*17-9,26+14*1-3,20*17-9,26+14*5+2); Line(20*12+8,26+14*6,20*19,26+14*6); Line(20*11-4,26+14*3-8,20*11+7,26+14*3-1); Line(20*11,26+14*3-10,20*11+11,26+14*3-3); Line(20*17-12,26+14*3-4,20*17-3,26+14*3+4); Line(20*17-12,26+14*3-1,20*17-3,26+14*3+7); arc(20*12+8,26+14*6,0,90,12); putpixel(20*12+12,26+14*6-4,14); circle(20*12+12,26+14*6-4,1); Line(20*15-15,26+14*6-3,20*15,26+14*6); Line(20*15-15,26+14*6+3,20*15,26+14*6); t_ka(20*17-8,26+14*5+2); {A__2} t_ka(20*17-8,26+14*1-3); {B__2} t_ka(20*17-8,26+14*6); {A__1} t_ka(20*12+8,26+14*6); {B_1} outtextxy(20*19-10,26+14*6-11,'S'); outtextxy(20*19,26+14*6-8,'1'); outtextxy(20*17,26+14*1-10,'='); outtextxy(20*17,26+14*1-3,'B'); outtextxy(20*17+8,26+14*1,'2'); outtextxy(20*17+8,26+14*5+3,'1'); outtextxy(20*17,26+14*5-7,'='); outtextxy(20*17,26+14*5,'A'); outtextxy(20*16,26+14*6+1,'= ='); outtextxy(20*16,26+14*6+8,'A = B '); outtextxy(20*16,26+14*6+11,' 1 1'); end; procedure ris2_31; begin setcolor(8); line(20*3,25+14*7,20*7-4,25+14*6+5); {A1B1} line(20*3,26+14*7,20*7-4,26+14*6+5); line(20*3,27+14*7,20*7-4,27+14*6+5); line(20*7-3,26+14*6+5,20*9-7,26+14*9); {B1C1} line(20*7-4,26+14*6+5,20*9-8,26+14*9); line(20*7-5,26+14*6+5,20*9-9,26+14*9); line(20*7-2,26+14*6+5,20*9-6,26+14*9); line(20*3,25+14*7,20*9-8,25+14*9); {A1C1} line(20*3,26+14*7,20*9-8,26+14*9); line(20*3,27+14*7,20*9-8,27+14*9); line(20*3,25+14*3+3,20*7-4,25+14*2-2); {A2B2} line(20*3,26+14*3+3,20*7-4,26+14*2-2); line(20*3,27+14*3+3,20*7-4,27+14*2-2); line(20*7-3,26+14*2-2,20*9-7,26+14*4+6); {B2C2} line(20*7-4,26+14*2-2,20*9-8,26+14*4+6); line(20*7-5,26+14*2-2,20*9-9,26+14*4+6); line(20*7-2,26+14*2-2,20*9-6,26+14*4+6); line(20*3,25+14*3+3,20*9-8,25+14*4+6); {A2C2} 52
line(20*3,26+14*3+3,20*9-8,26+14*4+6); line(20*3,27+14*3+3,20*9-8,27+14*4+6); line(20*3,26+14*7,20*3,26+14*3+3); {A1A2} line(20*7-4,26+14*6+5,20*7-4,26+14*2-2); {B1B2} line(20*9-8,26+14*9,20*9-8,26+14*4+6); {C1C2} t_ka(20*3,26+14*7); {A1} t_ka(20*3,26+14*3+3); {A2} t_ka(20*7-4,26+14*2-2); {B2} t_ka(20*7-4,26+14*6+5); {B1} t_ka(20*9-8,26+14*4+6); {C2} t_ka(20*9-8,26+14*9); {C1} outtextxy(20*6,26+14*1-1,'B'); outtextxy(20*6+10,26+14*1+2,'2'); outtextxy(20*2,26+14*3-1,'A'); outtextxy(20*2+10,26+14*3+2,'2'); outtextxy(20*2+10,26+14*7+3,'A'); outtextxy(20*3,26+14*7+6,'1'); outtextxy(20*6-1,26+14*5+5,'B'); outtextxy(20*6+7,26+14*5+8,'1'); outtextxy(20*9-1,26+14*4+2,'C'); outtextxy(20*9+9,26+14*4+5,'2'); outtextxy(20*9-5,26+14*9+4,'C'); outtextxy(20*9+5,26+14*9+7,'1'); end; procedure ris2_32; begin setcolor(8); line(20*12+4,26+14*5+3,20*13-1,26+14*1+1); {B_2A_2} line(20*12+5,26+14*5+3,20*13,26+14*1+1); line(20*12+6,26+14*5+3,20*13+1,26+14*1+1); line(20*13-1,26+14*1+1,20*15-2,26+14*7-5); {A_2C_2} line(20*13,26+14*1+1,20*15-1,26+14*7-5); line(20*13+1,26+14*1+1,20*15,26+14*7-5); line(20*15-1,25+14*7-5,20*12+5,25+14*5+3); {C_2B_2} line(20*15-1,26+14*7-5,20*12+5,26+14*5+3); line(20*15-1,27+14*7-5,20*12+5,27+14*5+3); line(20*12+4,26+14*6+5,20*15-2,26+14*9); {B_1C_1} line(20*12+5,26+14*6+5,20*15-1,26+14*9); line(20*12+6,26+14*6+5,20*15,26+14*9); line(20*12+7,26+14*6+5,20*15+1,26+14*9); line(20*2,26+14*9,20*15-1,26+14*9); line(20*2,26+14*6+5,20*12+5,26+14*6+5); line(20*2,26+14*7,20*13,26+14*7); line(20*10,26+14*9,20*10-10,26+14*9-3); line(20*10,26+14*9,20*10-10,26+14*9+3); line(20*10,26+14*7,20*10-10,26+14*7-3); line(20*10,26+14*7,20*10-10,26+14*7+3); line(20*10,26+14*6+5,20*10-10,26+14*6+2); line(20*10,26+14*6+5,20*10-10,26+14*6+8); line(20*12+5,26+14*6+5,20*12+5,26+14*5+3); {B_1B_2} line(20*15-1,26+14*9,20*15-1,26+14*7-5); {C_1C_2} line(20*13,26+14*7,20*13,26+14*1+1); 53
line(20*3,26+14*3+3,20*9,26+14*2+4); {f2} line(20*7+7,26+14*3-6,20*7+7,26+14*7); {1211} t_ka(20*7-4,26+14*6+5); {B1} t_ka(20*3,26+14*7); {A1} t_ka(20*12+5,26+14*5+3); {B_2} t_ka(20*13,26+14*1+1); {A_2} t_ka(20*15-1,26+14*7-5); {C_2} t_ka(20*13,26+14*7); {A_1} t_ka(20*15-1,26+14*9); {C_1} t_ka(20*12+5,26+14*6+5); {B_1} t_ka(20*9-8,26+14*9); {C1} t_ka(20*7+7,26+14*3-6); {12} t_ka(20*7+7,26+14*7); {11} t_ka(20*13,26+14*6-6); {1_2} t_ka(20*3,26+14*3+3); {A2} outtextxy(20*12-2,26+14*1-4,'A'); outtextxy(20*12+6,26+14*1-1,'2'); outtextxy(20*12-2,26+14*1-13,'_'); outtextxy(20*13+2,26+14*4-4,'f'); outtextxy(20*13+10,26+14*4-1,'2'); outtextxy(20*13+2,26+14*4-13,'_'); outtextxy(20*13+2,26+14*6+3,'1'); outtextxy(20*13+10,26+14*6+6,'2'); outtextxy(20*13+2,26+14*6-6,'_'); outtextxy(20*11+2,26+14*5-7,'B'); outtextxy(20*11+10,26+14*5-4,'2'); outtextxy(20*11+2,26+14*5-16,'_'); outtextxy(20*11+2,26+14*6-7,'B'); outtextxy(20*11+10,26+14*6-4,'1'); outtextxy(20*11+2,26+14*6-16,'_'); outtextxy(20*11+2,26+14*8-8,'A =f'); outtextxy(20*11+10,26+14*8-5,'1 1'); outtextxy(20*11+2,26+14*8-17,'_ _'); outtextxy(20*9+2,26+14*2+1,'f'); outtextxy(20*9+10,26+14*2+4,'2'); outtextxy(20*7+2,26+14*2-6,'1'); outtextxy(20*7+10,26+14*2-3,'2'); outtextxy(20*7-8,26+14*8-10,'1'); outtextxy(20*7,26+14*8-7,'1'); outtextxy(20*9-6,26+14*8-10,'f'); outtextxy(20*9+2,26+14*8-7,'1'); outtextxy(20*15+3,26+14*7,'C'); outtextxy(20*15+11,26+14*7+3,'2'); outtextxy(20*15+3,26+14*7-9,'_'); outtextxy(20*15+5,26+14*9,'C'); outtextxy(20*15+13,26+14*9+3,'1'); outtextxy(20*15+5,26+14*9-9,'_'); outtextxy(20*1,26+14*9-4,'Г'); outtextxy(20*1+8,26+14*9-1,'1'); outtextxy(20*1,26+14*7-4,'Ф'); outtextxy(20*1+8,26+14*7-1,'1'); outtextxy(20*1,26+14*6-4,'W'); outtextxy(20*1+8,26+14*6-1,'1'); end; procedure ris2_33; begin setcolor(8); line(20*18,26+14*5+3,20*19+1,26+14*1+1); {B__2A__2} line(20*18-1,26+14*5+3,20*19,26+14*1+1); line(20*18-2,26+14*5+3,20*19-1,26+14*1+1); line(20*19+1,26+14*1+1,20*22-4,26+14*7-5); {A__2C__2} line(20*19,26+14*1+1,20*22-5,26+14*7-5); line(20*19-1,26+14*1+1,20*22-6,26+14*7-5); line(20*22-5,25+14*7-5,20*18-1,25+14*5+3); {C__2B__2} 54
line(20*22-5,26+14*7-5,20*18-1,26+14*5+3); line(20*22-5,27+14*7-5,20*18-1,27+14*5+3); line(20*18-1,25+14*8,20*22-5,25+14*8); {B__1C__1} line(20*18-1,26+14*8,20*22-5,26+14*8); line(20*18-1,27+14*8,20*22-5,27+14*8); line(20*23-1,26+14*5+3,20*12+5,26+14*5+3); {B__2B_2} line(20*23,26+14*1+1,20*13,26+14*1+1); {A__2A_2} line(20*23,26+14*7-5,20*15-1,26+14*7-5); {C__2C_2} line(20*18-1,26+14*8,20*18-1,26+14*5+3); {B__1B__2} line(20*19,26+14*8,20*19,26+14*1+1); {A__1A__2} line(20*22-5,26+14*8,20*22-5,26+14*7-5); {C__1C__2} line(20*17,26+14*1+1,20*17-10,26+14*1-2); line(20*17,26+14*1+1,20*17-10,26+14*1+4); line(20*17,26+14*5+3,20*17-10,26+14*5); line(20*17,26+14*5+3,20*17-10,26+14*5+6); line(20*17,26+14*7-5,20*17-10,26+14*7-8); line(20*17,26+14*7-5,20*17-10,26+14*7-2); line(20*18-4,26+14*7+7,20*18-1,26+14*7); line(20*18+2,26+14*7+7,20*18-1,26+14*7); line(20*19-3,26+14*7+7,20*19,26+14*7); line(20*19+3,26+14*7+7,20*19,26+14*7); line(20*22-8,26+14*7+7,20*22-5,26+14*7); line(20*22-2,26+14*7+7,20*22-5,26+14*7); arc(20*18-1,26+14*8,0,90,12); circle(20*18+4,26+14*8-4,1); putpixel(20*18+4,26+14*8-4,14); line(20*13+12,26+14*7+4,20*13+5,26+14*8-4); line(20*20,26+14*8-4,20*20-5,26+14*8+4); t_ka(20*12+5,26+14*5+3); {B_2} t_ka(20*18-1,26+14*8); {B__1} t_ka(20*18-1,26+14*5+3); {B__2} t_ka(20*19,26+14*8); {A__1} t_ka(20*19,26+14*1+1); {A__2} t_ka(20*22-5,26+14*8); {C__1} t_ka(20*22-5,26+14*7-5); {C__2} t_ka(20*13,26+14*1+1); {A_2} t_ka(20*15-1,26+14*7-5); {C_2} outtextxy(20*17+1,26+14*5-8,'B'); outtextxy(20*17+9,26+14*5-5,'2'); outtextxy(20*17+1,26+14*5-17,'_'); outtextxy(20*17+1,26+14*5-20,'_'); outtextxy(20*18+1,26+5,'A'); outtextxy(20*18+9,26+8,'2'); outtextxy(20*18+1,26-6,'_'); outtextxy(20*18+1,26-4,'_'); outtextxy(20*22-2,26+14*6-2,'C'); outtextxy(20*22+6,26+14*6+1,'2'); outtextxy(20*22-2,26+14*6-13,'_'); outtextxy(20*22-2,26+14*6-11,'_'); outtextxy(20*17+1,26+14*9-8,'B'); outtextxy(20*17+9,26+14*9-5,'1'); outtextxy(20*17+1,26+14*9-17,'_'); outtextxy(20*17+1,26+14*9-20,'_'); outtextxy(20*22+1,26+14*9-8,'C'); outtextxy(20*22+9,26+14*9-5,'1'); outtextxy(20*22+1,26+14*9-17,'_'); outtextxy(20*22+1,26+14*9-20,'_'); outtextxy(20*18+16,26+14*9-5,'A'); outtextxy(20*18+24,26+14*9-2,'1'); outtextxy(20*18+16,26+14*9-14,'_'); outtextxy(20*18+16,26+14*9-17,'_'); 55
outtextxy(20*23+5,26+14*7-9,'Г'); outtextxy(20*23+13,26+14*7-6,'1'); outtextxy(20*23+5,26+14*5-1,'Ф'); outtextxy(20*23+13,26+14*5+2,'1'); outtextxy(20*23+5,26+14*6-5,'_'); outtextxy(20*23+5,26+14*4+3,'_'); outtextxy(20*23+5,26+14*1-4,'W'); outtextxy(20*23+13,26+14*1-1,'1'); outtextxy(20*23+5,26,'_'); end; procedure ris2_34; begin setcolor(8); arc(20*18-1,26+14*5+3,40,110,43); arc(20*19,26+14*1+1,220,288,43); line(20*17+1,26+14*3-4,20*21-3,26+14*4-2); arc(20*22-5,26+14*7-5,91,145,61); arc(20*19,26+14*1+1,273,326,61); line(20*19+4,26+14*5-6,20*22-7,26+14*3+1); line(20*20+11,26+14*4-3,20*20+11,26+14*8); line(20*14+2,26+14*4-3,20*14+2,26+14*8+3); line(20*14+2,26+14*4-3,20*20+11,26+14*4-3); line(20*6-4,26+14*8+3,20*14+2,26+14*8+3); line(20*6-4,26+14*4,20*6-4,26+14*8+3); line(20*16,26+14*4-3,20*16+10,26+14*4-6); line(20*16,26+14*4-3,20*16+10,26+14*4); line(20*10,26+14*8+3,20*10+10,26+14*8); line(20*10,26+14*8+3,20*10+10,26+14*8+6); line(20*20+11-3,26+14*6-7,20*20+11,26+14*6); line(20*20+11+3,26+14*6-7,20*20+11,26+14*6); line(20*6-4-3,26+14*5+3,20*6-4,26+14*5-4); line(20*6-4+3,26+14*5+3,20*6-4,26+14*5-4); t_ka(20*14+2,26+14*8+3); {O_1} t_ka(20*6-4,26+14*8+3); {O1} t_ka(20*6-4,26+14*4); {O2} t_ka(20*14+2,26+14*4-3); {O_2} t_ka(20*20+11,26+14*4-3); {O__2} t_ka(20*20+11,26+14*8); {O__1} outtextxy(20*21+1,26+14*4+5,'O'); outtextxy(20*21+9,26+14*4+8,'2'); outtextxy(20*21+1,26+14*4-6,'_'); outtextxy(20*21+1,26+14*4-4,'_'); outtextxy(20*21-10,26+14*8+8,'O'); outtextxy(20*21-2,26+14*8+11,'1'); outtextxy(20*21-10,26+14*8-3,'_'); outtextxy(20*21-10,26+14*8-1,'_'); outtextxy(20*14+1,26+14*3,'O'); outtextxy(20*14+9,26+14*3+3,'2'); outtextxy(20*14+1,26+14*2+5,'_'); outtextxy(20*14+5,26+14*7+8,'O'); outtextxy(20*14+11,26+14*7+11,'1'); outtextxy(20*14+5,26+14*7-3,'_'); outtextxy(20*5,26+14*8+2,'O'); outtextxy(20*5+7,26+14*8+6,'1'); outtextxy(20*5-1,26+14*4+2,'O'); outtextxy(20*5+7,26+14*4+6,'2'); end; 56
procedure list21; begin setgraphmode(1); setfillstyle(1,0); bar(0,0,getmaxx,getmaxy); setcolor(8); nazv2; setcolor(8); niz; outtextxy(10,50,' П л о с к о п а р а л л е л ь н ы м движением фигуры в пространстве назы-'); outtextxy(10,60,'вается такое ее перемещение, при котором все точки фигуры перемещаются в па-'); outtextxy(10,70,'раллельных плоскостях.'); outtextxy(10,90,' Теорема о плоскопараллельном перемещении относительно П : при плоскопаралле-'); outtextxy(10,93,' 1 '); outtextxy(10,103,'льном движении фигуры относительно горизонтальной плоскости проекций фрон-'); outtextxy(10,113,'тальные проекции ее точек перемещаются по прямым, перпендикулярным линиям'); outtextxy(10,123,'связи, а горизонтальная проекция фигуры остается конгруэнтной самой себе. '); outtextxy(10,143,' Теорема о плоскопараллельном перемещении относительно П : при плоскопаралле-'); outtextxy(10,146,' 2 '); outtextxy(10,156,'льном движении фигуры относительно фронтальной плоскости проекций горизон-'); outtextxy(10,166,'тальные проекции ее точек перемещаются по прямым, перпендикулярным линиям'); outtextxy(10,176,'связи, а фронтальная проекция фигуры остается конгруэнтной самой себе. '); ent(5); if kod<>13 then exit; s:=s+1; end; procedure list22; begin setgraphmode(1); setfillstyle(1,0); bar(0,0,getmaxx,getmaxy); 57
setcolor(8); nazv2; niz; ris2_1; outtextxy(10,160,'1. Преобразовать прямую общего положения в прмую уровня - фронталь. '); outtextxy(395,170,' { нажмите клавишу <enter> } '); ent(5); if kod<>13 then exit; ris2_2; outtextxy(10,190,' Выполним плоскопараллельное движение прямой AB относительно горизонтальной'); outtextxy(10,192,' __ '); outtextxy(10,201,'плоскости проекций. Так как прямая AB должна быть фронталью, то ее горизон-'); outtextxy(10,203,' __ '); outtextxy(10,212,'тальную проекцию A B расположим перпендикулярно линиям связи. При этом сог-'); outtextxy(10,215,' 11 '); outtextxy(10,216,' __ '); outtextxy(10,226,'ласно теореме горизонтальные проекции A B , A B отрезка [AB] и его образа'); outtextxy(10,229,' 11 11 '); outtextxy(10,231,' __ '); outtextxy(10,240,'[AB] должны быть конгруэнтны.'); outtextxy(395,250,' { нажмите клавишу <enter> } '); ent(5); if kod<>13 then exit; ris2_3; outtextxy(10,270,' Фронтальные проекции A , B точек A, B перемещаются соответственно по пря-'); outtextxy(10,280,'мым Ф , W - вырожденным проекциям горизонтальных плоскостей уровня Ф, W, в'); outtextxy(10,283,' 2 2 '); outtextxy(10,293,'которых перемещаются точки A, B.'); outtextxy(10,303,' В результате выполненного плоскопараллельного движения определим натуральную'); outtextxy(10,305,' __ '); outtextxy(10,314,'величину отрезка AB(|AB| = A B ) и угол q его наклона к горизонтальной'); outtextxy(10,317,' 22 '); outtextxy(10,327,'плоскости проекций.'); 58
ent(5); if kod<>13 then exit; s:=s+1; end; procedure list23; begin setgraphmode(1); setfillstyle(1,0); bar(0,0,getmaxx,getmaxy); setcolor(8); nazv2; niz; ris2_1; outtextxy(10,160,'2. Преобразовать прямую (AB) общего положения в горизонтальную проецирующую'); outtextxy(10,170,'прямую.'); outtextxy(395,170,' { нажмите клавишу <enter> } '); ent(5); if kod<>13 then exit; ris2_2; ris2_3; outtextxy(10,190,' Задача решается композицией двух преобразований. Сначала плоскопараллельным'); outtextxy(10,200,'движением относительно П прямую AB преобразуем во фронтальную прямую уровня'); outtextxy(10,203,' 1 '); outtextxy(10,205,'__ '); outtextxy(10,214,'AB (см. задачу 1).'); outtextxy(395,214,' { нажмите клавишу <enter> } '); ent(5); if kod<>13 then exit; ris2_4; outtextxy(10,226,' __ '); outtextxy(10,234,' Затем плоскопараллельным движением относительно П прямую AB преобразуем в'); outtextxy(10,237,' 2 '); outtextxy(10,237,' __ __ '); outtextxy(10,239,' __ __ __ '); outtextxy(10,248,'горизонтально проецирующую прямую AB. При этом | A B | = | A B |, горизон-'); 59
outtextxy(10,251,' 22 22 '); outtextxy(10,253,' _ _ _ _ '); outtextxy(10,262,'тальные проекции A , B точек A, B перемещаются по прямой S - вырожденной'); outtextxy(10,265,' 1 1 1 '); outtextxy(10,267,' _ _ '); outtextxy(10,276,'проекции фронтальной плоскости уровня S, в которой перемещаются точки A, B. '); ent(5); if kod<>13 then exit; s:=s+1; end; procedure list24; begin setgraphmode(1); setfillstyle(1,0); bar(0,0,getmaxx,getmaxy); setcolor(8); nazv2; niz; ris2_31; outtextxy(10,170,'3. Построить центр O окружности m, описанной около треугольника ABC. '); outtextxy(395,180,' { нажмите клавишу <enter> } '); ent(5); if kod<>13 then exit; ris2_32; outtextxy(10,200,' Для решения этой задачи необходимо плоскость ABC общего положения преобразо-'); outtextxy(10,210,'вать в плоскость уровня, построить здесь искомую точку и обратным преобразо-'); outtextxy(10,220,'ванием нацти ее проекции на исходном чертеже.'); outtextxy(10,230,' Одним плоскопараллельным движением плоскость общего положения нельзя преоб-'); outtextxy(10,240,'разовать в плоскость уровня. Поэтому выполним последовательно два плоскопарал-'); outtextxy(10,250,'лельных движения треугольника ABC: сначала относительно фронтальной плоскости'); outtextxy(10,260,'проекций, затем относительно плоскости П .'); 60
outtextxy(10,263,' 1 '); outtextxy(10,266,' _ '); outtextxy(10,275,' При первом плоскопараллельном движении u плоскость треугольника ABC преобра-'); outtextxy(10,276,' ___ '); outtextxy(10,285,'зуем в проецирующую плоскость. Для этого фронтальную проекцию A B C образа'); outtextxy(10,288,' 222 '); outtextxy(10,288,' __ _ '); outtextxy(10,298,'расположим так, чтобы фронталь f(f , f ) стала горизонтально проецирующей. При'); outtextxy(10,301,' 1 2 '); outtextxy(10,301,' ___ '); outtextxy(10,310,'этом |A B C | = |A B C |, а горизонтальные проекции A , B , C вершин A, B, C'); outtextxy(10,313,' 222 222 1 1 1 '); outtextxy(10,322,'треугольника опишут соответственно прямые Ф , W , Г вырожденные проекции'); outtextxy(10,325,' 1 1 1 '); outtextxy(10,332,'фронтальных плоскостей уровня, проведенных через эти вершины.'); ent(5); if kod<>13 then exit; s:=s+1; end; procedure list25; begin setgraphmode(1); setfillstyle(1,0); bar(0,0,getmaxx,getmaxy); setcolor(8); nazv2; niz; ris2_31; ris2_32; ris2_33; outtextxy(10,164,' = --- '); outtextxy(10,170,' Вторым плоскопараллельным движением u относительно П треугольник ABC пре-'); outtextxy(10,173,' 1 '); outtextxy(10,178,' === '); outtextxy(10,185,'образуем в треугольник ABC, расположенный во фронтальной плоскости уровня.'); 61
outtextxy(10,193,' -- == '); outtextxy(10,200,'При этом отрезки B C , B C конгруэнтны, и последний располагаем перпенди-'); outtextxy(10,203,' 11 11 '); outtextxy(10,208,' === '); outtextxy(10,215,'кулярно линиям связи. Поэтому фронтальная проекция A B C определяет нату-'); outtextxy(10,218,' 222 '); outtextxy(10,228,'ральные размеры треугольника ABC.'); outtextxy(395,238,' { нажмите клавишу <enter> } '); ent(5); if kod<>13 then exit; ris2_34; outtextxy(10,252,' = = '); outtextxy(10,259,' Известными построениями находим фронтальную проекцию O центра O искомой'); outtextxy(10,261,' 2 '); outtextxy(10,266,' = '); outtextxy(10,273,'окружности, по линиям связи находим его горизонтальную проекцию O . Обрат-'); outtextxy(10,276,' 1 '); outtextxy(10,281,' = '); outtextxy(10,285,' -1 -1 '); outtextxy(10,289,'ными преобразованиями u , u находим проекции O , O центра O описанной'); outtextxy(10,292,' 1 2 '); outtextxy(10,302,'вокруг треугольника ABC окружности.'); ent(5); if kod<>13 then exit; s:=s+1; end; procedure menu(var ukaz:integer); var s:array[1..4] of string; begin clrscr; textcolor(5); textbackground(7); S[1]:=' Способ замены плоскостей. '; S[2]:='Графическое решение основных задач.'; S[3]:=' ВЫХОД '; 62
for i:=1 to 3 do begin gotoXY(25,5+i); writeln(s[i]); end; ukaz:=1; repeat gotoXY(25,5+ukaz); textcolor(7); textbackground(5); write (s[ukaz]); kod:=ord(readkey); gotoXY(25,5+ukaz); textcolor(5); textbackground(7); write(s[ukaz]); case kod of 80:ukaz:=ukaz+1; 72:ukaz:=ukaz-1; 27:halt; end; if ukaz<1 then ukaz:=3; if ukaz>3 then ukaz:=1; until kod=13; end; BEGIN repeat textbackground(0);clrscr; menu (ukaz); textbackground(0); case ukaz of 1: begin s:=1; otkr_gr; repeat case s of 1: list1; 2: list2; 3: list3; 4: list4; 5: list5; 6: list6; 7: list7; end; if kod=27 then 63
s:=8; until s=8; closegraph; end; 2: begin s:=1; otkr_gr; repeat case s of 1: list21; 2: list22; 3: list23; 4: list24; 5: list25; end; if kod=27 then s:=6; until s=6; closegraph; end; end; until ukaz=3; END.
64