Построитель графиков на C#

Автор работы: Пользователь скрыл имя, 05 Октября 2011 в 16:20, дипломная работа

Краткое описание

Мир компьютерных и информационных технологий без преувеличения можно назвать наиболее динамичной областью современных знаний. Практически каждый год появляются новые модели процессоров и комплектующих, новые версии операционных систем и программного обеспечения. Все это происходит на фоне постоянного усложнения не только отдельных физических и программных компонентов, но и лежащих в их основе концепций и идей. Появилась надобность создавать все более большие сложные программы.

Содержание работы

ПОСТАНОВКА ЗАДАЧИ 6

ВВЕДЕНИЕ 7

1. ОБЩАЯ ЧАСТЬ 8

1.1. Обзор состояния вопроса 8

1.2. Основные этапы разработки программных продуктов 11

1.2.1. Концептуализация 12

1.2.2. Анализ разрабатываемого приложения 14

1.2.3. Проектирование разрабатываемого приложения 16

1.2.4. Эволюция приложения 17

1.2.5. Сопровождение приложения 19

1.3. Технологии разработки программных продуктов 20

1.3.1. Объектно-ориентированное программирование 20

1.3.2. Технология .NET 21

1.3.2.1. Компоненты .NET 23

1.3.2.2. Двоичный стандарт компонентов 25

2. СПЕЦИАЛЬНАЯ ЧАСТЬ 27

2.1. Разработка программы 27

2.1.1. Анализ разрабатываемого приложения 27

2.1.2. Проектирование разрабатываемого приложения 34

2.2. Языки программирования 35

2.3. Выбор языка программирования 37

2.4. Применение графиков в решении уравнений 38

3. ЭКОНОМИЧЕСКАЯ ЧАСТЬ 41

3.1. Исходные данные 41

3.2. Применяемые формулы с расшифровкой условных обозначений 42

3.3. Расчет полной себестоимости разработки программного

продукта по базовому варианту 45

3.4. Расчет полной себестоимости разработки программного

продукта по эксплуатационному варианту 46

3.5. Расчет полной себестоимости разработки программного

продукта по варианту разработки 57

3.6. Расчет экономической эффективности внедрения

программного продукта 48

3.7. Социально-психологические аспекты

использования разработки 50

4. ЭКСПЛУАТАЦИЯ ТЕХНИЧЕСКИХ И ПРОГРАММНЫХ

СРЕДСТВ 51

4.1. Эксплуатация технических средств 51

4.2. Эксплуатация разработанной программы 52

ЗАКЛЮЧЕНИЕ 54

СПИСОК ЛИТЕРАТУРЫ 55

ПРИЛОЖЕНИЕ 56

Содержимое работы - 1 файл

Дипломная.doc

— 1.25 Мб (Скачать файл)

                  float _scale_z = 0;

                  Matrix m = new Matrix();

                  if(num_vertices > 100)

                  {

                        _scale_x = scale_x*5;

                        _scale_y = scale_y*5;

                        _scale_z = scale_z*5;

                  }

                  else

                  {

                        _scale_x = scale_x*5;

                        _scale_y = scale_y*5;

                        _scale_z = scale_z*5;

                  } 

                        //Создаем матрицу масштабирования

                        m = m.Scale(_scale_x, _scale_y, _scale_z); 

                  for(int vert=0; vert<=num_vertices; vert++)

                  

                        vlist_local[vert] = vlist_local[vert]*m;

                        vlist_local[vert] = vlist_local[vert]*mrot;

                  }

            }

            public void Local_To_World_Object() //Преобразуем координаты графика в мировые координаты

            {

                  for(int vert=0; vert<=num_vertices; vert++)

                  {  

                        vlist_trans[vert] = vlist_trans[vert]+world_pos;

                  

            }

            public void World_To_Camera_Object() //Преобразуем мировые координаты графика в координаты камеры

            {

                  for(int vert=0; vert<=num_vertices; vert++)

                  {           

                        vlist_trans[vert] = vlist_local[vert]*cam.mcam;

                  }

            }

            public void Camera_To_Screen_Object() //Преобразуем в экранные координаты

            {

                  for (int vertex = 0; vertex <= num_vertices; vertex++)

                  {

                        vlist_trans[vertex].y = (cam.viewport_height-vlist_trans[vertex].y);

                  }

            } 

            public void MainGraph()

            {

                  Matrix mrot = new Matrix();

                  //Выполняется  поворот графика

                  TransformGraph(mrot);

                  //Генерируем  матрицу камеры

                  cam.BuildCamera(4, m);

                  //Переходим  из мировых координат в координаты  камеры

                  World_To_Camera_Object();

                  //Переход  из локальных координат к мировым

                  Local_To_World_Object();

                  //Переходим  в экранные координаты

                  Camera_To_Screen_Object();

            

      }

public class Visualization

      {

            public Visualization()

            { 

            }

            public void Draw_Object2D(Graphics g, Graphic graph) //Рисуем график с одной неизвесной

            {

                  g.SmoothingMode = SmoothingMode.HighQuality;

                  Pen pen = new Pen(graph.currColorObject1, 2);

                  int i=0; 

                  for(i=0; i<=graph.num_vertices-2; i++)

                  {

                        if(graph.vlist[i].y == -1001 || graph.vlist[i+1].y == -1001)

                              continue;

                        g.DrawLine(pen, (int)graph.vlist_trans[i].x, (int)graph.vlist_trans[i].y, (int)graph.vlist_trans[i+1].x, (int)graph.vlist_trans[i+1].y);

                  }

            }

            public void Draw_Object3D(Graphics g, Graphic graph) //Рисуем график с двумя неизвесными

            {

                  g.SmoothingMode = SmoothingMode.HighQuality;

                  Pen pen = new Pen(Color.Black, 1);

                  _Math m = new _Math(); 

                  int red=0;

                  int green=0;

                  int blue=0;

                  float k; 

                  int delta = (int)(graph._end-graph._begin);

                  int a = (int)(delta/graph._step)+1;

                  int b = (int)(delta/graph._step);

                  int axb=a*b; 

                  for(int x=0, y=a; x<axb; x+=a, y+=a)

                  {

                        for(int i=x, j=y, t=0; t<b; i++, j++, t++)

                        {

                              k = m.CalculateLight(graph.vlist_trans[i+1], graph.vlist_trans[i], graph.vlist_trans[j]);

                              Color c = Color.FromArgb(red, green, blue);

                              if(graph.Skelet == true)

                              {

                                    red = (int)(k*graph.currColorObject1.R);

                                    green = (int)(k*graph.currColorObject1.G);

                                    blue = (int)(k*graph.currColorObject1.B);

                                    pen = new Pen(c, 1);

                              } 

                              g.DrawPolygon(pen, new Point[] { new Point((int)graph.vlist_trans[i].x, (int)graph.vlist_trans[i].y),

                                                                                 new Point((int)graph.vlist_trans[i+1].x, (int)graph.vlist_trans[i+1].y),

                                                                                 new Point((int)graph.vlist_trans[j+1].x, (int)graph.vlist_trans[j+1].y),

                                                                                 new Point((int)graph.vlist_trans[j].x, (int)graph.vlist_trans[j].y)});

                   

                              red = graph.currColorObject2.R;

                              green = graph.currColorObject2.G;

                              blue = graph.currColorObject2.B; 

                              if(graph.Light == true)

                              {

                                    red = (int)(k*graph.currColorObject2.R);

                                    green = (int)(k*graph.currColorObject2.G);

                                    blue = (int)(k*graph.currColorObject2.B);

                              }

                              //new SolidBrush(col)

                              Color color = Color.FromArgb((int)red, (int)green, (int)blue);

                              g.FillPolygon(new SolidBrush(color), new Point[] { new Point((int)graph.vlist_trans[i].x, (int)graph.vlist_trans[i].y),

                                                                                                         new Point((int)graph.vlist_trans[i+1].x, (int)graph.vlist_trans[i+1].y),

                                                                                                        new Point((int)graph.vlist_trans[j+1].x, (int)graph.vlist_trans[j+1].y),

                                                                                                         new Point((int)graph.vlist_trans[j].x, (int)graph.vlist_trans[j].y)});

Информация о работе Построитель графиков на C#