Пример #1
0
        public static cls2D_Picture drawTopsFromObjectFile(List <cls3D_Point> points)
        {
            cls2D_Picture pointsImage = new cls2D_Picture(1800, 1500);                  // создаем фон изображения

            for (int i = 0; i < points.Count - 1; i++)
            {
                cls3D_Point temp = points[i];
                pointsImage.setPixel(temp.X, temp.Y, new clsRGB(255, 0, 0));     // рисуем ранее записанные точки
            }
            return(pointsImage);
        }
Пример #2
0
        // подсчет барицентрических координат
        public void Calculating_lambda_coefficients(cls3D_Point screenPoint)
        {
            double x0 = polygon[0].X;
            double x1 = polygon[1].X;
            double x2 = polygon[2].X;
            double y0 = polygon[0].Y;
            double y1 = polygon[1].Y;
            double y2 = polygon[2].Y;
            double y  = screenPoint.Y;
            double x  = screenPoint.X;

            Lambda0 = ((x1 - x2) * (y - y2) - (y1 - y2) * (x - x2)) /
                      ((x1 - x2) * (y0 - y2) - (y1 - y2) * (x0 - x2));
            lambda1 = ((x2 - x0) * (y - y0) - (y2 - y0) * (x - x0)) /
                      ((x2 - x0) * (y1 - y0) - (y2 - y0) * (x1 - x0));
            lambda2 = ((x0 - x1) * (y - y1) - (y0 - y1) * (x - x1)) /
                      ((x0 - x1) * (y2 - y1) - (y0 - y1) * (x2 - x1));
        }
Пример #3
0
 // считываем и записываем вершины
 public static List <cls3D_Point> loadTopsFromObjectFileForLineTrans()
 {
     lines = File.ReadAllLines("Test.obj");                                  // считывание информации из файла
     for (int i = 0; i < lines.Length; i++)
     {
         words = lines[i].Split(' ');
         if (words[0] == "v")                                                // ищем вершины
         {
             // CultureInfo.InvariantCulture позволяет читать десятичные числа как 0.хххх, а не 0,ххх
             x = double.Parse(words[1], CultureInfo.InvariantCulture);       // считываем врешины
             y = double.Parse(words[2], CultureInfo.InvariantCulture);
             z = double.Parse(words[3], CultureInfo.InvariantCulture);
             cls3D_Point point = new cls3D_Point(x, y, z, 5000, 600);       // инициализируем точку по координатам
             pointsForLineTrans.Add(point);                                 // записываем в лист точку
         }
     }
     return(pointsForLineTrans); // возвращаем массив точек
 }
Пример #4
0
 // конструктор
 internal clsPolygon(cls3D_Point p1, cls3D_Point p2, cls3D_Point p3)
 {
     this.points[0] = p1;
     this.points[1] = p2;
     this.points[2] = p3;
 }