Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Lab. De programación gráfica, Diapositivas de Sistemas Operativos

Guia con base Teórica, ejercicios resuelto como ejemplos y problemas propuestos para aprender

Tipo: Diapositivas

2024/2025

Subido el 11/11/2025

villca-colque-ismael
villca-colque-ismael 🇧🇴

1 documento

1 / 9

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
U.T.O. – F.N.I. ING. DE SISTEMAS – ING. INFORMÁTICA
SIS – 2430 PROGRAMACIÓN GRAFICA
GUÍA DE LABORATORIO # 7
Tema: TRANSFORMACIONES EN 3D
OBJETIVOS.
Entender los conceptos geométricos de traslación, escalado y rotación
Comprender cómo la teoría de matrices permite formalizar los conceptos anteriores.
Aprender a realizar, de una forma eficaz, transformaciones geométricas mediante
operaciones con matrices
1. FUNDAMENTO TEÓRICO.
Los métodos para las transformaciones geométricas en tres dimensiones se extienden de los métodos
bidimensionales al incluir las consideraciones para la coordenada de z.
Traslación
Se traslada un objeto al especificar un vector de traslación tridimensional, que determina el
desplazamiento del objeto en cada una de las tres direcciones de las coordenadas.
En la representación homogénea tridimensional de las coordenadas, se traslada un punto de la posición
P=(x,y,z) a la posición P’=(x,y,z) con la operación de matriz:
pf3
pf4
pf5
pf8
pf9

Vista previa parcial del texto

¡Descarga Lab. De programación gráfica y más Diapositivas en PDF de Sistemas Operativos solo en Docsity!

U.T.O. – F.N.I. ING. DE SISTEMAS – ING. INFORMÁTICA

SIS – 2430 PROGRAMACIÓN GRAFICA

GUÍA DE LABORATORIO # 7

Tema: TRANSFORMACIONES EN 3D

OBJETIVOS.

 Entender los conceptos geométricos de traslación, escalado y rotación  Comprender cómo la teoría de matrices permite formalizar los conceptos anteriores.  Aprender a realizar, de una forma eficaz, transformaciones geométricas mediante operaciones con matrices

1. FUNDAMENTO TEÓRICO.

Los métodos para las transformaciones geométricas en tres dimensiones se extienden de los métodos

bidimensionales al incluir las consideraciones para la coordenada de z.

Traslación

Se traslada un objeto al especificar un vector de traslación tridimensional, que determina el

desplazamiento del objeto en cada una de las tres direcciones de las coordenadas.

En la representación homogénea tridimensional de las coordenadas, se traslada un punto de la posición

P= ( x,y,z ) a la posición P’= ( x,y,z ) con la operación de matriz:

A los parámetros tx, ty, tz que especifican las distancias de traslación para las direcciones de las

coordenadas x,y y z , se asignan cualesquiera valores reales.

Rotación

Para generar una transformación de rotación para un objeto, se debe designar un eje de rotación (con

respecto del cual girará el objeto) y la cantidad de rotación angular. Una rotación tridimensional se

puede especificar alrededor de cualquier línea en el espacio.

Las direcciones de rotación positivas con respecto de los ejes de las coordenadas son en sentido

inverso al de las manecillas del reloj, cuando miramos hacia el origen de una posición de coordenadas

positiva en cada eje.

Rotación de un objeto con respecto del eje de la z.

El parámetro θ especifica el ángulo de rotación. En la forma homogénea de las coordenadas, las

ecuaciones de la rotación del eje de las z tridimensional se expresan como:

Rotación de un objeto con respecto del eje y

La forma matricial para representar la rotación del eje y es:

Escalación

La expresión matricial para la transformación de escalación de una posición P= ( x,y,z ) con respecto del

origen d las coordenadas se puede escribir como:

Donde los parámetros de escalación sx, sy, sz se asignan cualesquiera valores positivos.

2. ACTIVIDADES DE LABORATORIO. Programa en Clase .- Ejecutar el siguiente programa que realiza operaciones de traslación, rotación y escalamiento en en C++ Builder El código asociado es el siguiente: //---------------------------------------------------------------------------

maxx=Form1->Image1->Width; maxy=Form1->Image1->Height; int i; float x,y; tpunto dato; for(i=0;i<maxp;i++) { //aplica la matriz de transformacion a los puntos aplicar_mat(lista[i],&dato); //aplicar proyeccion x=dato.x1000/(1000+dato.z); y=dato.y1000/(1000+dato.z); if(lista[i].dib==0) Canvas->MoveTo(maxx/2+x,maxx/2-y); else Canvas->LineTo(maxx/2+x,maxx/2-y); } } //--------------------------------------------------------------------------- void multiplica(tmat a,tmat b,tmat c) { int i,j,k; for(i=0;i<4;i++) for(j=0;j<4;j++) { c->v[i][j]=0; for(k=0;k<4;k++) c->v[i][j]+=a.v[i][k]b.v[k][j]; } } void __fastcall TForm1::Button2Click(TObject Sender) { double ang; tmat rot,aux; ang=Edit1->Text.ToDouble(); float dcos=cos(ang3.1416/180); float dsin=sin(ang3.1416/180); rot=identidad; rot.v[1][1]=dcos; rot.v[1][2]=-dsin; rot.v[2][1]=dsin; rot.v[2][2]=dcos; aux=mat; multiplica(rot,aux,&mat); Form1->Image1->Canvas->FillRect(Form1->Image1->Canvas->ClipRect); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject Sender) { double ang; tmat rot,aux; ang=Edit2->Text.ToDouble(); float dcos=cos(ang3.1416/180); float dsin=sin(ang3.1416/180); rot=identidad;

rot.v[0][0]=dcos; rot.v[0][2]=dsin; rot.v[2][0]=-dsin; rot.v[2][2]=dcos; aux=mat; multiplica(rot,aux,&mat); Form1->Image1->Canvas->FillRect(Form1->Image1->Canvas->ClipRect); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject Sender) { double ang; tmat rot,aux; ang=Edit3->Text.ToDouble(); float dcos=cos(ang3.1416/180); float dsin=sin(ang*3.1416/180); rot=identidad; rot.v[0][0]=dcos; rot.v[0][1]=-dsin; rot.v[1][0]=dsin; rot.v[1][1]=dcos; aux=mat; multiplica(rot,aux,&mat); Form1->Image1->Canvas->FillRect(Form1->Image1->Canvas->ClipRect); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button5Click(TObject *Sender) { tmat a,b; a=identidad; a.v[0][3]=Edit4->Text.ToDouble(); a.v[1][3]=Edit5->Text.ToDouble(); a.v[2][3]=Edit6->Text.ToDouble(); b=mat; multiplica(a,b,&mat); Form1->Image1->Canvas->FillRect(Form1->Image1->Canvas->ClipRect); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button6Click(TObject *Sender) { tmat a,b; a=identidad; a.v[0][0]=Edit7->Text.ToDouble(); a.v[1][1]=Edit8->Text.ToDouble(); a.v[2][2]=Edit9->Text.ToDouble(); b=mat; multiplica(a,b,&mat); Form1->Image1->Canvas->FillRect(Form1->Image1->Canvas->ClipRect); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button7Click(TObject *Sender) { Application->Terminate(); } //---------------------------------------------------------------------------