у — в регистре
Значения х, у z таковы, что удовлет-
воряют
484 Глава
Архитектура и программирование сопроцессора
Более того, используя значения х и у, можно получить значения остальных три-
гонометрических функций. Для этого используются следующие соотношения:
ctg(z/2)
Теперь вам, наверное, понятен термин «частичный» тангенс. К счастью, в про-
цессоре
появились самостоятельные команды для вычисления синуса и коси-
нуса, вследствие чего отпала необходимость составлять соответствующие подпро-
граммы. Что же до команды FPTAN, то она по-прежнему выдает два значения
в регистрах
и ST(1). Но теперь уже значение в
всегда равно единице, а это
означает, что в ST(0) находится истинное значение тангенса числа, находившегося
в
до выдачи команды FPTAN.
Рассмотрим теперь подробней команду вычисления частичного арктангенса угла
FPATAN. Если использовать введенные нами при рассмотрении команды FPTAN обо-
значения, то для команды FPATAN действует следующее отношение:
z =
Значения х и у размещаются в стеке следующим образом: х — в регистре
у — в регистре в
Результат z возвращается в
причем перед этим выпол-
няется выталкивание значений х и у из стека сопроцессора. Команда FPATAN широ-
ко применяется для вычисления значений обратных тригонометрических функ-
ций, таких как arcsin, arccos, arcctg, arccosec, arcsec. Например, для вычисления
функции arcsin используется следующая формула:
=
Для вычисления этой формулы необходимо выполнить следующую последо-
вательность шагов.
Если а является мерой угла в градусах, то выполнить ее преобразование в ради-
меру по правилу, приведенному ранее.
2. Поместить в стек а в
мере.
3. Вычислить значение выражения
-
и поместить его в стек.
4. Выполнить команду FPATAN с аргументами в
и
В
должно
быть значение выражения
-
в st(l) — a.
В результате этих действий в регистре
будет сформировано значение вы-
ражения
Аналогично вычисляются значения других обратных тригонометрических функ-
ций.
Для вычисления функции
используется формула
.
= 2
-
Г
Система команд сопроцессора 485
Для ее
необходимо выполнить следующую последовательность
шагов:
1. Если а является мерой угла в градусах, то выполнить ее преобразование в ради-
анную меру по
приведенному ранее
2. Вычислить
выражения
и поместить его в стек.
3. Вычислить
выражения Vl + a и поместить его в стек.
4. Выполнить
FPATAN с аргументами в регистрах
и
В
должно
быть значение выражения Vl + a , в
—
•
В результате этих
в регистре
сформируется значение выраже-
ния
Для вычисления
используется формула
=
Для ее
необходимо выполнить следующую последовательность
шагов:
Если а является
рой угла в градусах, то выполнить ее преобразование в
анную меру по пра зилу, приведенному ранее.
2. Командой FLD1
естить в стек значение 1.
3. Поместить в стек з гачение а.
4. Выполнить команду FPATAN с аргументами в регистрах
и
В
должно
быть значение а, в
— 1.
В результате этих действий в регистре
сформируется значение выраже-
ния
I
Если вам
вычислить значения других тригонометрических функ-
ций, то ход ваших
быть аналогичен приведенному выше. Зная
набор функций,
сопроцессором, вам следует искать формулы
приведения (или
их самим), выражающие нереализованные в сопроцес-
соре функции посредс твом реализованных. Не забывайте контролировать диапа-
зоны значений аргументов для тех команд, которые требуют этого.
Для демонстрации
команд данной группы реализуем два алгорит-
ма построения
изображений на основе определенных математических
зависимостей.
этих примеров мы завершим разработку Windows-при-
ложения, о котором
в главе 16. Если вы помните, это было прило-
жение, в котором
нереализованными два пункта меню: Графика Эффек-
ты Павлин и Графика Эффекты Кружева. Рассмотрим вначале суть алгоритмов,
в соответствии с
строятся эти графические изображения. Математиче-
ские зависимости
построения этих фигур взяты из [17].
Фигура «Павлин»
из множества отрезков. Один конец каждого из
отрезков располагается вдоль горизонтальной линии. Расположение второго кон-
ца рассчитывается по
формулам, содержащим тригонометрические
функции sin и cos.
шагов построения фигуры «Павлин» вы-
глядит следующим образом.
486
17. Архитектура и программирование сопроцессора
1. Организуется цикл по переменной xl (координата первого конца каждого от-
резка), которая изменяется от 0 до значения icycl.
2. Для текущего значения xl вычисляются значения координат другого конца от-
резка (х2, у2) по формулам
х2 =
+ ilOO • sin(xl/i30);
у2 =
+ ilOO • cos(xl/i30).
3. Строится отрезок, координаты концов которого располагаются в точках (xl,
icenter) и (х2, у2).
4. Если значение xl не превысило значения icycl, то цикл повторяется для xl, уве-
личенного на 1.
В этом алгоритме значения icenter, icycl,
ilOO,
i30 представляют собой
константы, изменяя которые/вы будете получать на экране другие варианты гра-
фического изображения «Павлин». На рис. 17.18 показан результат работы этого
алгоритма.
Do'stlaringiz bilan baham: |