Exemple #1
0
		public void AplicarTransformacion(Transformacion3D Transformacion)
		{
			for (int i = 0; i <= mVertices.GetUpperBound(0); i++) {
				mVertices[i].CoodenadasSUR = Transformacion * mVertices[i].CoodenadasSUR;
			}

			mVertical *= Transformacion;
			CalculoTransformacion();
		}
		public static Caja3D AplicarTransformacion(Caja3D Caja, Transformacion3D Transformacion)
		{
			return new Caja3D(new Punto3D(Transformacion.Matriz * Caja.Posicion.Matriz), Caja.Dimensiones);
		}
		public static Segmento3D AplicarTransformacion(Segmento3D Segmento, Transformacion3D Transformacion)
		{
			return new Segmento3D(new Punto3D(Transformacion.Matriz * Segmento.ExtremoInicial.Matriz), new Punto3D(Transformacion.Matriz * Segmento.ExtremoFinal.Matriz));
		}
		public static Recta3D AplicarTransformacion(Recta3D Recta, Transformacion3D Transformacion)
		{
			return new Recta3D(Transformacion.Matriz * Recta.Matrices[0], Transformacion.Matriz * Recta.Matrices[1]);
		}
		public static Plano3D AplicarTransformacion(Plano3D Plano, Transformacion3D Transformacion)
		{
			return new Plano3D(new Punto3D(Transformacion.Matriz * Plano.ObtenerPunto(0, 0).Matriz), new Vector3D(Transformacion.Matriz * Plano.VectorNormal.Matriz));
		}
		public static Vector3D AplicarTransformacion(Vector3D Vector, Transformacion3D Transformacion)
		{
			return new Vector3D(Transformacion.Matriz * Vector.Matriz);
		}
		public static Vertice AplicarTransformacion(Vertice Vertice, Transformacion3D Transformacion)
		{
			return new Vertice(new Punto3D(Transformacion.Matriz * Vertice.CoodenadasSUR.Matriz));
		}
		public static Transformacion3D EncadenarTransformaciones(Transformacion3D PrimeraTransformacion, Transformacion3D SegundaTransformacion)
		{
			return new Transformacion3D(SegundaTransformacion.Matriz * PrimeraTransformacion.Matriz);
		}
		public static Punto3D AplicarTransformacion(Punto3D Punto, Transformacion3D Transformacion)
		{
			return new Punto3D(Transformacion.Matriz * Punto.Matriz);
		}
Exemple #10
0
		public void RotarSobreSRC(Vector3D Eje, float Rotacion)
		{
			mTransformacion = new Rotacion(Rotacion, Eje) + mTransformacion;
			RecalcularDatos();
			if (Modificado != null) {
				Modificado(this);
			}
		}
Exemple #11
0
		public Camara3D()
		{
			mTransformacion = new Transformacion3D();
			mInversa = new Transformacion3D();
			mPosicion = new Punto3D();
			mPuntodeMira = new Punto3D(0, 0, 1);
			mVectorDireccion = new Vector3D(0, 0, 1);
			mDistancia = 1000;
			mFrustum = new Caja3D(-50000, -50000, 1000, 100000, 100000, 100000);
			mResolucionPantalla = new Punto2D(800, 600);
			mRelacionAspecto = new Punto2D(mResolucionPantalla.X / mFrustum.Ancho, mResolucionPantalla.Y / mFrustum.Largo);
			mPantalla = new Caja2D(-ResolucionPantalla.X / 2, -ResolucionPantalla.Y / 2, ResolucionPantalla.X, ResolucionPantalla.Y);
		}
Exemple #12
0
		public void RotarFijoSobreSUR(Vector3D Eje, float Rotacion)
		{
			mTransformacion += new Rotacion(Rotacion, Eje, mPosicion);
			RecalcularDatos();
			if (Modificado != null) {
				Modificado(this);
			}
		}
Exemple #13
0
		public void RotarSobreSUR(Recta3D Eje, float Rotacion)
		{
			mTransformacion += new Rotacion(Rotacion, Eje);
			RecalcularDatos();
			if (Modificado != null) {
				Modificado(this);
			}
		}
Exemple #14
0
		public void TrasladarSobreSRC(Vector3D Traslacion)
		{
			mTransformacion = new Traslacion(Traslacion) + mTransformacion;
			RecalcularDatos();
			if (Modificado != null) {
				Modificado(this);
			}
		}
Exemple #15
0
		public void TrasladarSobreSUR(Punto3D Destino)
		{
			mTransformacion += new Traslacion(mPosicion, Destino);
			RecalcularDatos();
			if (Modificado != null) {
				Modificado(this);
			}
		}
Exemple #16
0
		private void RecalcularDatos()
		{
			mInversa = new Transformacion3D(Matriz.CalculoInversa(mTransformacion.Matriz));
			mPosicion = mTransformacion * new Punto3D();
			mPuntodeMira = mTransformacion * new Punto3D(0, 0, 1);
			mVectorDireccion = new Vector3D(mPosicion, mPuntodeMira);
		}