Компьютерная графика, мультимедиа и игры на Visual C#



         

Глава Изображение и управление поверхностями в трехмерном пространстве


Листинг 37.1. Код выше и в теле метода Form1_Load.

//Вводим функцию для изображаемой поверхности z = f(x, y):

double f1;

double f(double x, double y)

{

    //Параметры поверхности z = f(x, y)для эллипсоида:

    double a = 1.03;

    double b = 1.02;

    double c = 1.01;

    //Уравнение поверхности z = f(x, y) в виде эллипсоида:

    f1 = Math.Sqrt(c * c * (200 - x * x / (a * a) –

                                          y * y / (b * b)));

    return f1;

}

//Точка наблюдения:

myClassPoint3D myEye = new myClassPoint3D();

//Концы числового интервала области задания поверхности:

const int x_max = 20;

const int y_max = 20;

const int x_min = -10;

const int y_min = -10;

//Массив узловых точек:

myClassPoint3D[,] Points = new myClassPoint3D[x_max + 1, y_max + 1];

//Точки на осях координат:

myClassPoint3D[] Axes = new myClassPoint3D[4];

//Загрузка данных и их инициализация:

private void Form1_Load(object sender, EventArgs e)

{

    //Задаем координаты точки наблюдения:

    myEye = new myClassPoint3D(40, 20, 20);

      //Объявляем координаты точки:

      double x, y, z; int i, j;

      //В каждом (i,j)-м узле плоскости x,y

      //рассчитываем координату z точки пов-ти z = f(x, y):

      for (i = 0; i <= x_max; i++)

      {

            x = i + x_min;

            for (j = 0; j <= y_max; j++)

            {

                  y = j + y_min;

                  //Координата z точек пов-ти z = f(x, y):

                  z = f(x, y);

                  Points[i, j] = new myClassPoint3D(x, y, z);

            }

      }

      //Инициализация осей (axes) координат:

      Axes[0] = new myClassPoint3D(0, 0, 0);

      Axes[1] = new myClassPoint3D(30, 0, 0);

      Axes[2] = new myClassPoint3D(0, 30, 0);

      Axes[3] = new myClassPoint3D(0, 0, 30);

}

Чтобы мы могли рисовать заданную поверхность и оси координат внутри графического элемента PictureBox, в панели Properties (для этого элемента) на вкладке Events дважды щелкаем по имени события Paint. Появляется файл Form1.cs с шаблоном (метода pictureBox1_Paint), который после записи кода принимает такой вид.




Содержание  Назад  Вперед