ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.03.2024
Просмотров: 96
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Получится (формула приведена не полностью, из-за своего большого размера): c1 2
:=
c2 4
:=
r
10
:=
a
0.5
:=
Z b
( )
1 2 a
2 1
+
(
)
⋅
2
− a
⋅ b
⋅
2 c2
⋅
a
⋅
+
2 c1
⋅
+
2 2
− a
⋅ b
⋅ c1
⋅
2 c2
⋅
a
⋅ c1
⋅
a
−
+
⎛
⎝
⋅
+
⎡
⎢
⎢
⎣
⋅
1 2 a
2 1
+
(
)
⋅
⋅
⎡⎢
⎢
⎢
⎢
⎢
⎢
2
− a
⋅ b
⋅
2 c
⋅
a
⋅
+
2 c
⋅
2 2
− a
⋅ b
⋅ c
⋅
2 c
⋅
a
⋅ c
⋅
2 1
1 2
1
⋅
−
+
⎡
⎢
⎢
⎣
⎢
⎛
⎝
a
−
+
⎢
⎣
:=
… (4.12)
Мы выводили ф-лу (4.3) для определения координат двух точек пе- ресечения окружности прямой линией. Пока прямая проходит через точ- ки внутри окружности, таких точек действительно будет две, и они должны иметь различные координаты. Если прямую смещать так, как по- казано стрелкой на рис. 4.2, то точки пересечения будут сближаться, а за- тем сольются в одну (это и будет точкой касания), и их координаты будут одинаковыми.
Проверим, получились ли одинаковые числа в строках матрицы (4.12). Наберите
Z b1 a c 1
,
c 2
,
r
,
(
)
(
)
=
r и
Z b2 a c 1
,
c 2
,
r
,
(
)
(
)
=
Если окажется, что первая и вторая строки у каж- дой матрицы одинаковые, то это убедит Вас в правильности нахождения точек касания. рдинаты точек касания.
роения графика
. Для построения графика нужно нау- читься строить окружность. Это можно сделать разными способами, са- мый простой из которых – использовать параметрическое представление окружности:
Задаться значениями угла поворота радиуса окружнос тра
2) Реализация проверки с помощью графика.
Построим график и укажем на нем не только ок- ружность и касательные к ней (если получатся правильно), но и коо
Рис. 4.2. Сближение точек пересечения.
Фаза
1 пост
ти вокруг цен- в пределах от 0 до 2
⋅π:
ϕ
0 0.01
,
2
π
⋅
:=
(это и будет один параметров; второй параметр – радиус ок- ружности).
Абсцисса с учетом того, что координаты центра окружно равны из наших сти
142
(с ,
1
с
2
), вычисляется так: r cos
ϕ
( )
⋅
c 1
+
(эту формулу не набирайте, покажем ее прямо на графике).
Ордината с учетом того, что координаты центра окружности равны
(с
1
, с
2
), вычисляется так: r sin
ϕ
( )
⋅
c
+ 2
(эту он графика (можно из меню Insert – Graph – шите формулы, как показано на рис. 4.3-а. формулу тоже не набирайте, покажем ее прямо на графике).
Теперь образуйте шабл
XY plot
; лучше (быстрее) клавишами <Shift>+<2>) и в слоты абсциссы и ординаты впи
Рис. 4.3. Начальный этап построения графика для проверки правильности расчетов: а) график окружности, ) отметка центра окружн сти.
Приведите график к надлежащему виду, введя нужные опции щелч- ком мыши по полю графика: нанесите сетку (опция XY-axes, включите
Grid lines
, отключите AutoGrid и введите число градаций сетки – на- пример, 4 на каждой из осей); перейдите к «русской» форме указания ко- ординат (опция XY-axes, кнопка Crossed). Добейтесь, чтобы график вы- глядел так, как на рис. 4.3.
Укажите (точкой) центр графика. Для этого введите дополнительные координаты (как б
о на рис. 4.3-б). Способ ввода: охватите уже имеющуюся подп нажмите запятую. Появится новый слот, в кото ке Color выберите б) а) ись оси синим контуром и рый можно ввести новые координаты. Укажите, что вывод нужно сделать точкой. Для этого щелчком мыши вызовите опции графика, вы- берите вкладку Traces (линии графика), перейдите ко второй строке
(trace 2), откройте список типов Types (типы линий) и выберите points
(точки). В списке Width (ширина) выберите 3, в спис
143
цвет
1 построения графика завершена.
Фаза
2 построения графика. Представим графически прямые, кото- рые (как мы предполагаем) должны касаться окружности в двух точках по разные стороны диаметра. Для этого введем диапазон и шаг измене- ния аргумента x:
, какой хотите. Нажмите OK. Должно получиться как на рис. 4.3-б.
Фаза
x r
−
c 1
+
r
−
c 1
+
0.01
+
,
r c 1
+
:=
оготочие наберите с помощью клавиши <
точка
(4.13)
Напоминание
: мн
_с_запятой>.
Обратите внимание на то, что при определении диапазона возможных изменений аргумента нужно учитывать координаты центра окружности!
Затем образуем два дополнительных слота по осям абсцисс и орди-
(охватите синим контуром «старый» аргумент, затем нажмите у <запятая>). В эти слоты введем уравнения касательных денн нат кла- виш
, приве- ых в п. 15.7.1. Должно получиться так, как показано на рис. 4.4.
Р
Проверка ис. 4.4. правильности нахождения уравнений касательных к окружности.
Замечание
: график имеет функцию автоматического масштабирования, в результате ок- ружность может принять форму эллипса. Растяните график так, чтобы устранить искажение.
Фаза
2 построения графика завершена.
Фаза
3 построения графика. Покажем на графике точки касания
(для проверки, правильно ли мы их рассчитали). Все необходимые вы- числения уже сделаны, см. формулу (4.12). Осталось в качестве аргумен- та b указать b1(a, c
1
, c
2
, r
) и b2(a, c
1
,c
2
, r
), а в слотах абсциссы и ордина- ты указать соответствующие элементы матрицы Z(b). Как уже упомина- лось, нумерация элементов – с нулевого.
Образуйте еще два слота на осях графика и впишите в них координа-
144
1 построения графика завершена.
Фаза
2 построения графика. Представим графически прямые, кото- рые (как мы предполагаем) должны касаться окружности в двух точках по разные стороны диаметра. Для этого введем диапазон и шаг измене- ния аргумента x:
, какой хотите. Нажмите OK. Должно получиться как на рис. 4.3-б.
Фаза
x r
−
c 1
+
r
−
c 1
+
0.01
+
,
r c 1
+
:=
оготочие наберите с помощью клавиши <
точка
(4.13)
Напоминание
: мн
_с_запятой>.
Обратите внимание на то, что при определении диапазона возможных изменений аргумента нужно учитывать координаты центра окружности!
Затем образуем два дополнительных слота по осям абсцисс и орди-
(охватите синим контуром «старый» аргумент, затем нажмите у <запятая>). В эти слоты введем уравнения касательных денн нат кла- виш
, приве- ых в п. 15.7.1. Должно получиться так, как показано на рис. 4.4.
Р
Проверка ис. 4.4. правильности нахождения уравнений касательных к окружности.
Замечание
: график имеет функцию автоматического масштабирования, в результате ок- ружность может принять форму эллипса. Растяните график так, чтобы устранить искажение.
Фаза
2 построения графика завершена.
Фаза
3 построения графика. Покажем на графике точки касания
(для проверки, правильно ли мы их рассчитали). Все необходимые вы- числения уже сделаны, см. формулу (4.12). Осталось в качестве аргумен- та b указать b1(a, c
1
, c
2
, r
) и b2(a, c
1
,c
2
, r
), а в слотах абсциссы и ордина- ты указать соответствующие элементы матрицы Z(b). Как уже упомина- лось, нумерация элементов – с нулевого.
Образуйте еще два слота на осях графика и впишите в них координа-
144
ты точек касания. Опции для этих координат: тип (Types) – точки
(points), толщина (Weight) – не менее 3. Должно получиться так, как по- набора иден- омер элемента матрицы – как на рис. 4.5.
Фаза
3 построения графика завершена грубых оши ра. Но проверка по г
, хотя и очень полезная, не обладает достаточной точностью и, главное, общностью (не защищена от случайных совпадений). Для чис- тоты ответа сделаем еще одну, более точную проверку. казано на рис. 4.5. Номера элементов набирайте так: после тификатора матрицы, например, Z(b1(a, c
1
, c
2
, r
)) охватите его синим кон- туром, нажмите клавишу <открывающая квадратная скобка – [> и в поя- вившийся слот впишите н
Построенный график показывает, что в вычислениях нет бок, график соответствует нашим интуитивным представлениям о результате: прямые линии действительно касаются окружности, коорди- наты точек касания находятся по разные стороны диамет рафику
Рис. 4.5. Проверка правильности нахождения координат точек касания.
3) Проверка правильности расчета вычислениями. Идея проверки состоит в ответах на два вопроса:
1. Действительно ли обе точки касания лежат на одной прямой?
2. Действительно ли эта прямая проходит через центр окружности?
Важное замечание
: непосредственно для решения задачи ответ на эти вопросы не нужен. Такие (казалось бы) лишние вычисления служат ловушкой для логических ошибок. Ловушки в форме про-
145
(points), толщина (Weight) – не менее 3. Должно получиться так, как по- набора иден- омер элемента матрицы – как на рис. 4.5.
Фаза
3 построения графика завершена грубых оши ра. Но проверка по г
, хотя и очень полезная, не обладает достаточной точностью и, главное, общностью (не защищена от случайных совпадений). Для чис- тоты ответа сделаем еще одну, более точную проверку. казано на рис. 4.5. Номера элементов набирайте так: после тификатора матрицы, например, Z(b1(a, c
1
, c
2
, r
)) охватите его синим кон- туром, нажмите клавишу <открывающая квадратная скобка – [> и в поя- вившийся слот впишите н
Построенный график показывает, что в вычислениях нет бок, график соответствует нашим интуитивным представлениям о результате: прямые линии действительно касаются окружности, коорди- наты точек касания находятся по разные стороны диамет рафику
Рис. 4.5. Проверка правильности нахождения координат точек касания.
3) Проверка правильности расчета вычислениями. Идея проверки состоит в ответах на два вопроса:
1. Действительно ли обе точки касания лежат на одной прямой?
2. Действительно ли эта прямая проходит через центр окружности?
Важное замечание
: непосредственно для решения задачи ответ на эти вопросы не нужен. Такие (казалось бы) лишние вычисления служат ловушкой для логических ошибок. Ловушки в форме про-
145
верки выполнения некоторых тождеств, равенств и т. п. полезно
. Ершов, много сделавший иваемых ошибок в алгоритмах, не проявляющих себя в
, делении на нуль и прочих действиях, обна кого корабля и к Чернобыльской трагедии).
Перейдем к реализации идеи проверки-ловушки по следующей схеме:
1. Составим уравнение прямой линии, проходящей через две точки: через центр окружности и через одну из точек касания.
2. Подставим в это уравнение координаты второй точки касания.
3. Если окажется, что координаты второй точки удовлетворяют уравнению – расчеты выполнены правильно, логическая ошибка, скорее всего, отсутствует.
Уравнение прямой Y(X), проходящей через две точки с координата- ми [x
1
; y(x
1
)
], [x
2
; y(x
2
)
] имеет вид: вставлять в программы. Академик А. П
для развития науки программирования, назвал такие ловушки
УТВЕРЖДЕНИЯМИ и настаивал на их огромном значении для обнаружения и исправления логических ошибок – наиболее труд- но обнаруж переполнениях ружи- та ению, ваемых компьютером без участия программис . К сожал иногда при наличии логической ошибки результат расчета полу- чается внешне правдоподобным, и программист может посчитать свою задачу выполненной. Но при использовании других исход- ных данных ответ будет абсолютно неверным! Если программа используется для принятия решения или для управления произ- водством, результат логической ошибки может оказаться катаст- рофическим (ошибка такого рода привела к гибели космичес
X
x 1
−
x2 x1
−
Y X
( )
y x1
( )
−
y x 2
( )
y x1
( )
−
(4.14)
Подставим в (4.14) в качестве первой точки [x
1
; y(x
1
)
] координаты центра окружности [c
1
; c
2
], а в качестве второй точки [x
2
; y(x
2
)
] – коорди- наты одной из точек касания, например: [Z(b1(a, c
1
, c2, r
))
0
; Z(b1(a, c
1
,
c2,
но лежащей та- ми [
разн
) будет равна нулю.
,0
r
))
0,1
]. В качестве точки с координатами [X;Y(X)], предположитель на прямой (4.14), возьмем торую точку касания с координа в
Z
(b2(a, c
1
, c2, r
))
0,0
; Z(b2(a, c
1
, c2, r
))
0,1
].
Ели логической ошибки в наших расчетах нет, то после подстановки ость между правой и левой частями (4.14
Проверяем. После набора разности наберите знак равенства (обыч- ный) и посмотрите, действительно ли в ответе получился нуль. Желаю удачи!
Z b2 a c 1
,
c 2
,
r
,
(
)
(
)
0 0
,
c 1
−
Z b1 a c 1
,
c 2
,
r
,
(
)
(
)
0 0
,
c 1
−
Z b2 a c 1
,
c 2
,
r
,
(
)
(
)
0 1
,
c 2
−
Z b1 a c
,
c
,
r
,
(
)
(
)
c
−
1 2
0 1
,
2
−
=
(4.15)
146
. Ершов, много сделавший иваемых ошибок в алгоритмах, не проявляющих себя в
, делении на нуль и прочих действиях, обна кого корабля и к Чернобыльской трагедии).
Перейдем к реализации идеи проверки-ловушки по следующей схеме:
1. Составим уравнение прямой линии, проходящей через две точки: через центр окружности и через одну из точек касания.
2. Подставим в это уравнение координаты второй точки касания.
3. Если окажется, что координаты второй точки удовлетворяют уравнению – расчеты выполнены правильно, логическая ошибка, скорее всего, отсутствует.
Уравнение прямой Y(X), проходящей через две точки с координата- ми [x
1
; y(x
1
)
], [x
2
; y(x
2
)
] имеет вид: вставлять в программы. Академик А. П
для развития науки программирования, назвал такие ловушки
УТВЕРЖДЕНИЯМИ и настаивал на их огромном значении для обнаружения и исправления логических ошибок – наиболее труд- но обнаруж переполнениях ружи- та ению, ваемых компьютером без участия программис . К сожал иногда при наличии логической ошибки результат расчета полу- чается внешне правдоподобным, и программист может посчитать свою задачу выполненной. Но при использовании других исход- ных данных ответ будет абсолютно неверным! Если программа используется для принятия решения или для управления произ- водством, результат логической ошибки может оказаться катаст- рофическим (ошибка такого рода привела к гибели космичес
X
x 1
−
x2 x1
−
Y X
( )
y x1
( )
−
y x 2
( )
y x1
( )
−
(4.14)
Подставим в (4.14) в качестве первой точки [x
1
; y(x
1
)
] координаты центра окружности [c
1
; c
2
], а в качестве второй точки [x
2
; y(x
2
)
] – коорди- наты одной из точек касания, например: [Z(b1(a, c
1
, c2, r
))
0
; Z(b1(a, c
1
,
c2,
но лежащей та- ми [
разн
) будет равна нулю.
,0
r
))
0,1
]. В качестве точки с координатами [X;Y(X)], предположитель на прямой (4.14), возьмем торую точку касания с координа в
Z
(b2(a, c
1
, c2, r
))
0,0
; Z(b2(a, c
1
, c2, r
))
0,1
].
Ели логической ошибки в наших расчетах нет, то после подстановки ость между правой и левой частями (4.14
Проверяем. После набора разности наберите знак равенства (обыч- ный) и посмотрите, действительно ли в ответе получился нуль. Желаю удачи!
Z b2 a c 1
,
c 2
,
r
,
(
)
(
)
0 0
,
c 1
−
Z b1 a c 1
,
c 2
,
r
,
(
)
(
)
0 0
,
c 1
−
Z b2 a c 1
,
c 2
,
r
,
(
)
(
)
0 1
,
c 2
−
Z b1 a c
,
c
,
r
,
(
)
(
)
c
−
1 2
0 1
,
2
−
=
(4.15)
146
Напоминание
: чтобы перейти к набору индексов, нужно нажать клавишу <
квадратная
открывающая скобка
[>.
4. Иллюстрацию условий наличия (4.10) и отсутствия (4.11) пересе-
чения окружности и прямой
легче всего провести, копируя рис. 4.5 и
«подправляя» значение аргументов в уравнениях прямых линий. ие пересечения, введите а) Для того чтобы проиллюстрировать отсутств
:
a
⋅ x + b1(a, c
1
,c
2
, r)+2
вместо a
⋅ x + b1(a, c
1
,c
2
, r);
a
⋅ x + b2(a, c
1
,c
2
, r) – 2
вместо a
⋅ x + b2(a, c
1
,c
2
, r)
Должно получиться так, как показано на рис. 4.6.
Рис
До
. 4.6. Проверка правильности нахождения условий отсутствия пересечений б) Для того чтобы проиллюстрировать наличие пересечений, скопи- руйте рис. 4.6 и введите:
a
⋅ x + b1(a, c
1
,c
2
, r) – 2
вместо a
⋅ x + b1(a, c
1
,c
2
, r) + 2;
a
⋅ x + b2(a, c
1
,c
2
, r) + 2
вместо a
⋅ x + b2(a, c
1
,c
2
, r) – 2
лжно получиться так, как показано на рис. 4.7.
147
Рис. 4.7. Проверка правильности нахождения условий наличия пересечений.
6>
1 2 3 4 5 6 7 8 9 10 11
§
16. Создание анимационных клипов
16.1. Общие сведения
Дополним графическую часть анимацией. Создадим анимационный
, в котором покажем перемещение прямой из области, в ой ишем уравнение прямой линии с параметром FRAME: клип линии кото- р
отсутствует пересечение с окружностью, в область, где пересечение снова отсутствует. Параметр b в уравнении прямой линии будет изме- няться от значения b2(a, c
1
, c
2
, r
) – 2 (пересечения еще нет) до значения
b1
(a, c
1
, c
2
, r
) + 2 (пересечения уже нет). Разобьем весь интервал измене- ния параметра b, b2(a, c
1
,c
2
, r
) – 2
≤ b ≤ b1(a, c
1
,c
2
, r
) + 2 на части (пусть их будет 50). Введем системную переменную (в Mathcad она называется
FRAME
, записывается прописными литерами). Эта переменная будет в каждом кадре анимации придавать новое значение параметру b. Диапазон ее изменения зададим от 0 до 50, тогда параметр b «пробежит» по всему диапазону, b2(a, c
1
,c
2
, r
) – 2
≤ b ≤ b1(a, c
1
,c
2
, r
) + 2.
Зап g x
( )
a x
⋅
b2 a c 1
,
c 2
,
r
,
(
)
2
−
b1 a c 1
,
c 2
,
r
,
(
)
4
+
b2 a c 1
,
c 2
,
r
,
(
)
−
(
)
50
FRAME
⋅
+
⎡
⎢
⎣
⎤
⎥
⎦
+
:=
(4.16)
Из (4.16) видно, что при FRAME = 0 параметр b = b2(a, c
1
,c
2
, r
) – 2;
148
при нию клипа. Его сценарий – перемещение прямой ли- нии ко- торо
Обязательно о я – ина- че анимаци табу при каж и по гра- фик ей и введите туда
«принудительные» значения – например, 25 (на рис. 4.8 обведены). Пря- мая линия разместится так, как будто FRAME = 0. Нанесите линии сетки, введите «русский» вариант размещения осей.
FRAME
= 50 параметр b = b1(a, c
1
,c
2
, r
) + 2.
Перейдем к созда на фоне окружности за счет изменения параметра FRAME от 0 до 50.
16.2. Фазы создания анимационного клипа
Фаза
1 создания анимационного клипа. Образуйте рисунок, на осях го покажите аргументы окружности и прямой линии – как на рис. 4.8.
тключите опцию автоматического масштабировани онный образ будет «прыгать» от масштаба к масш кой мыш дом новом кадре. Для этого щелкните левой кноп
, сотрите верхние и нижние пределы в слотах ос у
Рис. 4.8. Подготовка к созданию анимационного клипа.
Фаза 1
завершена.
Фаза
2 создания анимационного клипа. Из меню View (вид) вызовите позицию Animate. Появится окно анимации.
Рис. 4.9. Окно анимации с введенным диапазоном изменения параметра FRAME.
149
Обязательно о я – ина- че анимаци табу при каж и по гра- фик ей и введите туда
«принудительные» значения – например, 25 (на рис. 4.8 обведены). Пря- мая линия разместится так, как будто FRAME = 0. Нанесите линии сетки, введите «русский» вариант размещения осей.
FRAME
= 50 параметр b = b1(a, c
1
,c
2
, r
) + 2.
Перейдем к созда на фоне окружности за счет изменения параметра FRAME от 0 до 50.
16.2. Фазы создания анимационного клипа
Фаза
1 создания анимационного клипа. Образуйте рисунок, на осях го покажите аргументы окружности и прямой линии – как на рис. 4.8.
тключите опцию автоматического масштабировани онный образ будет «прыгать» от масштаба к масш кой мыш дом новом кадре. Для этого щелкните левой кноп
, сотрите верхние и нижние пределы в слотах ос у
Рис. 4.8. Подготовка к созданию анимационного клипа.
Фаза 1
завершена.
Фаза
2 создания анимационного клипа. Из меню View (вид) вызовите позицию Animate. Появится окно анимации.
Рис. 4.9. Окно анимации с введенным диапазоном изменения параметра FRAME.
149