Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ESPE
SEDE LATACUNGA
CARRERA DE INGENIERÍA DE SOFTWARE
Integrantes:
● Víctor Cuyo
● David Chango
● Ariel Gordillo
● Alison Velasteguí
Enero 2021
Objetivos
General
compone.
Específicos
planteado.
aplicativos.
Análisis
En este cuestionario podremos observar preguntas que nos ayudarán a entender más sobre
aumentar nuestro conocimiento sobre la computación gráfica y sobre cómo funciona o como
Desarrollo
En computación gráfica, las líneas ocultas tienen varios usos, por ejemplo, permite ocultar la
parte de atrás de los objetos o bien los elementos que pasan por detrás de otros. Además, se
usa para mostrar superficies, bordes o esquinas de objetos que están ocultas a la vista, y
de la computación gráfica.
Ejemplo:
Dentro de la computación gráfica existen varias técnicas las cuales son necesarias para poder
llevar a cabo un software de esta índole, siendo una de las principales causas las pruebas de
determinan las caras que no pueden verse desde el observador. Dichos algoritmos que son
utilizados para graficar o eliminar líneas, figuras, etc., dentro de computación gráfica, los
resultados deben someterse a alguno de los algoritmos mencionados a continuación. Por ej.
back-face culling, clipping del volumen de vista canónico. Esto garantiza la calidad de la
visibilidad. Por ej. raytracing o Z-buffer y los scan-line con buffers de profundidad.
tanto, esto nos obliga a aplicar sencillas comprobaciones para simplificar el problema todo lo
que podamos antes de realizar un estudio pormenorizado. Existe una comprobación muy
sencilla que eliminará la mayoría de las caras que no se pueden ver. Este test identifica las caras
que miran en la dirección opuesta al observador. Estas son las que constituyen la parte trasera
del objeto y no pueden verse porque la masa del objeto se encuentra entre ellas y el observador.
Esto, sin embargo, no resuelve la totalidad del problema de las superficies ocultas ya que es
posible que la parte delantera del objeto esté oculta por un segundo objeto o por cualquier otra
parte del mismo objeto. A pesar de ello, esta comprobación elimina aproximadamente la mitad
de las superficies que deben ser verificadas y por tanto simplifica el problema.
los elementos que aparecen vuelven a tener el mismo aspecto independientemente de cuál sea
la escala que utilizamos, y formando parte, como en un mosaico de los elementos mayores.
Es decir, estos elementos tienen una estructura geométrica recursiva. Si observamos dos
fotografías de un objeto fractal con escalas diferentes (una en metros y otra en milímetros,
por ejemplo) sin nada que sirva de referencia para ver cuál es el tamaño, resultaría difícil
Los fractales desde su primera formulación tuvieron una vocación práctica de servir como
modelos para explicar la naturaleza. Fue el propio Benoit Mandelbrot quien tuvo el mérito de
intuir la potencia de los fractales para construir modelos que explicaran la realidad, desde un
Para la siguiente actividad es necesario tener claro el modelo matemático que lleva dentro de
Como primer punto, hay que ingresar los puntos tanto de A, B y C del triángulo que se va a
dibujar.
Posteriormente, para poder empezar con los cálculos, procedemos a sacar la distancia de los
puntos dados por el usuario tanto de A-B, A-C, B-C, de la siguiente manera:
Una vez aplicada la fórmula anterior, obtenemos la distancia de cada lado, la cual nos va a
servir para el siguiente cálculo que es el denominado semiperímetro, para ello, es necesario
Una vez aplicada la fórmula, obtenemos como resultado el semiperímetro del triángulo en
cuestión, el cual es necesario para el siguiente cálculo, que es sacar el radio del círculo que va
Donde hay que recalcar que a, b y c, son las distancias entre los puntos dados. Finalmente
calculamos el incentro del triángulo en cuestión, donde va a ser el punto céntrico del círculo
Una vez que ya tenemos todos los puntos y los cálculos correspondientes, el resultado de
adquirir las coordenadas de los puntos y almacenamos los puntos previamente multiplicado
con el SF.
Una vez que ya tenemos listo todos nuestros datos, procedemos con los cálculos, como
Para terminar con los cálculos, procedemos a calcular el incentro, como se muestra en la
siguiente imagen:
Como siguiente punto, creamos la función para poder dibujar el triángulo, al igual que las
Finalmente, creamos la función para poder dibujar el círculo dentro del triángulo, de la
siguiente manera:
Código completo
Clase
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
using System.Drawing;
namespace Ejercicio_5
class CEjercicio_5
//Datos Miembros
//Constructor
public CEjercicio_5()
mX = 0.0f; mY = 0.0f;
mX = x;
mY = y;
}
public CEjercicio_5(float x)
mX = x;
public CEjercicio_5(CEjercicio_5 V)
mX = V.mX;
mY = V.mY;
NumericUpDown numAY,
NumericUpDown numBX,
NumericUpDown numBY,
NumericUpDown numCX,
NumericUpDown numCY)
try
{
mAX = (float)numAX.Value;
mAY = (float)numAY.Value;
mBX = (float)numBX.Value;
mBY = (float)numBY.Value;
mCX = (float)numCX.Value;
mCY = (float)numCY.Value;
catch
MessageBox.Show("Ingreso no válido...");
Math.Pow((V.mY - U.mY),2)))));
CEjercicio_5 DCB)
CEjercicio_5 DCB)
//Calculamos el incentro
public CEjercicio_5 Incenter(CEjercicio_5 A, CEjercicio_5 B, CEjercicio_5 C,
mGraph = picCanvas.CreateGraphics();
mPen.StartCap = LineCap.RoundAnchor;
mPen.EndCap = LineCap.RoundAnchor;
//dibujo el vector
//Dibuja el círculo
{
mGraph = picCanvas.CreateGraphics();
mPen.StartCap = LineCap.RoundAnchor;
mPen.EndCap = LineCap.RoundAnchor;
//salir de la aplicación
objform.Close();
Código de formulario
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Ejercicio_5
public Frm_Ejer_5()
InitializeComponent();
}
private void btnCalculate_Click(object sender, EventArgs e)
PuntoA.Triangle((float)numAX.Value, (float)numAY.Value);
PuntoB.Triangle((float)numBX.Value, (float)numBY.Value);
PuntoC.Triangle((float)numCX.Value, (float)numCY.Value);
picCanvas.Refresh();
//dibujo el triangulo
//calculo el Distancia
//calcula en incentro
Incenter = Incenter.Incenter(PuntoA, PuntoB, PuntoC, DistanceAB, DistanceAC,
DistanceBC);
//calculo el semiperímetro
DistanceBC);
//calculo el Radio
ObjCEjer.CloseForm(this);
}
}
Prueba de la ejecución
6. Dibuje un círculo circunscrito en un triángulo, ingresando sus puntos
todos los vértices del polígono. El centro de este círculo se llama circuncentro y su radio se
llama circunradio . No todos los polígonos tienen un círculo circunscrito. Un polígono que tiene
uno se llama polígono cíclico , o algunas veces polígono con cíclico porque sus vértices son
concíclicos . Todos los triángulos , todos los polígonos simples regulares , todos los rectángulos
, todos los trapecios isósceles y todas las cometas correctas son cíclicos.
y con los datos poner encontrar las distancias de los segmentos generados, los puntos centrales
mediante las intersecciones de las mediatrices del triángulo y por último encontrar el radio del
La pendiente de la recta mediatriz que pasa por r, por ser perpendicular al lado a, es la inversa
Sabiendo que la mediatriz Ma pasa por el punto medio y sabemos su pendiente, que es igual a
Implementación en código
Iniciamos con los datos miembros y todo lo necesario, como son los constructores y los
Para el programa se decidió generar un plano cartesiano para que se pueda visualizar de una
Funcionamiento
Código Fuente
Clase
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
namespace Pregunta_6
class Pregunta6
// Datos Miembro
private float mid1x, mid1y, mid2x, mid2y, m1, m2, pcentrox, pcentroy;
private float mAx, mAy, mBx, mBy, mCx, mCy, AB, AC, CB, semiPer, radio, raiz;
public float MAX { get => mAx; set => mAx = value; }
public float MBX { get => mBx; set => mBx = value; }
public float MCX { get => mCx; set => mCx = value; }
public float MAY { get => mAy; set => mAy = value; }
public float MBY { get => mBy; set => mBy = value; }
public float MCY { get => mCy; set => mCy = value; }
//constructor vacío
public Pregunta6()
Bx,
picCanvas)
try
mA.X = (float)Ax.Value;
mA.Y = (float)Ay.Value;
mB.X = (float)Bx.Value;
mB.Y = (float)By.Value;
mC.X = (float)Cx.Value;
mC.Y = (float)Cy.Value;
return true;
catch (Exception e)
MessageBox.Show(e.Message);
return false;
mGraph = picCanvas.CreateGraphics();
mGraph = picCanvas.CreateGraphics();
mB.Y * SF);//segmentoAB
mC.Y * SF);//segmento BC
mA.Y * SF);//segmento CA
el circuncentro
mGraph = picCanvas.CreateGraphics();
2));// segmento AB -a
2));// SegmentoCB - b
2));// Segmetno AC -C
//cálculo de las coordenadas de los puntos centrales mediante de intersección entre las
dos rectas
pcentrox = ((mid2x / m2) - (mid1x / m1) + mid2y - mid1y) / ((1 / m2) + (-1 / m1));
return true;
Form
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Pregunta_6
public Form1()
{
InitializeComponent();
obj.DrawAxis(picCanvas);
obj.DrawRectangle(picCanvas);
if (obj.dibujar(picCanvas))
button1.Enabled = true;
{
picCanvas.Refresh();
picCanvas.CreateGraphics().Clear(Color.White);
nuevamente la explicación y formulas a utilizar tengo del presente problema, con la única
variante, de que los puntos van a ser seleccionados por el usuario con la utilización del mouse,
de la siguiente manera:
Como primer punto, hay que ingresar los puntos tanto de A, B y C del triángulo que se va a
Posteriormente, para poder empezar con los cálculos, procedemos a sacar la distancia de los
puntos dados por el usuario tanto de A-B, A-C, B-C, de la siguiente manera:
Una vez aplicada la fórmula anterior, obtenemos la distancia de cada lado, la cual nos va a
servir para el siguiente cálculo que es el denominado semiperímetro, para ello, es necesario
cuestión, el cual es necesario para el siguiente cálculo, que es sacar el radio del círculo que va
Donde hay que recalcar que a, b y c, son las distancias entre los puntos dados. Finalmente
calculamos el incentro del triángulo en cuestión, donde va a ser el punto céntrico del círculo
Una vez que ya tenemos todos los puntos y los cálculos correspondientes, el resultado de
Iniciamos con los datos miembros y todo lo necesario, como son los constructores y los
adquirir las coordenadas de los puntos y almacenamos los puntos previamente multiplicado
con el SF. Aquí se presenta la única variante que se diferencia con el ejercicio 5
Una vez que ya tenemos listo todos nuestros datos, procedemos con los cálculos, como
siguiente imagen:
Como siguiente punto, creamos la función para poder dibujar el triángulo, al igual que las
Finalmente, creamos la función para poder dibujar el círculo dentro del triángulo, de la
siguiente manera:
Dentro del formulario, es necesario tener la función para el ingreso con el mouse:
Código completo
Clase
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
using System.Drawing;
namespace Ejercicio7
class CEjercicio_7
// Datos miembro
private float mX, mY;
// Grafica
// Constructor
public CEjercicio_7()
mX = 0.0f; mY = 0.0f;
mX = x;
mY = y;
public CEjercicio_7(CEjercicio_7 v)
mX = v.mX;
mY = v.mY;
public CEjercicio_7(float x)
mX = x;
try
mAX = (float)points[0].X;
mAY = (float)points[0].Y;
mBX = (float)points[1].X;
mBY = (float)points[1].Y;
mCX = (float)points[2].X;
mCY = (float)points[2].Y;
catch (Exception e)
MessageBox.Show(e.Message);
{
return (new CEjercicio_7((float)Math.Sqrt((Math.Pow((V.mX - U.mX), 2) +
CEjercicio_7 DCB)
CEjercicio_7 DCB)
//Calculamos el incentro
{
return (new CEjercicio_7(((A.mX * DBC.mX + B.mX * DAC.mX + C.mX *
mGraph = picCanvas.CreateGraphics();
mPen.StartCap = LineCap.RoundAnchor;
mPen.EndCap = LineCap.RoundAnchor;
//dibujo el vector
//Dibuja el círculo
picCanvas)
mGraph = picCanvas.CreateGraphics();
mPen.StartCap = LineCap.RoundAnchor;
mPen.EndCap = LineCap.RoundAnchor;
//salir de la aplicación
objform.Close();
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Ejercicio7
public Form1()
InitializeComponent();
if (points.Count < 3)
points.Add(
);
if(points.Count == 3)
button1.Enabled = true;
else
ObjCEjer.ReadData(points);
PuntoB.Triangle((float)points[1].X, (float)points[1].Y);
PuntoC.Triangle((float)points[2].X, (float)points[2].Y);
picCanvas.Refresh();
//dibujo el triangulo
//calculo el Distancia
//calcula en incentro
DistanceBC);
//calculo el semiperímetro
DistanceBC);
//calculo el Radio
points.Clear();
Prueba de ejecución
8. Dibuje un círculo circunscrito en un triángulo, seleccionando los 3 puntos con el mouse
todos los vértices del polígono. El centro de este círculo se llama circuncentro y su radio se
llama circunradio . No todos los polígonos tienen un círculo circunscrito. Un polígono que tiene
uno se llama polígono cíclico , o algunas veces polígono con cíclico porque sus vértices son
concíclicos . Todos los triángulos , todos los polígonos simples regulares , todos los rectángulos
, todos los trapecios isósceles y todas las cometas correctas son cíclicos.
y con los datos poner encontrar las distancias de los segmentos generados, los puntos centrales
mediante las intersecciones de las mediatrices del triángulo y por último encontrar el radio del
La pendiente de la recta mediatriz que pasa por r, por ser perpendicular al lado a, es la inversa
Sabiendo que la mediatriz Ma pasa por el punto medio y sabemos su pendiente, que es igual a
Implementación en código
Se inicializan las variables y se leen los puntos que van a ser seleccionados en la pantalla por
el mouse.
Se calcula la distancia de los segmentos generados.
la misma clase.
Finalmente se dibujan las líneas enviando como parámetro los puntos, esto nos sirve para
generar el triángulo.
En la clase del formulario se generan las variables para enviar los parámetros a la función.
Se utiliza la función onClick para poder guardar los puntos que el usuario ingresa dando clic
en la pantalla.
Finalmente se pasan todos los parámetros a las funciones creadas esto en el botón dibujar.
Funcionamiento
Código fuente
Clase
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
using System.Drawing;
namespace Ejercicio7
class Pregunta_8
{
// Datos miembro
// Grafica
// Constructor
public Pregunta_8()
mX = 0.0f; mY = 0.0f;
mX = x;
mY = y;
public Pregunta_8(Pregunta_8 v)
mX = v.mX;
mY = v.mY;
public Pregunta_8(float x)
mX = x;
{
try
mAX = (float)points[0].X;
mAY = (float)points[0].Y;
mBX = (float)points[1].X;
mBY = (float)points[1].Y;
mCX = (float)points[2].X;
mCY = (float)points[2].Y;
catch (Exception e)
MessageBox.Show(e.Message);
}
// Funcion que calcula la distancia de los segmentos
semiPer = (a + b + c) / 2;
(semiPer - c))));
//cálculo de las coordenadas de los puntos centrales mediante de intersección entre las
dos rectas
mGraph = picCanvas.CreateGraphics();
1, 1);
}
}
mGraph = picCanvas.CreateGraphics();
mPen.StartCap = LineCap.RoundAnchor;
mPen.EndCap = LineCap.RoundAnchor;
//dibujo el vector
Form
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Ejercicio7
public Form1()
InitializeComponent();
}
if (points.Count < 3)
points.Add(
);
if (points.Count == 3)
button1.Enabled = true;
else
ObjCEjer.ReadData(points);
//asigno valores para graficar mi triangulo
PuntoA.Triangle((float)points[0].X, (float)points[0].Y);
PuntoB.Triangle((float)points[1].X, (float)points[1].Y);
PuntoC.Triangle((float)points[2].X, (float)points[2].Y);
picCanvas.Refresh();
//dibujo el triangulo
MedA = PuntoB.Median(PuntoC);
MedB = PuntoA.Median(PuntoC);
MedC = PuntoA.Median(PuntoB);
//calculo el Distancia
points.Clear();
Para resolver el presente ejercicio se pide que el usuario ingrese los lados del triángulo,
2.- Desde cada extremo del primer lado se traza una circunferencia de radio el valor del
3.- El triángulo tiene por vértices los extremos del primer segmento y una de las
Es importante tener en cuenta que para realizar la construcción la medida de cada lado ha de
Conociendo el algoritmo para la construcción del triángulo, ahora debemos crear un modelo
matemático que nos permita hacerlo, La primera coordenada de nuestro triangulo la vamos a
ubicar en el origen, por lo tanto, será A(0,0), el segundo vértice tendrá como coordenadas en
X la distancia del primer lado y en Y será 0, por lo tanto, será B(lado1, 0).
Para la tercera coordenada debemos calcular los puntos de intersección entre las dos
circunferencias.
Al despejar la formula y reemplazar los datos tenemos las coordenadas de intersección tanto
en x como en y:
Para dibujar los puntos del circulo, se necesita el centro que será el vértice C del triángulo y el
Una vez listo el modelo matemático se procede a implementar el código, primero vamos a crear
una interfaz que va a tener 3 NumericUpDown que permitirán el ingreso de cada lado del
triángulo, cuenta con dos Butons el uno que dibujara el triángulo con los puntos del circulo y
otro que permita limpiar los datos y la pantalla, y por último tenemos un PictureBox donde se
A continuación, se creará la clase Ctriangle la cual tiene la funcion ReadData donde vamos a
el triangulo
//Datos miembros
//Funciones miembro
//Funcion constructor
public CTriangle()
mS1 = 0.0f;
mS2 = 0.0f;
mS3 = 0.0f;
mArea = 0.0f;
mPerimeter = 0.0f;
mSemiPerimeter = 0.0f;
NumericUpDown numS3)
try
mS1 = float.Parse(numS1.Text);
mS2 = float.Parse(numS2.Text);
mS3 = float.Parse(numS3.Text);
if ((mS1 + mS2) > mS3 && (mS1 + mS3) > mS2 && (mS2 + mS3) > mS1)
{
return (true);
else
return (false);
catch
return (false);
//Inicializar datos
public void inicializeData(NumericUpDown numS1, NumericUpDown numS2,
numS1.Value = 0;
numS2.Value = 0;
numS3.Value = 0;
picCanvas.Refresh();
numS1.Focus();
mS1 = 0.0f;
mS2 = 0.0f;
mS3 = 0.0f;
//Funcion de graficacion
public void plotGraphics(PictureBox picCanvas)
mGrap.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
//Calcula el punto de intersección entre dos circunferencias para hallar el punto C del
triángulo
(int)mS1);
mGrap.DrawPolygon(mPen, mPnts);
}
public void arc(PictureBox picCanvas)
mGrap = picCanvas.CreateGraphics();
mGrap.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
int x = 0;
int y = (int)mS2*10;
int e = 0, u = 1;
int v = 2 * (int)mS2*10 - 1;
while (x <= y)
x++;
e += u;
u += 2;
if (v < 2 * e) { y--; e -= v; v -= 2; }
mGrap = picCanvas.CreateGraphics();
mGrap.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
int x = 0, y = (int)mS2*10, u = 1, e = 0;
int v = 2 * (int)mS2*10 - 1;
while (x < y)
x++; e += u; u += 2;
if (v < 2 * e) { y--; e -= v; v -= 2; }
if (x < y) break;
objform.Close();
Para dibujar la escalera en 3D se le pide al usuario que ingrese el ancho, el largo y el alto de la
escalera, el modelo matemático que se uso fue simple. Primero se estableció las coordenadas
de la cara superior e inferior del primer escalón con los datos que se ingresaron y luego en cada
escalón se va restando 10 centímetros del largo original, esto sería nuestra coordenada x, y en
Se creo una interfaz que contiene 3 NumericUpDown para ingresar los datos de la escalera, 3
Button el uno dibuja la escalera en 3D, el segundo dibuja la escalera en formato alambre, el
tercero limpia la pantalla y por último un PictureBox donde se dibujara los datos.
Se creo una clase llamada CLader la cual tiene una funcion readData que permite leer los datos
coordenadas 2D
En la funcion DrawLine3D es donde vamos a dibujar la escalera, y crearemos un ciclo for que
● Modo 3D
● Modo Alambre
● Ambos
El código de la clase CLader
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace ejercicio10
class CLader
{
//Datos miembro
Pen mPen;
//propiedades
//constructor vacío
public CLader()
mAX = 0;
mH = 0;
mAZ = 0;
//constructor inicializando
mAX = X;
mH = Y;
mAZ = Z;
//Leer Datos
mAX = (int)numAX.Value;
mAZ = (int)numAZ.Value;
mH = (int)numH.Value;
//Convertir a coordenadas 2D
//crear un punto
//convertir de 3D a 2D
return p;
};
//Dibujar la escalera
mGraph = pic_graph.CreateGraphics();
mGraph.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
//Puntos iniciales
//Lista de puntos
pointsBotton[0] = Convertir2D(x,y,z);
pointsBotton[1] = Convertir2D(x,y,mAZ);
pointsBotton[2] = Convertir2D(mAX,y,mAZ);
pointsBotton[3] = Convertir2D(mAX,y,z);
//Top
//Left
pointsLeft[0] = pointsBotton[1];
pointsLeft[1] = pointsBotton[2];
pointsLeft[2] = pointsTop[2];
pointsLeft[3] = pointsTop[1];
//Right
pointsRight[0] = pointsBotton[0];
pointsRight[1] = pointsBotton[3];
pointsRight[2] = pointsTop[3];
pointsRight[3] = pointsTop[0];
//Front
pointsFront[0] = pointsBotton[2];
pointsFront[1] = pointsBotton[3];
pointsFront[2] = pointsTop[3];
pointsFront[3] = pointsTop[2];
if (op == true)
//Figura 3D
mGraph.FillPolygon(Brushes.LightGray, pointsBotton);
mGraph.FillPolygon(Brushes.Gray, pointsTop);
mGraph.FillPolygon(Brushes.Gray, pointsLeft);
mGraph.FillPolygon(Brushes.Gray, pointsRight);
mGraph.FillPolygon(Brushes.Gray, pointsFront);
else
//Modo alambre
mGraph.DrawPolygon(Pens.Black, pointsBotton);
mGraph.DrawPolygon(Pens.Black, pointsTop);
mGraph.DrawPolygon(Pens.Black, pointsLeft);
mGraph.DrawPolygon(Pens.Black, pointsRight);
mGraph.DrawPolygon(Pens.Black, pointsFront);
}
//Declarar contadores
//Botton
//Top
//Left
pointsLeft[0] = pointsBotton[1];
pointsLeft[1] = pointsBotton[2];
pointsLeft[2] = pointsTop[2];
pointsLeft[3] = pointsTop[1];
//Right
pointsRight[0] = pointsBotton[0];
pointsRight[1] = pointsBotton[3];
pointsRight[2] = pointsTop[3];
pointsRight[3] = pointsTop[0];
//Front
pointsFront[0] = pointsBotton[2];
pointsFront[1] = pointsBotton[3];
pointsFront[2] = pointsTop[3];
pointsFront[3] = pointsTop[2];
if (op)
//Modo 3D
mGraph.FillPolygon(Brushes.Gray, pointsBotton);
mGraph.FillPolygon(Brushes.LightGray, pointsTop);
mGraph.FillPolygon(Brushes.Gray, pointsLeft);
mGraph.FillPolygon(Brushes.Gray, pointsRight);
mGraph.FillPolygon(Brushes.LightGray, pointsFront);
else
//Modo alambre
mGraph.DrawPolygon(Pens.Black, pointsBotton);
mGraph.DrawPolygon(Pens.Black, pointsTop);
mGraph.DrawPolygon(Pens.Black, pointsLeft);
mGraph.DrawPolygon(Pens.Black, pointsRight);
mGraph.DrawPolygon(Pens.Black, pointsFront);
auxAX -= 10;
auxHM -= mH;
auxHS -= mH;
Conclusiones
Recomendaciones
- Cada ejercicio propuesto tiene su grado de dificultad, pero es importante conocer bien
utilizar de una manera más optima todas las herramientas y facultades que este lenguaje
nos ofrece.
Glosario:
compatible con múltiples lenguajes de programación, tales como C++, C#, Visual Basic
cálculo
Bibliografía
Acerca de las líneas ocultas y la disciplina de vista. (2019, agosto 13). AutoDesk.
https://knowledge.autodesk.com/es/support/revit-products/learn-
explore/caas/CloudHelp/cloudhelp/2019/ESP/Revit-DocumentPresent/files/GUID-
E39CB6DD-7A32-4A91-95D6-E1E30FD0DD5E-htm.html
http://www.mieres.uniovi.es/egi/dao/apuntes/ocultamiento.html
https://sites.google.com/site/grafcomputacional/animacion-3d/renderizado