Duvida algoritimo

8 respostas
van_bommel

8 Respostas

C

qual a dúvida?

C

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.

¬¬

edmarr

Caro colega , verifique o link abaixo , para formatação do seu código dai então poderemos lhe ajudar com mais clareza .

http://www.guj.com.br/posts/list/50115.java

van_bommel
/*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]

van_bommel

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 …

pmlm

Penso que o e) está errado.

Se as rectas são coincidentes, o coeficiente é igual e qualquer ponto de uma pertence à outra, certo?

ncm

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. :frowning:

van_bommel
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.

Criado 15 de setembro de 2009
Ultima resposta 16 de set. de 2009
Respostas 8
Participantes 6