domingo, 15 de noviembre de 2009

clase VECTOR 3D y producto cruz

public class Vector3D extends Matriz{
double coordenadaX;
double coordenadaY;
double coordenadaZ;

public Vector3D(){
super(1,3);

}
public Vector3D(double x, double y, double z){

super(1,3);
this.matriz[0][0] = x;
this.matriz[0][1] = y;
this.matriz[0][2] = z;
coordenadaX = x;
coordenadaY = y;
coordenadaZ = z;

}
public double magnitud(){
double resultado = 0;
for(int i=0; i<3; i++)
{
resultado += this.matriz[0][i]*this.matriz[0][i];
}
resultado = Math.sqrt(resultado);return resultado;
}
public Vector3D unitario(){
Vector3D unitario = new Vector3D();
for(int i=0; i<3; i++)unitario.matriz[0][i] = this.matriz[0][i]/this.magnitud2();
return unitario;}
public double productoEscalar(Vector3D v){
double resultado = 0;
for(int i=0; i<3; i++)resultado += this.matriz[0][i]*v.matriz[0][i];
return resultado;
}
public Vector3D productoCruz(Vector3D v){
Vector3D resultado;
resultado = new Vector3D();
resultado.matriz[0][0] = this.matriz[0][1]*v.matriz[0][2]-this.matriz[0][2]*v.matriz[0][1];
resultado.matriz[0][1] = this.matriz[0][2]*v.matriz[0][0]-this.matriz[0][0]*v.matriz[0][2];
resultado.matriz[0][2] = this.matriz[0][0]*v.matriz[0][1]-this.matriz[0][1]*v.matriz[0][0];
return resultado;
}
public static void main(String args[]){
Vector3D v1 = new Vector3D(-3,6,0);
Vector3D v2 = new Vector3D(0,4,5);
System.out.println(v1+"\n"+v2);
System.out.println(" La coordenada X es : "+v1.coordenadaX);
System.out.println("\n Suma de vectores: "+(v1.suma(v2)));
System.out.println("\n Vector magnitud es: "+v1.magnitud());
System.out.println("\n Vector unitario: "+v1.unitario());
System.out.println("\n Producto escalar es: "+v1.productoEscalar(v2));
System.out.println("\n Producto cruz es: "+v1.productoCruz(v2));
}
}

3 comentarios:

  1. Hola Diego, yo tambien tube ese problema mira no pusiste tu clase matriz y sin ella la clase:
    "public class Vector3D extends Matriz"
    No puede heredar todas las operaciones que estan en ella como la multiplicacion y sobre todo las personas no te van a entender y no les va a servir

    ResponderEliminar
  2. Hola que tal, te olvidaste de poner la clase matriz, sin esta clase no te funciona el programa, te adjunto una clase matriz que te podria funcionar.

    public class Matriz {
    public int numeroFilas;
    public int numeroColumnas;
    public double [][]matriz;


    public Matriz(){
    }


    public Matriz(int nF, int nC){
    numeroFilas = nF;
    numeroColumnas = nC;
    matriz = new double [numeroFilas][numeroColumnas];

    for(int i=0; i < numeroFilas; i++)
    for(int j=0; j < numeroColumnas; j++)
    matriz[i][j]=0;
    }


    public Matriz suma(Matriz b){
    Matriz resultado;
    //primero revisamos que las filas y las columnas sean iguales
    //this referencia a un objeto que au no esta creado pero que alguien algun momento lo va a crear
    if((this.numeroFilas == b.numeroFilas)&& (this.numeroColumnas == b.numeroColumnas)){
    resultado = new Matriz(this.numeroFilas, this.numeroColumnas);
    for(int i=0; i < this.numeroFilas; i++)
    for(int j=0; j < this.numeroColumnas; j++)
    resultado.matriz[i][j] = this.matriz[i][j]+ b.matriz[i][j];
    return resultado;
    }
    else
    System.out.println("ERROR EN DIMENSIONES DE LAS MATRICES");
    resultado=null;
    return resultado;
    }

    //metodo de multiplicacion de matrices
    //retorna una matriz resultado resta
    public Matriz multiplicacion(Matriz b){
    Matriz resultado;
    if(this.numeroFilas == b.numeroColumnas){
    resultado=new Matriz(this.numeroFilas,b.numeroColumnas);
    for(int i=0; i < this.numeroFilas; i++){
    for(int j=0; j < b.numeroColumnas; j++){
    for(int k=0; k < this.numeroFilas; k++)
    resultado.matriz[i][j] += (this.matriz[i][k]*b.matriz[k][j]);
    }
    }
    return resultado;
    }
    else
    System.out.println("error en dimensiones de las matrices");
    resultado = null;
    return resultado;
    }
    //devuelve el objeto matriz en texto para poderlo imprimir
    public String toString(){
    String aux="\n[\n";
    for(int i=0; i < numeroFilas; i++){
    for(int j=0; j < numeroColumnas; j++){
    aux += matriz[i][j]+" ";
    }
    aux+="\n";
    }
    aux+= "]";
    return aux;
    }
    }

    ResponderEliminar
  3. Diego igual en este programa deberìas publicar tambien el programa "Matriz".

    ResponderEliminar