Cuboide/Cubo

Inés Aldea

/* Programa que dice si dos vectores forman un cuboide y en su caso si ese cuboide es un cubo. */

</pre>
#include <iostream>
#include<stdlib.h>
#include<math.h>
using namespace std;

struct vector{
float x,y,z;
};
//Prototipo
typedef struct vector Vector;
Vector leer_vector();
void escribir_vector (Vector v);
Vector suma_vectores (Vector v, Vector w,Vector t);
float producto_escalar (Vector v, Vector w);
Vector producto_vectorial (Vector v, Vector w);
Vector producto_vectorialdetres (Vector v, Vector w, Vector t);
float modulo_vector (Vector v);
float angulo_vector (Vector v, Vector w);

main()
{
//ENTRADA DE DATOS
Vector v,w,t, suma,resta,productoescalar,productovectorial, productodetres;
float angulovec,angulovec2, angulovec3;
v=leer_vector();
escribir_vector (v);
w=leer_vector();
escribir_vector(w);
t=leer_vector();
escribir_vector(t);

//OPERACIONES CON LOS DATOS
suma = suma_vectores (v,w,t);
cout<< "SUMA: \n";
escribir_vector (suma);

cout<< "El modulo del vector v es: "<<modulo_vector(v)<<endl;
cout<< "El modulo del vector w es: "<<modulo_vector(w)<<endl;
cout<<"El modulo del vector t es: " << modulo_vector (t)<<endl;
cout<< "Para ver si dos vectores forman un angulo recto, "<<endl<<
        "lo mas facil es ver si su producto escalar da 0";
cout<<endl<<"Procedamos a ello"<<endl;
cout<< "El producto escalar de v y w es: "<<producto_escalar(v,w)<<endl;
cout<<"El producto escalar de v y t es: " <<producto_escalar (v,t)<<endl;
cout <<"El producto escalar de t y w es: "<<producto_escalar (w,t)<<endl;
if(producto_escalar(v,w)==0 && producto_escalar (v,t)==0 && producto_escalar (w,t)==0)
cout<<"Estamos ante un cuboide, pues los vectores forman angulo recto dos a dos"<<endl;
if(producto_escalar(v,w)==0 && producto_escalar (v,t)==0 && producto_escalar (w,t)==0 && modulo_vector(v)==modulo_vector(w)&& modulo_vector(w)==modulo_vector(t))
cout<<"Ademas,es un cubo, pues los lados de sus caras son iguales"<<endl;
if(producto_escalar(v,w)!=0 || producto_escalar (v,t)!=0 || producto_escalar (w,t)!=0)
cout<< "No forman un cuboide, pues los vectores no forman angulo recto dos a dos"<<endl;

productovectorial= producto_vectorial(v,w);
cout<< "Producto vectorial entre v y w (forman la base de la figura) \n";
escribir_vector(productovectorial);

cout<<"Producto mixto de los tres vectores"<<endl;
producto_vectorialdetres(v,w,t);
angulovec=angulo_vector (v,w);
cout<< "El angulo entre los vectores v y w en radianes es: "<<angulovec<<endl;
angulovec2= angulo_vector2 (v,t);
cout<<"El angulo entre los vectores v y t en radianes es: "<<angulovec2<<endl;
angulovec3= angulo_vector3 (w,t);
cout<<"El angulo entre los vectores w y t en radianes es: " <<angulovec3<<endl;
}

//CODIGO DE FUNCIONES)
Vector leer_vector()
{
Vector v;
cout << "Dame tres coordenadas del vector: ";
cin>> v.x>>v.y>>v.z;
return v;
}

void escribir_vector (Vector v)
{
cout<< "El vector es: "<<v.x<<" "<<v.y<<" "<< v.z<<endl;
}

Vector suma_vectores (Vector v, Vector w, Vector t)
{
Vector u;
u.x= v.x+w.x+t.x;
u.y= v.y+w.y+t.y;
u.z= v.z+w.z+t.z;
return u;
}

float producto_escalar (Vector v, Vector w)
{
float producto;
producto= v.x*w.x+v.y*w.y+v.z*w.z;
return producto;
}

Vector producto_vectorial (Vector v, Vector w)
{
Vector b;
b.x= v.y*w.z-v.z*w.y;
b.y= w.x*v.z-v.x*w.z;
b.z= v.x*w.y-v.y*w.z;
return b;
}

Vector producto_vectorialdetres (Vector v, Vector w, Vector t)
{
Vector r;
r.x=(v.y*w.z-v.z*w.y)*t.x;
r.y=(w.x*v.z-v.x*w.z)*t.y;
r.z=(v.x*w.y-v.y*w.z)*t.z;
int solucion=0;
solucion= r.x+r.y+r.z;
cout<< "El producto mixto, y por tanto, el volumen de la figura es "<<solucion<<endl;
return r;
}

float modulo_vector (Vector v)
{
float modulo;
modulo= sqrt(pow(v.x,2)+pow(v.y,2)+pow(v.z,2));
return modulo;
}

float angulo_vector (Vector v, Vector w)
{
float angulo, cos;
cos= (v.x*w.x+v.y*w.y+v.z*w.z)/
     (sqrt(pow(v.x,2)+pow(v.y,2)+pow(v.z,2))*
      sqrt(pow(w.x,2)+pow(w.y,2)+pow(w.z,2)));
angulo= acos(cos);
return angulo;
}

Anuncios
Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s