Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
29
Добавлен:
16.04.2015
Размер:
337.92 Кб
Скачать

'Сетка

PicChart.DrawStyle = vbDot PicChart.DrawWidth = 1 PicChart.ForeColor = vbBlack XStep = (XMax - XMin) / NxGrid YStep = (YMax - YMin) / NyGrid For XCounter = 0 To NxGrid XDraw1 = XMin + XCounter * XStep YDraw1 = YMin

YDraw2 = YMax

PicChart.Line (XDraw1, YDraw1)-(XDraw1, YDraw2) Next XCounter

For YCounter = 0 To NyGrid XDraw1 = XMin

XDraw2 = XMax

YDraw1 = YMin + YCounter * YStep

PicChart.Line (XDraw1, YDraw1)-(XDraw2, YDraw1) Next YCounter

'Подписи к осям CurrentX = PicChart.Left

CurrentY = PicChart.Top - TextHeight(TextY) Print TextY

CurrentX = PicChart.Left + PicChart.Width + TextWidth("0") CurrentY = PicChart.Top + PicChart.Height - TextHeight(TextX) Print TextX

'Подписи к линиям сетки For XCounter = 0 To NxGrid

ValuePrint = Round(XMin + XCounter * XStep, 2)

CurrentX = PicChart.Left + PicChart.Width * XCounter / NxGrid - TextWidth((ValuePrint)) / 2

CurrentY = PicChart.Top + PicChart.Height + TextHeight("0") / 2 Print ValuePrint

Next XCounter

For YCounter = 0 To NyGrid

ValuePrint = Round(YMax - YCounter * YStep, 2)

CurrentX = PicChart.Left - TextWidth(Abs(ValuePrint)) - TextWidth("00") CurrentY = PicChart.Top + PicChart.Height * YCounter / NyGrid - TextHeight(ValuePrint) / 2

Print ValuePrint

Next YCounter

'Задание массивов Call EntryArray(NValue)

'Рисование графиков PicChart.DrawStyle = vbSolid PicChart.DrawWidth = 2

For YCounter = 1 To NFunc 'Изменение цветов

Select Case YCounter

Case 1: PicChart.ForeColor = vbRed Case 2: PicChart.ForeColor = vbBlue Case 3: PicChart.ForeColor = vbGreen End Select

'Рисование первой точки XDraw1 = ArrX(1)

YDraw1 = ArrY(YCounter, 1) PicChart.PSet (XDraw1, YDraw1)

'Рисование остальных точек For XCounter = 2 To NValue XDraw1 = ArrX(XCounter)

YDraw1 = ArrY(YCounter, XCounter) PicChart.Line -(XDraw1, YDraw1) Next XCounter

Next YCounter

Erase ArrX, ArrY

End Sub

'Заполнение массивов

Private Sub EntryArray(NX As Integer)

Dim XCounter As Integer

Dim XMin As Currency, XMax As Currency, XStep As Currency, _ XNow As Currency

Dim KardParam As Integer

Dim RoseParamA As Integer, RoseParamM As Currency

'Граничные значения аргумента XMin = -2 * Pi

XMax = 2 * Pi

XStep = (XMax - XMin) / (NX - 1)

'Выбор функции

Select Case cboName.Text Case "Фигуры Лиссажу"

'Фигуры Лиссажу NFunc = 1

ReDim ArrX(1 To NX) As Currency, ArrY(1 To NFunc, 1 To NX) For XCounter = 1 To NX

XNow = XMin + (XCounter - 1) * XStep ArrX(XCounter) = Sin(2 * XNow) ArrY(1, XCounter) = Sin(3 * XNow) Next XCounter

'Кордиоида (a=1,a=2,a=3) Case "Кардиоида" NFunc = 3

ReDim ArrX(1 To NX) As Currency, ArrY(1 To NFunc, 1 To NX) For XCounter = 1 To NX

XNow = XMin + (XCounter - 1) * XStep KardParam = 1

ArrX(XCounter) = Cos(XNow) * 2 * KardParam * (1 + Cos(XNow)) ArrY(1, XCounter) = Sin(XNow) * 2 * KardParam * (1 + Cos(XNow)) KardParam = 2

ArrY(2, XCounter) = Sin(XNow) * 2 * KardParam * (1 + Cos(XNow)) KardParam = 3

ArrY(3, XCounter) = Sin(XNow) * 2 * KardParam * (1 + Cos(XNow)) Next XCounter

'Розы (a=1,m=5/3) Case "Розы" NFunc = 1

ReDim ArrX(1 To NX) As Currency

ReDim ArrY(1 To NFunc, 1 To NX) As Currency For XCounter = 1 To NX

XNow = XMin + (XCounter - 1) * XStep RoseParamA = 1

RoseParamM = 5 / 3

ArrX(XCounter) = Cos(XNow) * RoseParamA * Sin(RoseParamM * XNow)

ArrY(1, XCounter) = Sin(XNow) * RoseParamA * Sin(RoseParamM * XNow)

Next XCounter

End Select

End Sub

Соседние файлы в папке Информатика_файлы