Fórum distancia entre pontos #444855
05/06/2013
0
somente se for informados os valores de x e y. Crie uma classe Quadrilatero que possui como atributos quatro pontos (Point) que o delimitam. Forneça um construtor para a classe Quadrilatero que recebe como parâmetro estes pontos. Crie as classes Retangulo e Trapezio que são classes mais específicas de Quadrilatero.
Forneça nestas classes métodos que permitam calcular a área dos objetos destes tipos.
Exercicio bobinho de facul que esta me dando um nó na cabeça.
a classe Point ficou assim:
public class Point
{
private int x,y;
}A classe Quadrilatero até entao esta da seguinte forma:
public class Quadrilatero
{
Point p1,p2,p3,p4;
public Quadrilatero(Point x1, Point x2, Point x3, Point x4)
{
p1 = x1;
p2 = x2;
p3 = x3;
p4 = x4;
}
}
O Retangulo assim:
public class Retangulo extends Quadrilatero
{
public Retangulo(Point x1, Point x2, Point x3, Point x4)
{
super(x1,x2,x3,x4);
}
public void CalculaRetangulo()
{
// incompleto neste calculo de distancia de pontos
//nao sei como fazer o get
float baseMaior = Math.sqrt(Math.pow(p1.get(x) - p2.x)
}
}Assim como no Trazpezio que esta da mesma maneira, alg poderia me ajudar ? :(
Return
Curtir tópico
+ 0Posts
05/06/2013
Joel Rodrigues
Exemplo:
public int getX()
{
return this.x;
}
public void setX(int _x)
{
this.x = _x;
}
O mesmo para o Y.
Pois você precisa poder acessar essas variáveis externamente, e da forma como está, as variáveis estão apenas internas (privadas).
Gostei + 0
06/06/2013
Joel Rodrigues
P1 = superior esquerdo P2 = superior direito P3 = inferior esquerdo P4 = inferior direito
A área do retângulo é o produto base x altura. Então antes de tudo você precisa encontrar a base (b) e a altura (h):
Para descobrir o comprimento dos lados (base e altura), basta subtrair as coordenads X ou Y de dois pontos colineares. Por exemplo:
int b = P2.getX() - P1.getX(); //Considerando X como o eixo horizontal int h = P1.getY() - P3.getY(); //Considerando Y como a coordenada vertical
Logo, a área é o produto bxh:
public int getArea()
{
int b = P2.getX() - P1.getX();
//Considerando X como o eixo horizontal
int h = P1.getY() - P3.getY();
//Considerando Y como a coordenada vertical
return b*h;
}
Qualquer dúvida, é só falar.
Gostei + 0
06/06/2013
Joel Rodrigues
Nesse caso, precisaremos encontrar as bases separadamente, pois elas são diferentes. A altura pode ser encontrada da mesma forma que no retângulo e as bases seguem o mesmo raciocínio. Aqui chamaremos as bases de b1 e b2, pois não é importante saber qual é a menor e qual é a maror.
int b1 = P2.getX() - P1.getX(); //base superior int b2 = P4.getX() - P3.getX(); //base inferior int h = P1.getY() - P3.getY(); //altura
Assim sendo, a área é:
public int getArea()
{
int b1 = P2.getX() - P1.getX();
int b2 = P4.getX() - P3.getX();
int h = P1.getY() - P3.getY();
return ((b1+b2) * h)/2;
}
Dúvidas? Perguntas?
Ah, alguma coisa pode estar errada aí, pois fiz direto no notepad sem testar, mas acho que é isso.
Gostei + 0
06/06/2013
Return
Nesse caso, precisaremos encontrar as bases separadamente, pois elas são diferentes. A altura pode ser encontrada da mesma forma que no retângulo e as bases seguem o mesmo raciocínio. Aqui chamaremos as bases de b1 e b2, pois não é importante saber qual é a menor e qual é a maror.
int b1 = P2.getX() - P1.getX(); //base superior int b2 = P4.getX() - P3.getX(); //base inferior int h = P1.getY() - P3.getY(); //altura
Assim sendo, a área é:
public int getArea()
{
int b1 = P2.getX() - P1.getX();
int b2 = P4.getX() - P3.getX();
int h = P1.getY() - P3.getY();
return ((b1+b2) * h)/2;
}
Dúvidas? Perguntas?
Ah, alguma coisa pode estar errada aí, pois fiz direto no notepad sem testar, mas acho que é isso.
Obrigadissima Joel, eu consegui chegar até setar os pontos antes de ver o seu codigo, mais nao estava executando porque eu nao tinha feito a alteração na classe Point. A única coisa que fiz a mais foi fazer as quatro possibilidades de que se (P1.getx < p2.getx && P1.gety < p2.gety) ou (P2.getx < p1.getx && P2.gety < p1.gety) ou (P1.getx < p2.getx && P2.gety < p1.gety) ou (P2.getx < p1.getx && P1.gety < p2.gety) , porque ele só pode fazer a subtração dos pontos se souber qual é o menor, pelo menos foi a essa a orientação que me deram.
vc conseguiu clarear a minha mente e muuuito (como sempre né), muitissimo obrigada!!
Vou tentar executar aqui, qualquer coisinha grito você
Gostei + 0
06/06/2013
Joel Rodrigues
Eu não fiz essas verificações por que considerei que OBRIGATORIAMENTE o usuário iria digitar os pontos corretamente, como eu defini. Mas essas verificações são importantíssimas.
Boa sorte e qualquer coisa, é só falar.
Gostei + 0
06/06/2013
Gustavo M.
Meu código está assim, mas nao consigo prosseguir.
import java.util.Scanner;
public class TesteQuadrilatero
{
public static void main(String args[])
{
Quadrilatero qd = new Quadrilatero();
int op;
Scanner sc = new Scanner(System.in);
system.out.printf("\Coordenada X P1: ");
= sc.nextInt();
system.out.printf("\Coordenada Y P1: ");
= sc.nextInt();
system.out.printf("\Coordenada X P2: ");
= sc.nextInt();
system.out.printf("\Coordenada Y P2: ");
= sc.nextInt();
system.out.printf("\Coordenada X P3: ");
= sc.nextInt();
system.out.printf("\Coordenada Y P3: ");
= sc.nextInt();
system.out.printf("\Coordenada X P4: ");
= sc.nextInt();
system.out.printf("\Coordenada Y P4: ");
= sc.nextInt();
System.out.printf("1 ---------- Retangulo\n");
System.out.printf("2 ---------- Trapezio\n");
System.out.printf("\nDigite a opcao: ");
op = sc.nextInt();
if (op == 1)
/* Calc Retangulo */
else if (op == 2)
/* Calc Trapezio */
}
}
Poderia me ajudar?
Gostei + 0
07/06/2013
Joel Rodrigues
Não estaria faltando alguma coisa antes do operador de atribuição nessas linhas?
= sc.nextInt();
Creio que seria algo como:
qd.P1.x = sc.nextInt();
ou
qd.P1.setX(sc.nextInt());
Ou seja, você precisa atribuir o valor lido às coordenadas do quadrilátero.
Abraço.
Gostei + 0
08/06/2013
Private
public void CalculaRetangulo()
{
double d1 = Math.sqrt(Math.pow ((p1.getX() - p2.getX()),2) + Math.pow ((p1.getY() - p2.getY()),2));
double d2 = Math.sqrt(Math.pow ((p2.getX() - p4.getX()),2) + Math.pow ((p2.getY() - p4.getY()),2));
double d3 = Math.sqrt(Math.pow ((p4.getX() - p3.getX()),2) + Math.pow ((p4.getY() - p3.getY()),2));
if (d1 == d2 && d1 == d3)
{
System.out.printf("Eh um quadrado");
System.out.printf("A area do quadrado eh: ", Area(d1,d2));
}else
{
System.out.printf("Eh um retangulo");
Area(d1,d3);
//comparar os pontos pra ver ql eh diferente, calcula diferente
System.out.printf("A area do retangulo eh: ", Area(d1,d2));
}
}O do trapézio ficará assim para base maior e menor:
public void CalculaTrapezio()
{
double bMaior = Math.sqrt(Math.pow ((p1.getX() - p2.getX()),2) + Math.pow ((p1.getY() - p2.getY()),2));
double bMenor = Math.sqrt(Math.pow ((p3.getX() - p4.getX()),2) + Math.pow ((p3.getY() - p4.getY()),2));
double h = //duvida;
}COMO fazer a altura já que o trpezio tem este formato:
p1 _________ p2
/ |\
/ h| \
/ | \
p3 ---------------p4
Gostei + 0
08/06/2013
Private
public void CalculaRetangulo()
{
double d1 = Math.sqrt(Math.pow ((p1.getX() - p2.getX()),2) + Math.pow ((p1.getY() - p2.getY()),2));
double d2 = Math.sqrt(Math.pow ((p2.getX() - p4.getX()),2) + Math.pow ((p2.getY() - p4.getY()),2));
double d3 = Math.sqrt(Math.pow ((p4.getX() - p3.getX()),2) + Math.pow ((p4.getY() - p3.getY()),2));
if (d1 == d2 && d1 == d3)
{
System.out.printf("Eh um quadrado");
System.out.printf("A area do quadrado eh: ", Area(d1,d2));
}else
{
System.out.printf("Eh um retangulo");
Area(d1,d3);
//comparar os pontos pra ver ql eh diferente, calcula diferente
System.out.printf("A area do retangulo eh: ", Area(d1,d2));
}
}O do trapézio ficará assim para base maior e menor:
public void CalculaTrapezio()
{
double bMaior = Math.sqrt(Math.pow ((p1.getX() - p2.getX()),2) + Math.pow ((p1.getY() - p2.getY()),2));
double bMenor = Math.sqrt(Math.pow ((p3.getX() - p4.getX()),2) + Math.pow ((p3.getY() - p4.getY()),2));
double h = //duvida;
}COMO fazer a altura já que o trpezio tem este formato:
....p1 _________.p2
...../........|\
..../........h|.\
.../..........|..\
p3 ---------------p4
Gostei + 0
08/06/2013
Joel Rodrigues
A altura é a diferença entre as coordenadas Y de dois pontos que se encontrem em lados opostos verticalmente. No seu desenho, essa altura poderia ser:
d1 - d3 d1 - d4 d2 - d3 d2 - d4
Considerando a subtração do Y de cada ponto, pois d1 e d2 estão na mesma coordenada Y, bem como d3 e d4.
Deu pra sacar a ideia? Qualquer coisa é só falar.
Abraço.
Gostei + 0
09/06/2013
Private
Gostei + 0
09/06/2013
Joel Rodrigues
Precisando, é só avisar.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)