Já desenhei um retangulo e quadrado no terminal, porém não consigo desenha o: Triângulo Esquerdo: precisa da base e da altura; Círculo: precisa do raio. Por favor me ajudem.
public static void triangulo(int base, int altura)
{
char[][] tela = new char[altura][base];
preencher(tela, ' ');
linha(tela, 0, altura - 1, base - 1, altura - 1); // desenha a base
linha(tela, 0, 0, 0, altura - 1); // desenha a altura (esquerdo)
linha(tela, 0, 0, base - 1, altura - 1); // diagonal
imprimir(tela);
}
no método linha, use a equação da reta:
public static void linha(char[][] tela, int xi, int yi, int xf, int yf) {
double m; // calcula m
if (Math.abs(m) < 1) {
// loop corre em x
for (int x = xi; x <= xf; x++) {
int y; // calcula y
tela[y][x] = '*';
}
} else {
// loop corre em y
...
}
}
para o circulo, a mesma coisa:
public static void circulo(int r)
{
char[][] tela = new char[r * 2 + 1][r * 2 + 1];
preencher(tela, ' ');
for (int x = 0; x < r; x++) {
int y;// calcula y
// atualiza tela nas quatro direções:
tela[y + r][x + r] = '*';
tela[-y + r][x + r] = '*';
tela[y + r][-x + r] = '*';
tela[-y + r][-x + r] = '*';
}
for (int y = 0; y < r; y++) {
...
}
imprimir(tela);
}
import java.lang.Math;
public class Desenho
{
public static void main(String[] args)
{
//triangulo(15, 20);
circulo(7);
}
public static void circulo(int r)
{
char[][] tela = new char[r * 2 + 1][r * 2 + 1];
preencher(tela, ' ');
for (int x = 0; x < r; x++) {
int y = (int) Math.sqrt(r * r - x * x);
tela[y + r][x + r] = '*';
tela[-y + r][x + r] = '*';
tela[y + r][-x + r] = '*';
tela[-y + r][-x + r] = '*';
}
for (int y = 0; y < r; y++) {
int x = (int) Math.sqrt(r * r - y * y);
tela[y + r][x + r] = '*';
tela[-y + r][x + r] = '*';
tela[y + r][-x + r] = '*';
tela[-y + r][-x + r] = '*';
}
imprimir(tela);
}
public static void triangulo(int base, int altura)
{
char[][] tela = new char[altura][base];
preencher(tela, ' ');
linha(tela, 0, altura - 1, base - 1, altura - 1); // desenha a base
linha(tela, 0, 0, 0, altura - 1); // desenha a altura (esquerdo)
linha(tela, 0, 0, base - 1, altura - 1); // diagonal
imprimir(tela);
}
public static void linha(char[][] tela, int xi, int yi, int xf, int yf) {
double m = (yf - yi) / (1.0 * (xf - xi));
if (Math.abs(m) < 1) {
for (int x = xi; x <= xf; x++) {
int y = (int)((x - xi) * m + yi);
tela[y][x] = '*';
}
} else {
for (int y = yi; y <= yf; y++) {
int x = (int)((y - yi + xi) / m);
tela[y][x] = '*';
}
}
}
public static void imprimir(char[][] tela) {
for (int y = 0; y < tela.length; y++) {
for (int x = 0; x < tela[y].length; x++) {
System.out.print(tela[y][x]);
}
System.out.println();
}
}
public static void preencher(char[][] tela, char c) {
for (int y = 0; y < tela.length; y++) {
for (int x = 0; x < tela[y].length; x++) {
tela[y][x] = c;
}
}
}
}
1 curtida