public Cilindro(string rotulo, Objeto paiRef) : base(rotulo, paiRef) { int segments = 10; // Números mais altos melhoram a qualidade int radius = 1; // O raio (largura) do cilindro int height = 1; // A altura do cilindro for (double y = 0; y < 2; y++) { for (double x = 0; x < segments; x++) { double theta = (x / (segments - 1)) * 2 * Math.PI; base.PontosAdicionar(new Ponto4D( (float)(radius * Math.Cos(theta)), (float)(height * y), (float)(radius * Math.Sin(theta)))); } } // ponto do centro da base base.PontosAdicionar(new Ponto4D(0, 0, 0)); // ponto do centro da topo base.PontosAdicionar(new Ponto4D(0, height, 0)); for (int x = 0; x < segments - 1; x++) { // lados listaTopologia.Add(x); listaTopologia.Add(x + segments); listaTopologia.Add(x + segments + 1); listaTopologia.Add(x + segments + 1); listaTopologia.Add(x + 1); listaTopologia.Add(x); // base listaTopologia.Add(x); listaTopologia.Add(x + 1); listaTopologia.Add(segments - 1); // topo listaTopologia.Add(x + segments + 1); listaTopologia.Add(x + segments); listaTopologia.Add(segments); } }
public Cubo(string rotulo, Objeto paiRef, Bitmap bitmap) : base(rotulo, paiRef) { GL.Hint(HintTarget.PerspectiveCorrectionHint, HintMode.Nicest); GL.GenTextures(1, out texture); GL.BindTexture(TextureTarget.Texture2D, texture); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear); BitmapData data = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb); GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, data.Width, data.Height, 0, OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, data.Scan0); bitmap.UnlockBits(data); base.PontosAdicionar(new Ponto4D(-0.5, -0.5, 0.5)); // PtoA listaPto[0] base.PontosAdicionar(new Ponto4D(0.5, -0.5, 0.5)); // PtoB listaPto[1] base.PontosAdicionar(new Ponto4D(0.5, 0.5, 0.5)); // PtoC listaPto[2] base.PontosAdicionar(new Ponto4D(-0.5, 0.5, 0.5)); // PtoD listaPto[3] base.PontosAdicionar(new Ponto4D(-0.5, -0.5, -0.5)); // PtoE listaPto[4] base.PontosAdicionar(new Ponto4D(0.5, -0.5, -0.5)); // PtoF listaPto[5] base.PontosAdicionar(new Ponto4D(0.5, 0.5, -0.5)); // PtoG listaPto[6] base.PontosAdicionar(new Ponto4D(-0.5, 0.5, -0.5)); // PtoH listaPto[7] }
public Poligono(char rotulo, Objeto paiRef) : base(rotulo, paiRef) { }
public ObjetoGeometria(string rotulo, Objeto paiRef, BeginMode beginMode) : base(rotulo, paiRef, beginMode) { }
public ObjetoGeometria(string rotulo, Objeto paiRef) : base(rotulo, paiRef) { }
public BBox(Objeto referencia) { this.referencia = referencia; }
public Poligono(string rotulo, Objeto paiRef) : base(rotulo, paiRef) { }
public ObjetoGeometria(char rotulo, Objeto paiRef) : base(rotulo, paiRef) { }
public Tabuleiro(char rotulo, Objeto paiRef, CameraPerspective c) : base(rotulo, paiRef) { camera = c; // adiciona chão addPontosFaces(-9.1f, 9.1f, -0.2f, 0.0f, 9.1f, -9.1f); int posTrilha = 8; float inicio_x = -0.7f; float inicio_z = 8.9f; // adiciona os pontos das plataformas da trilha - listaPto[8] a for (int i = 1; i <= 12; i++) { // se i != 1 começa a contar em 2, pois a primeira peça já foi adicionada // se i == 3, 6, 9 ou 12, então possui somente 3 peças na fileira, senão possui 7 for (int j = (i == 1 ? 1 : 2); (i % 3 == 0 ? j <= 3 : j <= 7); j++) { trilha.Add(posTrilha); addPontosFaces(inicio_x - 1f, inicio_x, 0.0f, 0.2f, inicio_z, inicio_z - 1f); // salva a posição das plataformas importantes do jogo if (i == 1 && j == 2) { posJogadorAzul = trilha.Count - 1; } else if (i == 7 && j == 2) { posJogadorVermelho = trilha.Count - 1; } else if (i == 6 && j == 2) { posTerminaVermelho = trilha.Count - 1; } else if (i == 12 && j == 2) { posTerminaAzul = trilha.Count - 1; } posTrilha += QUANTIDADE_PONTOS; // muda as variáveis para a próxima plataforma if ((i % 3 == 0 && j != 3) || (i % 3 != 0 && j != 7)) { if (i == 1 || i == 3 || i == 5) { inicio_z -= 1.2f; } else if (i == 2 || i == 10 || i == 12) { inicio_x -= 1.2f; } else if (i == 4 || i == 6 || i == 8) { inicio_x += 1.2f; } else if (i == 7 || i == 9 || i == 11) { inicio_z += 1.2f; } } } if (i == 12 || i == 2 || i == 4) { inicio_z -= 1.2f; } else if (i == 1 || i == 9 || i == 11) { inicio_x -= 1.2f; } else if (i == 3 || i == 5 || i == 7) { inicio_x += 1.2f; } else if (i == 6 || i == 8 || i == 10) { inicio_z += 1.2f; } } inicio_x = 0.5f; inicio_z = 7.7f; for (int i = 1; i <= 13; i++) { if (i <= 6) { caminhoAzul.Add(posTrilha); } else if (i == 7) { posDado = posTrilha; } else { caminhoVermelho.Add(posTrilha); } addPontosFaces(inicio_x - 1f, inicio_x, 0.0f, 0.2f, inicio_z, inicio_z - 1f); posTrilha += 8; // muda as variáveis para a próxima plataforma inicio_z -= 1.2f; } // adiciona os pontos da casa azul // muros da casa casaAzul.Add(posTrilha); casaAzul.Add(posTrilha + 8); casaAzul.Add(posTrilha + 16); casaAzul.Add(posTrilha + 24); addPontosFaces(-2.9f, -1.9f, 0.0f, 0.6f, 6.5f, 1.9f); addPontosFaces(-8.9f, -2.9f, 0.0f, 0.6f, 2.9f, 1.9f); addPontosFaces(-8.9f, -7.9f, 0.0f, 0.6f, 8.9f, 2.9f); addPontosFaces(-7.9f, -1.9f, 0.0f, 0.6f, 8.9f, 7.9f); posTrilha += 32; // plataformas das peças posCasaAzul = posTrilha; casaAzul.Add(posTrilha); casaAzul.Add(posTrilha + 8); casaAzul.Add(posTrilha + 16); casaAzul.Add(posTrilha + 24); addPontosFaces(-5.0f, -3.6f, 0.0f, 0.2f, 7.2f, 5.8f); addPontosFaces(-7.2f, -5.8f, 0.0f, 0.2f, 7.2f, 5.8f); addPontosFaces(-5.0f, -3.6f, 0.0f, 0.2f, 5.0f, 3.6f); addPontosFaces(-7.2f, -5.8f, 0.0f, 0.2f, 5.0f, 3.6f); posTrilha += 32; // plataformas das peças salvas salvoAzul.Add(posTrilha); salvoAzul.Add(posTrilha + 8); salvoAzul.Add(posTrilha + 16); salvoAzul.Add(posTrilha + 24); addPontosFaces(3.6f, 5.0f, 0.0f, 0.2f, 7.2f, 5.8f); addPontosFaces(5.8f, 7.2f, 0.0f, 0.2f, 7.2f, 5.8f); addPontosFaces(3.6f, 5.0f, 0.0f, 0.2f, 5.0f, 3.6f); addPontosFaces(5.8f, 7.2f, 0.0f, 0.2f, 5.0f, 3.6f); posTrilha += 32; // adiciona os pontos da casa vermelha // muros da casa casaVermelha.Add(posTrilha); casaVermelha.Add(posTrilha + 8); casaVermelha.Add(posTrilha + 16); casaVermelha.Add(posTrilha + 24); addPontosFaces(1.9f, 2.9f, 0.0f, 0.6f, -1.9f, -6.5f); addPontosFaces(2.9f, 8.9f, 0.0f, 0.6f, -1.9f, -2.9f); addPontosFaces(7.9f, 8.9f, 0.0f, 0.6f, -2.9f, -8.9f); addPontosFaces(1.9f, 7.9f, 0.0f, 0.6f, -7.9f, -8.9f); posTrilha += 32; // plataformas das peças posCasaVermelha = posTrilha; casaVermelha.Add(posTrilha); casaVermelha.Add(posTrilha + 8); casaVermelha.Add(posTrilha + 16); casaVermelha.Add(posTrilha + 24); addPontosFaces(3.6f, 5.0f, 0.0f, 0.2f, -5.8f, -7.2f); addPontosFaces(5.8f, 7.2f, 0.0f, 0.2f, -5.8f, -7.2f); addPontosFaces(3.6f, 5.0f, 0.0f, 0.2f, -3.6f, -5.0f); addPontosFaces(5.8f, 7.2f, 0.0f, 0.2f, -3.6f, -5.0f); posTrilha += 32; // plataformas das peças salvas salvoVermelho.Add(posTrilha); salvoVermelho.Add(posTrilha + 8); salvoVermelho.Add(posTrilha + 16); salvoVermelho.Add(posTrilha + 24); addPontosFaces(-5.0f, -3.6f, 0.0f, 0.2f, -5.8f, -7.2f); addPontosFaces(-7.2f, -5.8f, 0.0f, 0.2f, -5.8f, -7.2f); addPontosFaces(-5.0f, -3.6f, 0.0f, 0.2f, -3.6f, -5.0f); addPontosFaces(-7.2f, -5.8f, 0.0f, 0.2f, -3.6f, -5.0f); posTrilha += 32; Ponto4D pto; // adiciona dado pto = getPontoInicialPeca(Ambiente.MEIO, 0, 0.8f); obj_Dado = new Dado(Utilitario.charProximo(), this, pto, 0.8f, new Cor(0, 0, 255, 255), new Cor(255, 0, 0, 255)); Peca p; Cor cor = new Cor(0, 0, 255, 255); // adiciona peças azuis for (int i = 0; i < 4; i++) { pto = getPontoInicialPeca(Ambiente.CASA_AZUL, i, 0.6f); p = new Peca(Utilitario.charProximo(), this, pto, 0.6f, 1, cor, Ambiente.CASA_AZUL, i); pecasAzuis.Add(p); } cor = new Cor(255, 0, 0, 255); // adiciona peças vermelhas for (int i = 0; i < 4; i++) { pto = getPontoInicialPeca(Ambiente.CASA_VERMELHA, i, 0.6f); p = new Peca(Utilitario.charProximo(), this, pto, 0.6f, 2, cor, Ambiente.CASA_VERMELHA, i); pecasVermelhas.Add(p); } }