Обработка в 1С:Предприятие 8.0
1.Построить
график функции
y=f(x)
2.Имеются данные
x1,x2,x3...xN
где
x1<x2<x3<...xN
3.Математическая формулировка данных
Для построения графика функции y=f(x) на
бумаге выбирается прямоугольник с размерами (X1,Xn)*(Y1,Yn).
Основная проблема ,возникающая при построении графиков на
экране монитора,обусловлена необходимостью
масштабировать прямоугольник (X1,Xn)*(Y1,Yn)
в прямоугольник на экране монитора (I1,I2)*(J1,J2)
рис
Графиком функции y=f(x) называется множество точек
(x;y) плоскости
xOy ,координаты которых связаны соотношением у=f(x).
Само равенство у=f(x) называется
уравнением этого графика.
3.1.Масштабирование
Масштабирование по осям ОX и ОY
реализуется при помощи линейных зависимостей
(x-x1)/(xn-x1) = (i-i1)/(in-i1)
(y-y1)/(yn-y1)= (j-in)/(j1-jn)
При вычислении вертикальных экранных координат необходимо с помощью знака
учитывать ,что
нумерация строк идет сверху вниз.
3.2 Шаг(
h) по оси X
h =(xn-x1)/n
3.3 Построение графика функции отрезками
3.3.1 Начальные данные
x=x1
y=f(x)
3.3.2 Построение графика
x = x+h
y = f(x)
4.Алгоритм обработки
Процедура Кнопка1Нажатие(Элемент)
//Нужно доделать по оси y
// Вставить содержимое обработчика.
Диаграмма = ЭлементыФормы.Диаграмма1;
Диаграмма.Очистить();
Диаграмма.Обновление = Ложь;
Диаграмма.Серии.Добавить("Серия 1");
ЗапросS = Новый Запрос;
ЗапросS.Текст = "
|SELECT
| MIN(X) AS Xs ,
| MAX(X)AS Xmax ,
|Count(X)As N
|FROM Справочник.Справочник12 " ;
в = ЗапросS.Выполнить().Выбрать();
Пока в.Следующий()=1 Цикл
Xb = в.Xs;
Xmax = в.Xmax;
Ns = в.N;
КонецЦикла;
//Сообщить(Xb);
//Сообщить(Xmax);
// Сообщить(Ns);
x1 = Xb ; //Min
x2 = Xmax ; //Max
//Начало
I1= x1;
I2= x2;
//График функции
// y =f(x)
y1= x1;
y2 = x2;
//Iy1= Диаграмма.ПолучитьЗначение(0,0) ;
//Iy2= Диаграмма.ПолучитьЗначение(Ns-1,0) ;
//****************
x=x1;////начало отсчета
h=0; //начало отсчета шаг = 0
For n=1 To Ns Do
x=x+h;
//График функции
y=x;
// // Функция масштабирования по оси Х
//II= I1+Round((x-X1)*(I2-I1)/(X2-X1));
II= I1+(x-X1)*(I2-I1)/(X2-X1);
//Iy1= Диаграмма.ПолучитьЗначение(n-1,0) ;
//Iy1= Диаграмма.УстановитьЗначение(n-1,0,y);
// Сообщить(Iy1);
//IIy= Iy1+(y-y1)*(Iy2-Iy1)/(y2-y1);
// // Функция масштабирования по оси Y
// JJ = J2+ Round((y-Y1)*(J1-J2)/(Y2-Y1))
////построение графика функции отрезками
// T = ""+(x+h);
T = ""+ II;
Диаграмма.Точки.Добавить(T);
Диаграмма.УстановитьЗначение(n-1,0,y);
// Iy1= Диаграмма.ПолучитьЗначение(1,0) ;
// Сообщить(Iy1);
//ПолучитьЗначение(<Точка>, <Серия>)
h = (x2-x1)/Ns; //ДЛИНА ШАГА
EndDo;
Диаграмма.Обновление = Истина;
КонецПроцедуры
|