Resolver Los Siguientes Ejercicios Propuestos
Resolver Los Siguientes Ejercicios Propuestos
1. Insertar 4 pelo tas con diferentes longitudes de radio (4r, 2r, r y r/2). Las pelo tas
deben estar rebotando dentro de la pantalla, si llegan a colisionar, estas deben reducir
su radio a la mitad. cuando su radio es r/2 y colisiona, la pelo ta desaparece.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<title>Juegos Artificiales | Computación Gráfica</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<script src="js/fnc.js"></script>
</body>
</html>
function crearParticula() {
var particula = document.createElement("div");
particula.className = "particula";
particula.style.top = y + "px";
particula.style.left = x + "px";
particula.setAttribute("data-velocidad-y", velocidadY);
particula.setAttribute("data-velocidad-x", "0");
particula.setAttribute("data-padre", "true");
particula.style.background = getRandomColor();
document.getElementsByTagName("body")[0].append(particula);
particulasCreadas++;
particula.setAttribute("data-velocidad-y", velocidadY);
var top = particula.style.top ? particula.style.top : "0";
top = parseFloat(top.replace("px", ""));
top += velocidadY;
particula.style.top = top + "px";
hijo.style.top = particula.style.top;
hijo.style.left = particula.style.left;
hijo.style.background = particula.style.background;
hijo.setAttribute("data-padre", false);
document.getElementsByTagName("body")[0].append(hijo);
}
particula.remove();
}
function getRandomColor() {
var letras = "0123456789ABCDEF";
var color = "#";
for(let i=0; i<6; i++) {
color += letras[Math.floor(Math.random() * 16)];
}
return color;
}
window.onload = function() {
iniciar();
actualizar();
}
html, body {
margin: 0; padding: 0;
overflow-y: hidden;
overflow-x: hidden;
background: #000;
}
.fondo {
width: 100%;
height: 100%;
}
.particula {
width: 50px;
height: 50px;
background: #000;
border-radius: 50%;
position: absolute;
}
.particula[data-padre = "false"] {
width: 5px;
height: 5px;
}
2. Catarata de cubos: Crear 50 cubos y los cuales deben caer desde la parte superior de la
pantalla hacia abajo, el origen de los cubos deben ser de forma aleatoria y en
diferentes empos.
import pygame
import random
from pygame.locals import *
aristas = (
(0, 1),
(0, 3),
(0, 4),
(2, 1),
(2, 3),
(2, 6),
(5, 1),
(5, 4),
(5, 6),
(7, 3),
(7, 4),
(7, 6),
)
ListaAristas=[]
def createAristas():
y= 25
for i in range(0,50,1):
arista_x=random.randint(-25,25)
arista_y=random.randint(25,500)
vertices = [
# X Y Z
[-1+arista_x, 1+arista_y, -1], # 0
[ 1+arista_x, 1+arista_y, -1], # 1
[ 1+arista_x, 1+arista_y, 1], # 2
[-1+arista_x, 1+arista_y, 1], # 3
[-1+arista_x, -1+arista_y, -1], # 4
[ 1+arista_x, -1+arista_y, -1], # 5
[ 1+arista_x, -1+arista_y, 1], # 6
[-1+arista_x, -1+arista_y, 1], # 7
]
ListaAristas.append(vertices)
def Cubo(v):
glBegin(GL_LINES)
glColor3fv((1, 1, 0))
glEnd()
def drawCubo():
for i in range(0,50,1):
Cubo(ListaAristas[i])
pantalla = [600, 600]
Cerrar = False
pygame.init()
pygame.display.set_mode(pantalla, DOUBLEBUF | OPENGL)
pygame.display.set_caption("Cubo - Computación Gráfica")
createAristas()
print(ListaAristas)
glRotatef(0, 0, 0, -3)
glTranslatef(0., -1, 0.)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
drawCubo()
pygame.display.flip()
pygame.time.wait(60)
pygame.quit()
import turtle
def dibujarTriangulo(puntos,color,miTortuga):
miTortuga.fillcolor(color)
miTortuga.up()
miTortuga.goto(puntos[0][0],puntos[0][1])
miTortuga.down()
miTortuga.begin_fill()
miTortuga.goto(puntos[1][0],puntos[1][1])
miTortuga.goto(puntos[2][0],puntos[2][1])
miTortuga.goto(puntos[0][0],puntos[0][1])
miTortuga.end_fill()
def obtenerMitad(p1,p2):
return ( (p1[0]+p2[0]) / 2, (p1[1] + p2[1]) / 2)
def sierpinski(puntos,grado,miTortuga):
colormap = ['blue','red','green','white','yellow',
'violet','orange']
dibujarTriangulo(puntos,colormap[grado],miTortuga)
if grado > 0:
sierpinski([puntos[0],
obtenerMitad(puntos[0], puntos[1]),
obtenerMitad(puntos[0], puntos[2])],
grado-1, miTortuga)
sierpinski([puntos[1],
obtenerMitad(puntos[0], puntos[1]),
obtenerMitad(puntos[1], puntos[2])],
grado-1, miTortuga)
sierpinski([puntos[2],
obtenerMitad(puntos[2], puntos[1]),
obtenerMitad(puntos[0], puntos[2])],
grado-1, miTortuga)
def main():
miTortuga = turtle.Turtle()
miVentana = turtle.Screen()
misPuntos = [[-100,-50],[0,100],[100,-50]]
sierpinski(misPuntos,4,miTortuga)
miVentana.exitonclick()
main()
5. U lizando javascript o python, insertar una imágen y establecer las franjas a 60 grados
de inclinación bajo la siguiente configuración: (color original, canal R(rojo), canal
G(verde), canal B(azul, grises y blanco y negro).
def six_segment_effects_rotated(image_path):
# Abre la imagen original
original = Image.open(image_path).convert('RGB')
width, height = original.size