public void DesenhaYZ(DirectBitmap bmp, Color cor, bool visivel) { zBuffer(bmp.Width, bmp.Height); Vertice v1, v2; foreach (Face f in this.Faces) { for (int i = 0; i < f.length(); i++) { v1 = new Vertice(VerticesAtuais[f.getFace(i)].Y + dx, VerticesAtuais[f.getFace(i)].Z + dy, VerticesAtuais[f.getFace(i)].Z); if (i == f.length() - 1) { v2 = new Vertice(VerticesAtuais[f.getFace(0)].Y + dx, VerticesAtuais[f.getFace(0)].Z + dy, VerticesAtuais[f.getFace(0)].Z); } else { v2 = new Vertice(VerticesAtuais[f.getFace(i + 1)].Y + dx, VerticesAtuais[f.getFace(i + 1)].Z + dy, VerticesAtuais[f.getFace(i + 1)].Z); } if (visivel) { f.calculaNormal(VerticesAtuais); if (f.VetNormal.X >= 0) { Primitivas.Bresenhan(v1, v2, bmp, cor); } } else { Primitivas.Bresenhan(v1, v2, bmp, cor); } } } }
public void DesenhaPtfuga(DirectBitmap bmp, Color cor, bool visivel) { int d = -400; Vertice v1, v2; foreach (Face f in this.Faces) { for (int i = 0; i < f.length(); i++) { v1 = new Vertice(VerticesAtuais[f.getFace(i)].X, VerticesAtuais[f.getFace(i)].Y, VerticesAtuais[f.getFace(i)].Z); if (i == f.length() - 1) { v2 = new Vertice(VerticesAtuais[f.getFace(0)].X, VerticesAtuais[f.getFace(0)].Y, VerticesAtuais[f.getFace(0)].Z); } else { v2 = new Vertice(VerticesAtuais[f.getFace(i + 1)].X, VerticesAtuais[f.getFace(i + 1)].Y, VerticesAtuais[f.getFace(i + 1)].Z); } v1.X = v1.X * d / (v1.Z += d); v1.Y = v1.Y * d / v1.Z; v2.X = v2.X * d / (v2.Z += d); v2.Y = v2.Y * d / v2.Z; v1.X += dx; v1.Y += dy; v2.X += dx; v2.Y += dy; /*if (visivel) * { * if (f.calculaNormal(VerticesAtuais, NormaisFaces)) * Primitivas.Bresenhan(v1, v2, bmp, cor); * } * else*/ Primitivas.Bresenhan(v1, v2, bmp, cor); } } }
public void DesenhaCavaleira(DirectBitmap bmp, Color cor, bool visivel) { double alfa = (Math.PI * 45) / 180; Vertice v1, v2; foreach (Face f in this.Faces) { for (int i = 0; i < f.length(); i++) { v1 = new Vertice(VerticesAtuais[f.getFace(i)].X + dx, VerticesAtuais[f.getFace(i)].Y + dy, VerticesAtuais[f.getFace(i)].Z); if (i == f.length() - 1) { v2 = new Vertice(VerticesAtuais[f.getFace(0)].X + dx, VerticesAtuais[f.getFace(0)].Y + dy, VerticesAtuais[f.getFace(0)].Z); } else { v2 = new Vertice(VerticesAtuais[f.getFace(i + 1)].X + dx, VerticesAtuais[f.getFace(i + 1)].Y + dy, VerticesAtuais[f.getFace(i + 1)].Z); } v1.X = v1.X + (v1.Z * (Math.Cos(alfa))); v1.Y = v1.Y + (v1.Z * (Math.Sin(alfa))); v2.X = v2.X + (v2.Z * (Math.Cos(alfa))); v2.Y = v2.Y + (v2.Z * (Math.Sin(alfa))); /*if (visivel) * { * if (f.calculaNormal(VerticesAtuais, NormaisFaces)) * Primitivas.Bresenhan(v1, v2, bmp, cor); * } * else*/ Primitivas.Bresenhan(v1, v2, bmp, cor); } } }