public void tobuf(ZBuffer zb) { int j = 0; for (int i = 0; i < trian.Count; i = i + 3) { TPoint3D p1 = new TPoint3D(WN[trian[i]].getx(), WN[trian[i]].gety(), WN[trian[i]].getz()); TPoint3D p2 = new TPoint3D(WN[trian[i + 1]].getx(), WN[trian[i + 1]].gety(), WN[trian[i + 1]].getz()); TPoint3D p3 = new TPoint3D(WN[trian[i + 2]].getx(), WN[trian[i + 2]].gety(), WN[trian[i + 2]].getz()); Pen o = new Pen(penz[j]); Triangle t1 = new Triangle(p1, p2, p3, o); zb.PutTriangle(t1); j++; } }
public TCube3D(string file_name) { String str; StreamReader sr = new StreamReader(file_name); str = sr.ReadLine(); while (str != null) { if (str.Length >= 1) { if (str[0] == 'v') //если v то далее будем читать вершину кубика { int x, y, z; x = Int16.Parse(sr.ReadLine()); y = Int16.Parse(sr.ReadLine()); z = Int16.Parse(sr.ReadLine()); TPoint3D point = new TPoint3D(x, y, z); w.Add(point); WN.Add(point); } if (str[0] == 'k') //если k то далее будем читать номера вершин по которым нужно нарисовать треугольник { int p1, p2, p3; p1 = Int16.Parse(sr.ReadLine()); p2 = Int16.Parse(sr.ReadLine()); p3 = Int16.Parse(sr.ReadLine()); trian.Add(p1); trian.Add(p2); trian.Add(p3); } } str = sr.ReadLine(); } //close the file sr.Close(); Random random = new Random(); for (int i = 0; i < trian.Count / 3; i++) { penz.Add(Color.FromArgb(random.Next(250), random.Next(250), random.Next(250))); } }
public void view_transformation(double LX, double LY, double LZ, double RRRX, double RRRY, double zoom) { //каждый кадр мы берём кубик который считали из файла и изменяем его по этим параметрам double KX1, KY1, KZ1; double KX2, KY2, KZ2; double KX3, KY3, KZ3; for (int i = 0; i < w.Count; i++) { //берём по очереди все вершины кубика // умножаем на матрицу поворота X KX1 = w[i].getx(); KY1 = w[i].gety() * Math.Cos(LX) + w[i].getz() * Math.Sin(LX); KZ1 = -w[i].gety() * Math.Sin(LX) + w[i].getz() * Math.Cos(LX); // умножаем на матрицу поворота Y KX2 = KX1 * Math.Cos(LY) - KZ1 * Math.Sin(LY); KY2 = KY1; KZ2 = KX1 * Math.Sin(LY) + KZ1 * Math.Cos(LY); // умножаем на матрицу поворота Z KX3 = KX2 * Math.Cos(LZ) + KY2 * Math.Sin(LZ); KY3 = -KX2 *Math.Sin(LZ) + KY2 * Math.Cos(LZ); KZ3 = KZ2; KX3 += RRRX; // перемещаем кубик в просранстве KY3 += RRRY; KX3 *= zoom; // изменяем размер KY3 *= zoom; KZ3 *= zoom; TPoint3D NN = new TPoint3D(KX3, KY3, KZ3); WN[i] = NN; } }
public Triangle(TPoint3D p1, TPoint3D p2, TPoint3D p3, Pen c) { p[0] = p1; p[1] = p2; p[2] = p3; color = c; }