- •Содержание
- •Введение
- •Свойства тригонометрических функций на единичной окружности
- •Создание цифровой образовательной модели Разработка внешнего интерфейса программы
- •Отрисовка основных элементов программы
- •Обеспечение реакции на управляющие кнопки
- •Организация пересчета значений функций
- •Тестирование получившейся программы
- •Заключение
- •Список литературы
- •Приложение
Заключение
В процессе разработки проекта был подобран необходимый теоретический материал по теме «Тригонометрические функции, заданные на единичной окружности». Создан единичный круг с радиус-вектором, добавлены элементы управления, определяющие отображаемую функцию и вид чертежа, обеспечена возможность изменения угла наклона с постоянным пересчетом параметров, отображаемых на правой панели. Программа протестирована, ошибок не выявлено.
Созданный цифровой образовательный ресурс поможет школьникам понять суть определения тригонометрических функций, разобраться в способе их вычисления и зависимости их величин от значения угла наклона радиус-вектора.
Список литературы
Тригонометрический круг: вся тригонометрия на одном рисунке. (http://ege-study.ru/materialy-ege/trigonometricheskij-krug/)
И.В.Яковлев Тригонометрическая окружность. (http://mathus.ru/math/trigok.pdf)
Тригонометрические функции на единичной окружности: тангенс и котангенс. (http://www.yaklass.ru/p/algebra/10-klass/trigonometricheskie-funktcii-10781/sinus-i-kosinus-tangens-i-kotangens-10880/re-f0a8f1b1-6bb3-4eb5-aea0-d43fec569441)
Учебный практикум (http://stratum.ac.ru/education/stratum/3.0/practic/)
Приложение
Приложение 1.
if (~changed)
if (~show_sin)
ShowObject2d(~HSpace, GetObject2dByName(~HSpace,#0,"f1"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"f2"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"f3"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"f4"))
ShowObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"sin1"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"cos1"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"tg1"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"ctg1"))
ShowObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"sinx"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"cosx"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"tgx"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"ctgx"))
ShowObject2d(~HSpace, GetObject2dByName(~HSpace,#0,"Lsin"))
HideObject2d(~HSpace, GetObject2dByName(~HSpace,#0,"Lcos"))
HideObject2d(~HSpace, GetObject2dByName(~HSpace,#0,"Ltg"))
HideObject2d(~HSpace, GetObject2dByName(~HSpace,#0,"Lctg"))
ShowObject2d(~HSpace,~Line_Sin)
HideObject2d(~HSpace,~Line_Cos)
HideObject2d(~HSpace,~Line_Tg)
HideObject2d(~HSpace,~Line_Ctg)
HideObject2d(~HSpace,~LineDX)
ShowObject2d(~HSpace,~LineDy)
HideObject2d(~HSpace,~LineDtg)
HideObject2d(~HSpace,~LineDctg)
HideObject2d(~HSpace,~bord)
HideObject2d(~HSpace,~LineDX1)
HideObject2d(~HSpace,~LineDY1)
ShowObject2d(~HSpace, ~ShowSin)
HideObject2d(~HSpace, ~ShowCos)
HideObject2d(~HSpace, ~ShowTg)
HideObject2d(~Hspace, ~ShowCtg)
HideObject2d(~HSpace, GetObject2dByName(~HSpace, #0, "inf"))
endif
if (~show_cos)
HideObject2d(~HSpace, GetObject2dByName(~HSpace,#0,"f1"))
ShowObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"f2"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"f3"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"f4"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"sin1"))
ShowObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"cos1"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"tg1"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"ctg1"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"sinx"))
ShowObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"cosx"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"tgx"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"ctgx"))
HideObject2d(~HSpace, GetObject2dByName(~HSpace,#0,"Lsin"))
ShowObject2d(~HSpace, GetObject2dByName(~HSpace,#0,"Lcos"))
HideObject2d(~HSpace, GetObject2dByName(~HSpace,#0,"Ltg"))
HideObject2d(~HSpace, GetObject2dByName(~HSpace,#0,"Lctg"))
HideObject2d(~HSpace,~Line_Sin)
ShowObject2d(~HSpace,~Line_Cos)
HideObject2d(~HSpace,~Line_Tg)
HideObject2d(~HSpace,~Line_Ctg)
HideObject2d(~HSpace,~LineDy)
ShowObject2d(~HSpace,~LineDX)
HideObject2d(~HSpace,~LineDtg)
HideObject2d(~HSpace,~LineDctg)
HideObject2d(~HSpace,~bord)
HideObject2d(~HSpace,~LineDX1)
HideObject2d(~HSpace,~LineDY1)
HideObject2d(~HSpace, ~ShowSin)
ShowObject2d(~HSpace, ~ShowCos)
HideObject2d(~HSpace, ~ShowTg)
HideObject2d(~Hspace, ~ShowCtg)
HideObject2d(~HSpace, GetObject2dByName(~HSpace, #0, "inf"))
endif
if (~show_tg)
HideObject2d(~HSpace, GetObject2dByName(~HSpace,#0,"f1"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"f2"))
ShowObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"f3"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"f4"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"sin1"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"cos1"))
ShowObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"tg1"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"ctg1"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"sinx"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"cosx"))
ShowObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"tgx"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"ctgx"))
HideObject2d(~HSpace, GetObject2dByName(~HSpace,#0,"Lsin"))
HideObject2d(~HSpace, GetObject2dByName(~HSpace,#0,"Lcos"))
ShowObject2d(~HSpace, GetObject2dByName(~HSpace,#0,"Ltg"))
HideObject2d(~HSpace, GetObject2dByName(~HSpace,#0,"Lctg"))
HideObject2d(~HSpace,~Line_Sin)
HideObject2d(~HSpace,~Line_Cos)
ShowObject2d(~HSpace,~Line_Tg)
HideObject2d(~HSpace,~Line_Ctg)
HideObject2d(~HSpace,~LineDy)
HideObject2d(~HSpace,~LineDX)
ShowObject2d(~HSpace,~LineDtg)
HideObject2d(~HSpace,~LineDctg)
ShowObject2d(~HSpace,~bord)
ShowObject2d(~HSpace,~LineDX1)
ShowObject2d(~HSpace,~LineDY1)
HideObject2d(~HSpace, ~ShowSin)
HideObject2d(~HSpace, ~ShowCos)
ShowObject2d(~HSpace, ~ShowTg)
HideObject2d(~Hspace, ~ShowCtg)
ShowObject2d(~HSpace, GetObject2dByName(~HSpace, #0, "inf"))
endif
if (~show_ctg)
HideObject2d(~HSpace, GetObject2dByName(~HSpace,#0,"f1"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"f2"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"f3"))
ShowObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"f4"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"sin1"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"cos1"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"tg1"))
ShowObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"ctg1"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"sinx"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"cosx"))
HideObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"tgx"))
ShowObject2d(~HSpace,GetObject2dByName(~HSpace,#0,"ctgx"))
HideObject2d(~HSpace, GetObject2dByName(~HSpace,#0,"Lsin"))
HideObject2d(~HSpace, GetObject2dByName(~HSpace,#0,"Lcos"))
HideObject2d(~HSpace, GetObject2dByName(~HSpace,#0,"Ltg"))
ShowObject2d(~HSpace, GetObject2dByName(~HSpace,#0,"Lctg"))
HideObject2d(~HSpace,~Line_Sin)
HideObject2d(~HSpace,~Line_Cos)
HideObject2d(~HSpace,~Line_Tg)
ShowObject2d(~HSpace,~Line_Ctg)
HideObject2d(~HSpace,~LineDy)
HideObject2d(~HSpace,~LineDX)
HideObject2d(~HSpace,~LineDtg)
ShowObject2d(~HSpace,~LineDctg)
HideObject2d(~HSpace,~bord)
ShowObject2d(~HSpace,~LineDX1)
ShowObject2d(~HSpace,~LineDY1)
HideObject2d(~HSpace, ~ShowSin)
HideObject2d(~HSpace, ~ShowCos)
HideObject2d(~HSpace, ~ShowTg)
ShowObject2d(~Hspace, ~ShowCtg)
ShowObject2d(~HSpace, GetObject2dByName(~HSpace, #0, "inf"))
endif
changed:=0
endif
Приложение 2.
Abs - Функция вычисляет абсолютное значение (модуль)
AddPoint2d - Добавить точку к линии
Cos - Вычисляет значение косинуса
CreatePen2d - Создать карандаш
CreatePolyLine2d - Создать линию
DeleteObject2d - Удалить объект
GetActualHeight2d - Функция возвращает актуальную высоту объекта
GetActualWidth2d - Функция возвращает актуальную ширину объекта
GetAngleByXY - Определение угла по значению координат
GetObject2dByName - Функция возвращает дескриптор объекта по его имени
GetObjectHeight2d - Функция возвращает размер объекта по у
GetObjectOrg2dx - Функция возвращает х – координату объекта
GetObjectOrg2dy - Функция возвращает у – координату объекта
GetObjectWidth2d - Функция возвращает размер объекта по х
GetPenObject2d - Функция возвращает дескриптор карандаша, который используется при рисовании линий
GetString2d - Функция возвращает текст строки
GetTextObject2d - Дескриптор логического текста, используемого в данном графическом объекте
GetTextString2d - Функция возвращает дескриптор текстового элемента
GetZOrder2d - Функция возвращает Z – порядок объекта
HideObject2d - Скрыть объект
ObjectToTop2d - Поставить объект выше всех по Z – порядку
rnd(n) - Функция возвращает случайное число от 0 до указанного числа n
SetObjectOrg2d - Функция, позволяющая переместить объект
SetString2d - Установить строку
SetVectorPoint2d - Изменить одну точку в линии
SetZOrder2d - Установить Z – порядок объекта
ShowObject2d - Показать объект
Sin - Функция вычисляет значение синуса
Tan - Функция вычисляет значение тангенса
Приложение 3.
// создаем дополнительные линии
Pen_Line:=CreatePen2d(~HSpace,PS_SOLID,5,rgb(255,172,64),R2_COPYPEN)
x1:=~xCCircle
y1:=~yCCircle-15*~step
y2:=~yCCircle+15*~step
Line_Sin:=CreatePolyLine2d(~HSpace,~Pen_Line,#0,~x1,~y1,~x1,~y2)
HideObject2d(~HSpace,~Line_Sin)
x1:=~xCCircle-15*~step
x2:=~xCCircle+15*~step
y1:=~yCCircle
Line_Cos:=CreatePolyLine2d(~HSpace,~Pen_Line,#0,~x1,~y1,~x2,~y1)
HideObject2d(~HSpace,~Line_Cos)
x2:=~xCCircle+15*~step
y1:=~yCCircle-17*~step
y2:=~yCCircle+17*~step
Line_Tg:=CreatePolyLine2d(~HSpace,~Pen_Line,#0,~x2,~y1,~x2,~y2)
HideObject2d(~HSpace,~Line_Tg)
x1:=~xCCircle-19*~step
x2:=~xCCircle+19*~step
y1:=~yCCircle-15*~step
y2:=~yCCircle+15*~step
Line_Ctg:=CreatePolyLine2d(~HSpace,~Pen_Line,#0,~x1,~y1,~x2,~y1)
HideObject2d(~HSpace,~Line_Ctg)
// описание построения круга
PenUpCircle:=CreatePen2d(~HSpace, PS_Solid, 4, rgb(30,120,230), R2_COPYPEN)
PenDownCircle:=CreatePen2d(~HSpace, PS_Dash, 1, GetPenColor2d(~HSpace, ~HPenCircle), R2_MASKPEN)
x:=~xCCircle-15*~step;
x_:=(~x-~xCCircle)/(15*~step)
y_:=sqrt(1-~x_*~x_)
y:=-15*~y_*~step+~yCCircle
HCircle:=CreatePolyLine2d(~HSpace,~PenUpCircle,#0,~x,~y)
HCircle2:=CreatePolyLine2d(~HSpace,~PenDownCircle,#0,~x,~y)
x:=~x+0.5
while(~x<=~xCCircle+15.1*~step)
x_:=(~x-~xCCircle)/(15*~step)
y_:=sqrt(1-~x_*~x_)
y:=-15*~y_*~step+~yCCircle
ret:=AddPoint2d(~HSpace,~HCircle,-1,~x,~y)
x:=~x+0.5;
endwhile
x:=~x-1;
while(~x>=~xCCircle-15.1*~step)
x_:=(~x-~xCCircle)/(15*~step)
y_:=-1*sqrt(1-~x_*~x_)
y:=-15*~y_*~step+~yCCircle
ret:=AddPoint2d(~HSpace,~HCircle2,-1,~x,~y)
x:=~x-0.5;
endwhile
Z:=GetZOrder2d(~HSpace, ~HCircle)
ret:=SetZOrder2d(~HSpace,~HCircle2,36)
xPoint:=~xCCircle+cos(~angle*PI/180)*~step*15
yPoint:=~yCCircle-sin(~angle*PI/180)*~step*15
Line:=CreatePolyLine2d(~HSPace,~HPen_Line,#0,~xCCircle,~yCCircle,~xPoint,~yPoint)
P:=CreatePolyLine2d(~HSpace,~HPen_P,#0,~xPoint,~yPoint,~xPoint,~yPoint)
ret:=SetVectorPoint2d(~HSpace,~LineDX,0,~xPoint,~yPoint)
ret:=SetVectorPoint2d(~HSpace,~LineDX,1,~xPoint,~yCCircle)
ret:=SetVectorPoint2d(~HSpace,~LineDy,0,~xPoint,~yPoint)
ret:=SetVectorPoint2d(~HSpace,~LineDy,1,~xCCircle,~yPoint)
ret:=SetVectorPoint2d(~HSpace,~LineDX1,0,~xPoint,~yPoint)
ret:=SetVectorPoint2d(~HSpace,~LineDX1,1,~xPoint,~yCCircle)
ret:=SetVectorPoint2d(~HSpace,~LineDy1,0,~xPoint,~yPoint)
ret:=SetVectorPoint2d(~HSpace,~LineDy1,1,~xCCircle,~yPoint)
// дополнительные линии, показывающие истинную величину
Show_Pen_Line1:=CreatePen2d(~HSpace,PS_SOLID,5,rgb(0,191,191),R2_COPYPEN)
ShowSin:=CreatePolyLine2d(~HSpace, ~Show_Pen_Line1, #0, 0, 0, 0, 0)
HideObject2d(~HSpace, ~ShowSin)
Show_Pen_Line2:=CreatePen2d(~HSpace,PS_SOLID,5,rgb(0,191,191),R2_COPYPEN)
ShowCos:=CreatePolyLine2d(~HSpace, ~Show_Pen_Line2, #0, 0, 0, 0, 0)
HideObject2d(~HSpace, ~ShowCos)
Show_Pen_Line3:=CreatePen2d(~HSpace,PS_SOLID,5,rgb(0,191,191),R2_COPYPEN)
ShowTg:=CreatePolyLine2d(~HSpace, ~Show_Pen_Line3, #0, 0, 0, 0, 0)
HideObject2d(~HSpace, ~ShowTg)
Show_Pen_Line4:=CreatePen2d(~HSpace,PS_SOLID,5,rgb(0,191,191),R2_COPYPEN)
ShowCtg:=CreatePolyLine2d(~HSpace, ~Show_Pen_Line4, #0, 0, 0, 0, 0)
HideObject2d(~HSpace, ~ShowCtg)
HPointMove := CreatePen2d(~HSpace, PS_SOLID, 10, rgb(255, 255, 0), R2_COPYPEN) // карандаш для дополнительной точки (tg и ctg)
// тангенс
ret:=SetVectorPoint2d(~HSpace,~LineDtg,0,~xCCircle,~yCCircle)
ret:=SetVectorPoint2d(~HSpace,~ShowTg,0,~xCCircle + 15*~step,~yCCircle)
k := ((~yPoint - ~yCCircle)/(~xPoint - ~xCcircle))
b := - ~k * ~xCCircle + ~yCCircle
memoryY:= ~k*(~xCCircle + 15*~step) + ~b
yf1 :=67
yf2 := ~yf1 + 34.5*~step
if (~memoryY < ~yf1)
xT := (~yf1 - ~b)/~k;
ret:=SetVectorPoint2d(~HSpace,~LineDtg,1,~xT, ~yf1)
ret:=SetVectorPoint2d(~HSpace,~ShowTg,1,~xCCircle + 15*~step, ~yf1)
meX:=~xT
meY:=~yf2
else
if (~memoryY > ~yf2)
xT := (~yf2 - ~b)/~k;
ret:=SetVectorPoint2d(~HSpace,~LineDtg,1,~xT, ~yf2)
ret:=SetVectorPoint2d(~HSpace,~ShowTg,1,~xCCircle + 15*~step, ~yf2)
meX:=~xT
meY:=~yf2
else
ret:=SetVectorPoint2d(~HSpace,~LineDtg,1,~xCCircle + 15*~step, ~memoryY)
ret:=SetVectorPoint2d(~HSpace,~ShowTg,1,~xCCircle + 15*~step, ~memoryY)
meX:=~xCCircle + 15*~step
meY:=~memoryY
endif
endif
bord:=CreatePolyLine2d(~HSpace,~HPointMove,#0,~meX,~meY,~meX,~meY)
HideObject2d(~HSpace,~bord)
// котангенс
ret:=SetVectorPoint2d(~HSpace,~LineDctg,0,~xCCircle,~yCCircle)
ret:=SetVectorPoint2d(~HSpace,~ShowCtg,0,~xCCircle,~yCCircle - 15*~Step)
k := ((~yPoint - ~yCCircle)/(~xPoint - ~xCcircle))
b := - ~k * ~xCCircle + ~yCCircle
memoryX:= ((~yCCircle-15*~step) - ~b)/~k
xf1 := GetObjectOrg2dx(~HSpace, GetObject2dByName(~HSpace,#0,"Field2"))
xf2 := ~xf1 + 38*~step
if (~memoryX < ~xf1)
yCt:= ~k * ~xf1 + ~b
ret:=SetVectorPoint2d(~HSpace,~LineDctg,1, ~xf1, ~yCt)
ret:=SetVectorPoint2d(~HSpace,~ShowCtg,1, ~xf1, ~yCCircle - 15*~Step)
else
if (~memoryX > ~xf2)
yCt:= ~k * ~xf2 + ~b
ret:=SetVectorPoint2d(~HSpace,~LineDctg,1,~xf2, ~yCt)
ret:=SetVectorPoint2d(~HSpace,~ShowCtg,1,~xf2, ~yCCircle - 15*~Step)
else
ret:=SetVectorPoint2d(~HSpace,~LineDctg,1,~memoryX, ~yCCircle - 15*~step)
ret:=SetVectorPoint2d(~HSpace,~ShowCtg,1,~memoryX, ~yCCircle - 15*~step)
endif
endif
HA:=CreatePolyLine2d(~HSpace,~HPenNull,#0,~xCCircle+10*~step,~yCCircle,~xCCircle+10*~step,~yCCircle)
ret:=SetString2d(~HSpace,~HTextx,string(ROUND(cos(~angle*PI/180),4)))
ret:=SetString2d(~HSpace,~HTexty,string(ROUND(sin(~angle*PI/180),4)))
Приложение 4.
if(!~F)
angle:=ROUND(GetAngleByXY(~xPos-~xCCircle,-1*(~yPos-~yCCircle))*180/PI,0)
isVisible:=0;
if(~angle>180)
angle:=~angle-360;
endif
endif
xPoint:=~xCCircle+cos(~angle*PI/180)*~step*15
yPoint:=~yCCircle-sin(~angle*PI/180)*~step*15
ret:=SetVectorPoint2d(~HSpace,~p,0,~xPoint,~yPoint)
ret:=SetVectorPoint2d(~HSpace,~p,1,~xPoint,~yPoint)
ret:=SetVectorPoint2d(~HSpace,~Line,1,~xPoint,~yPoint)
ret:=SetString2d(~HSpace,~HTextx,string(ROUND(cos(~angle*PI/180),4)))
ret:=SetString2d(~HSpace,~HTexty,string(ROUND(sin(~angle*PI/180),4)))
meDx:= FLOAT(GetString2d(~HSpace, ~HTextx))
meDy:= FLOAT(GetString2d(~HSpace, ~HTexty))
ret:=SetString2d(~HSpace,~HTextAlfa,string(~angle)+"°")
ret:= SetString2d(~HSpace, ~HTextSinx, "("+string(~angle)+"°) = "+string(ROUND(sin(~angle*PI/180),4)))
ret:= SetString2d(~HSpace, ~HTextCosx, "("+string(~angle)+"°) = "+string(ROUND(cos(~angle*PI/180),4)))
if (~show_ctg)
if(~angle!=0 && ~angle!=180)
ret:=SetString2d(~HSpace,~HTextCtgx,"("+string(~angle)+"°) = "+string(ROUND(1/tan(~angle*PI/180),4)))
HideObject2d(~HSpace, GetObject2dByName(~HSpace, #0, "inf"))
else
ret:=SetString2d(~HSpace,~HTextCtgx,"("+string(~angle)+"°) = ")
ShowObject2d(~HSpace, GetObject2dByName(~HSpace, #0, "inf"))
endif
endif
if (~show_tg)
if(~angle!=90 && ~angle!=-90)
ret:=SetString2d(~HSpace,~HTextTgx,"("+string(~angle)+"°) = "+string(ROUND(tan(~angle*PI/180),4)))
HideObject2d(~HSpace, GetObject2dByName(~HSpace, #0, "inf"))
else
if (~show_tg)
ret:=SetString2d(~HSpace,~HTextTgx,"("+string(~angle)+"°) = ")
ShowObject2d(~HSpace, GetObject2dByName(~HSpace, #0, "inf"))
endif
endif
endif
ret:=SetVectorPoint2d(~HSpace, ~ShowSin, 0, ~xCCircle, ~yCCircle)
ret:=SetVectorPoint2d(~HSpace, ~ShowSin, 1, ~xCCircle, ~yPoint)
ret:=SetVectorPoint2d(~HSpace, ~ShowCos, 0, ~xCCircle, ~yCCircle)
ret:=SetVectorPoint2d(~HSpace, ~ShowCos, 1, ~xPoint, ~yCCircle)
ret:=SetVectorPoint2d(~HSpace,~HLinePoint,0,~xC+~angle*PI/180*~step*15,~y0);
ret:=SetVectorPoint2d(~HSpace,~HLinePoint,1,~xC+~angle*PI/180*~step*15,~y0+(~Yc-~y0)*2);
ret:=SetVectorPoint2d(~HSpace,~LineDX,0,~xPoint,~yPoint)
ret:=SetVectorPoint2d(~HSpace,~LineDX,1,~xPoint,~yCCircle)
ret:=SetVectorPoint2d(~HSpace,~LineDy,0,~xPoint,~yPoint)
ret:=SetVectorPoint2d(~HSpace,~LineDy,1,~xCCircle,~yPoint)
ret:=SetVectorPoint2d(~HSpace,~LineDX1,0,~xPoint,~yPoint)
ret:=SetVectorPoint2d(~HSpace,~LineDX1,1,~xPoint,~yCCircle)
ret:=SetVectorPoint2d(~HSpace,~LineDy1,0,~xPoint,~yPoint)
ret:=SetVectorPoint2d(~HSpace,~LineDy1,1,~xCCircle,~yPoint)
// тангенс
if (~show_tg)
ret:=SetVectorPoint2d(~HSpace,~LineDtg,0,~xCCircle,~yCCircle)
ret:=SetVectorPoint2d(~HSpace, ~ShowTg, 0, ~xCCircle + 15*~step, ~yCCircle)
k := ((~yPoint - ~yCCircle)/(~xPoint - ~xCcircle))
b := - ~k * ~xCCircle + ~yCCircle
memoryY:= ~k*(~xCCircle + 15*~step) + ~b
yf2 := ~yf1 + 34.5*~step
if (~memoryY < ~yf1)
xT := (~yf1 - ~b)/~k;
ret:=SetVectorPoint2d(~HSpace,~LineDtg,1,~xT, ~yf1)
ret:=SetVectorPoint2d(~HSpace, ~ShowTg, 1, ~xCCircle + 15*~step, ~yf1)
HideObject2d(~HSpace,~bord)
else
if (~memoryY > ~yf2)
xT := (~yf2 - ~b)/~k;
ret:=SetVectorPoint2d(~HSpace,~LineDtg,1,~xT, ~yf2)
ret:=SetVectorPoint2d(~HSpace, ~ShowTg, 1, ~xCCircle + 15*~step, ~yf2)
HideObject2d(~HSpace,~bord)
else
ret:=SetVectorPoint2d(~HSpace,~LineDtg,1,~xCCircle + 15*~step, ~memoryY)
ShowObject2d(~HSpace,~bord)
ret:=SetVectorPoint2d(~HSpace,~bord,0,~xCCircle + 15*~step, ~memoryY)
ret:=SetVectorPoint2d(~HSpace,~bord,1,~xCCircle + 15*~step, ~memoryY)
ret:=SetVectorPoint2d(~HSpace, ~ShowTg, 1, ~xCCircle + 15*~step, ~memoryY)
endif
endif
endif
// котангенс
if (~show_ctg)
ret1:=SetVectorPoint2d(~HSpace,~LineDctg,0,~xCCircle,~yCCircle)
ret1:=SetVectorPoint2d(~HSpace, ~ShowCtg, 0, ~xCCircle, ~yCCircle - 15*~step)
k := ((~yPoint - ~yCCircle)/(~xPoint - ~xCcircle))
b := - ~k * ~xCCircle + ~yCCircle
memoryX:= ((~yCCircle-15*~step) - ~b)/~k
xf1 := GetObjectOrg2dx(~HSpace, GetObject2dByName(~HSpace,#0,"Field2"))
xf2 := ~xf1 + 38*~step
if (~memoryX < ~xf1)
yCt:= ~k * ~xf1 + ~b
ret1:=SetVectorPoint2d(~HSpace,~LineDctg,1, ~xf1, ~yCt)
ret1:=SetVectorPoint2d(~HSpace,~ShowCtg,1, ~xf1, ~yCCircle - 15*~step)
HideObject2d(~HSpace,~bord)
else
if (~memoryX > ~xf2)
yCt:= ~k * ~xf2 + ~b
ret1:=SetVectorPoint2d(~HSpace,~LineDctg,1, ~xf2, ~yCt)
ret1:=SetVectorPoint2d(~HSpace,~ShowCtg,1, ~xf2, ~yCCircle - 15*~step)
HideObject2d(~HSpace,~bord)
else
ret1:=SetVectorPoint2d(~HSpace,~LineDctg,1, ~memoryX, ~yCCircle - 15*~step)
ret1:=SetVectorPoint2d(~HSpace,~ShowCtg,1, ~memoryX, ~yCCircle - 15*~step)
ShowObject2d(~HSpace,~bord)
ret:=SetVectorPoint2d(~HSpace,~bord,0, ~memoryX, ~yCCircle - 15*~step)
ret:=SetVectorPoint2d(~HSpace,~bord,1, ~memoryX, ~yCCircle - 15*~step)
endif
endif
endif