…
Duvida algoritimo
8 Respostas
qual a dúvida?
Cara, mas não está óbvia a dúvida dele??!!?
Ele quer saber como ele vai fazer o programa dele, sendo que ele não tem a menor noção de por onde começar.
¬¬
Caro colega , verifique o link abaixo , para formatação do seu código dai então poderemos lhe ajudar com mais clareza .
/*Reta
Este seria mais um papel (ou classe) do programa gráfico. Sabe-se que dois pontos no plano definem um
?pedaço? ou segmento de uma reta; assim, pode-se dizer que um SegmentoDeReta tem as seguintes
características (atributos private): Ponto p1, Ponto p2 (ambos referências a objetos da classe Ponto) e cor
(uma cadeia de caracteres).
Um SegmentoDeReta precisa dos seguintes métodos:
a) Método construtor: para inicializar todos os atributos;
b) Métodos modificadores: um para alterar as posições dos pontos no espaço e outro para alterar
sua cor;
c) Métodos de acesso: que retornam os valores dos atributos (de modo que os atributos, possam ser
lidos por outros objetos);
*/
public class Reta {
private Ponto p1 ;
private Ponto p2 ;
private String cor ;
public Reta ( Ponto p1 , Ponto p2 , String cor ){
this.p1 = p1;
this.p2 = p2;
this.cor = cor ;
}
public void setPosicao ( Ponto p1 , Ponto p2) {
this.p1 = p1;
this.p2 = p2;
}
public void setCor ( String cor ) {
this.cor = cor;
}
public Ponto getPonto1 ( ){
return p1;
}
public Ponto getPonto2 ( ){
return p2;
}
public String getCor (){
return cor ;
}
/*
d) Um método chamado tamanho( ), que não recebe parâmetros e retorna a distância
entre os pontos p1 e p2 (um número real).
DICA:
? Para calcular o tamanho do SegmentoDeReta, calcular a distância entre os pontos p1 e p2.
*/
public double tamanho (){
return p1.distanciaOutraForma(p2);
}
/*
g) o método public double calculaCoeficienteAngular( ) - calcula e retorna o coeficiente angular de uma
Reta.
*/
public double calculaCoeficienteAngular( ){
return ( ( p1.getCoordenadaY () - p2.getCoordenadaY() ) / ( p1.getCoordenadaX() - p2.getCoordenadaX() ) ) ;
}
//d) o método public boolean verificaParalelismo (Reta r) - retorna true, se as Retas são paralelas, e false,
//se são Retas concorrentes.
public boolean verificarParalelismo ( Reta r ) {
if ( calculaCoeficienteAngular( ) == r.calculaCoeficienteAngular( ) ) {
return true;
}
else {
return false ;
}
}
/*
e) o método public boolean verificaParalelasCoincidentes (Reta r) - retorna true, se as Retas são
paralelas coincidentes, e false, se não são paralelas distintas.
*/
// duvida
public boolean verificaParalelasCoincidentes (Reta r){
// se os coef forem diferentes as retas são paralelas distintas
if ( calculaCoeficienteAngular( ) != r.calculaCoeficienteAngular( ) ) {
return true;
}
else {
return false ;
}
}
/*f) o método public boolean verificaConcorrentesPerpendiculares (Reta r) - retorna true, se as Retas são
concorrentes perpendiculares, e false, se são oblíquas.
*/
//
public boolean verificaConcorrentesPerpendiculares (Reta r) {
double resp;
// coef da reta
double cof = calculaCoeficienteAngular( );
// coef da reta r
double cof_R = r.calculaCoeficienteAngular( );
// se os coefs forem diferentes
if ( cof != cof_R ) {
// são retas concorrentes
resp = ( cof * cof_R ) ;
// se for = - 1
if ( resp == -1 ){
// retorne true pois a reta é perpendicular
return true ;
}
}
return false;
}
}
SALVE Salve .
So quero saber se estar certo minha logica . no metodos "e" ,"f "
falows
[/quote]
clone_zealot
claro q eu sei oq o programa faz …so não manjo de geometriaa mano…o forum é pra isso duvidas de logica .
se vc num quer ajudar foda-se … eu pesquiso e posto essa merda …
Penso que o e) está errado.
Se as rectas são coincidentes, o coeficiente é igual e qualquer ponto de uma pertence à outra, certo?
O GUJ já teve muito mais qualidade em seus posts.
esse fórum vai acabar ficando decadente…
É uma pena, já que é o melhor fórum de JAVA da atualidade. 
public class Reta {
Ponto p1 , p2;
public Reta(Ponto p1, Ponto p2) {
if (p1.getX() > p2.getX()) {
p1 = p2;
p2 = p1;
}
else {
p1 = p1;
p2 = p2;
}
}
public Ponto getPonto1()
{
return p1;
}
public Ponto getPonto2() {
return p2;
}
public void setPonto1(Ponto newPonto) {
p1 = newPonto;
}
public void setPonto2(Ponto newPonto) {
p2 = newPonto;
}
private double modulo(double valor) {
return (valor < 0) ? -valor : valor;
}
public boolean verificaParalelismo(Reta reta) {
double r1x0 = p1.getX();
double r1y0 = p1.getY();
double r1x1 = p2.getX();
double r1y1 = p2.getY();
double r2x0 = reta.getPonto1().getX();
double r2y0 = reta.getPonto1().getY();
double r2x1 = reta.getPonto2().getX();
double r2y1 = reta.getPonto2().getY();
return (modulo(r1x0 - r2x0) == modulo(r1x1 - r2x1) ||
modulo(r1y0 - r2y0) == modulo(r1y1 - r2y1) ||
modulo(r1x0 - r1x1) / modulo(r1y0 - r1y1) == modulo(r2x0 - r2x1) / modulo(r2y0 - r2y1));
}
public boolean verificaParalelasCoincidentes (Reta reta) {
double r1x0 = p1.getX();
double r1y0 = p1.getY();
double r1x1 = p2.getX();
double r1y1 = p2.getY();
double r2x0 = reta.getPonto1().getX();
double r2y0 = reta.getPonto1().getY();
double r2x1 = reta.getPonto2().getX();
double r2y1 = reta.getPonto2().getY();
double a1 = modulo(r1y0 - r1y1);
double b1 = modulo(r1x1 - r1x0);
double c1 = modulo(r1x0 * r1y1 - r1x1 * r1y0);
double a2 = modulo(r2y0 - r2y1);
double b2 = modulo(r2x1 - r2x0);
double c2 = modulo(r2x0 * r2y1 - r2x1 * r2y0);
double tempA = a1 / a2;
double tempB = b1 / b2;
double tempC = c1 / c2;
return (tempA == tempB && tempA == tempC ||
r1x0 == r1y0 && r1x1 == r1y1 &&
r2x0 == r2y0 && r2x1 == r2y1);
}
public boolean verificaConcorrentesPerpendiculares(Reta reta) {
return (calculaCoeficienteAngular() * reta.calculaCoeficienteAngular() == -1);
}
public double calculaCoeficienteAngular()
{
double r1x0 = p1.getX();
double r1y0 = p1.getY();
double r1x1 = p2.getX();
double r1y1 = p2.getY();
double a1 = r1y0 - r1y1;
double b1 = r1x1 - r1x0;
return (-a1 / b1);
}
public void imprimeInclinacao() {
double cAngular = calculaCoeficienteAngular();
if (cAngular > 0) {
if (p1.getX() == p2.getX()) {
System.out.println("A reta é paralela ao eixo Y.");
}
else {
System.out.println("A reta é crescente.");
}
}
else if (cAngular < 0) {
System.out.println("A reta é decrescente.");
}
else {
System.out.println("A retá é paralela ao eixo X.");
}
}
public void recorteDeReta(Reta reta, Ponto inicio, Ponto fim) {
if (inicio.getX() > fim.getX()) {
Ponto temp = inicio;
inicio = fim;
fim = temp;
}
double m1 = calculaCoeficienteAngular();
double xi = reta.getPonto1().getX();
double yi = reta.getPonto1().getY();
//Verifica se algum ponto da reta corta a borda esquerda da seleção
if (xi < inicio.getX()) {
double xNovo = inicio.getX();
double yNovo = yi + (xNovo - xi) * m1;
reta.setPonto1(new Ponto(xNovo, yNovo));
}
xi = (reta.getPonto1().getY() > reta.getPonto2().getY()) ? reta.getPonto1().getX() : reta.getPonto2().getX();
yi = (reta.getPonto1().getY() > reta.getPonto2().getY()) ? reta.getPonto1().getY() : reta.getPonto2().getY();
//Verifica se algum ponto da reta corta a borda superior da seleção
if (yi > inicio.getY()) {
double yNovo = inicio.getY();
double xNovo = xi + (yNovo - yi) / m1;
if (reta.getPonto1().getY() > reta.getPonto2().getY()) {
reta.setPonto1(new Ponto(xNovo, yNovo));
}
else {
reta.setPonto2(new Ponto(xNovo, yNovo));
}
}
double xf = reta.getPonto2().getX();
double yf = reta.getPonto2().getY();
//Verifica se algum ponto da reta corta a borda direita da seleção
if (xf > fim.getX()) {
double xNovo = fim.getX();
double yNovo = yf + (xNovo - xf) * m1;
reta.setPonto2(new Ponto(xNovo, yNovo));
}
xf = (reta.getPonto1().getY() < reta.getPonto2().getY()) ? reta.getPonto1().getX() : reta.getPonto2().getX();
yf = (reta.getPonto1().getY() < reta.getPonto2().getY()) ? reta.getPonto1().getY() : reta.getPonto2().getY();
//Verifica se algum ponto da reta corta a borda inferior da seleção
if (yf < fim.getY()) {
double yNovo = fim.getY();
double xNovo = xf + (yNovo - yf) / m1;
if (reta.getPonto1().getY() < reta.getPonto2().getY()) {
reta.setPonto1(new Ponto(xNovo, yNovo));
}
else {
reta.setPonto2(new Ponto(xNovo, yNovo));
}
}
}
}
esta ai o programaa, se alguém tem uma melhor forma de fazer mais facil , mais didatica aceito sugestoes.