Overview
Students act out a collision in their game, and reason about the mathematical behavior of collision detection
Learning Objectives
Students learn how to compute the distance between objects in one dimension
Evidence Statementes
Students will be able to explain how a Number line is used to calculate distance in one dimension
Students will be able to explain why the line-length function uses a conditional
Product Outcomes
Materials
Entorno de edición (WeScheme o DrRacket con el bootstrap-teachpack instalado)
El Libro de Trabajo del estudiante
Lapiceros/lápices para los estudiantes, marcadores de pizarra para profesores
Cartel de clase (Lista de reglas, tabla de lenguaje, calendario del curso)
Tabla de Lenguaje (Vea abajo)
Preparation
Los estudiantes están registrados en WeScheme.org, o han abierto DrRacket.
Supongamos que dos objetos se mueven a través del espacio, cada uno con sus propias coordenadas (x,y). ¿Cuándo empiezan a superponerse sus bordes? Ciertamente se superponen si sus coordenadas son idénticas (x1=x2, y1=y2), pero, ¿y si sus coordenadas están separadas por una pequeña distancia? ¿Qué tan pequeña debe ser esa distancia antes de que sus bordes se toquen?.
[Video] Visual aids are key here: be sure to diagram this on the board!
En una dimensión, es fácil calcular cuándo se superponen dos objetos . En este ejemplo, el círculo rojo tiene un radio de 1 y el círculo azul tiene un radio de 1.5 . Los círculos se superpondrán si la distancia entre sus centros es menor que la suma de sus radios (). ¿Cómo se calcula la distancia entre sus centros? En este ejemplo, sus centros están separados por 3 unidades, porque .
¿Cambiaría la distancia entre ellos si los círculos intercambiaran lugares? ¿Por qué o por qué no?
Work through a number of examples, using a number line on the board and asking students how they calculate the distance between the points. Having students act this out can also work well: draw a number line, have two students stand at different points on the line, using their arms or cutouts to give objects of different sizes. Move students along the number line until they touch, then compute the distance on the number line. The first few seconds of our Bootstrap video show this exercise in action.
- Tú archivo de juego proporciona una función llamada line-length que calcula la diferencia entre dos puntos en una línea numérica. Específicamente, la line-length toma dos números como entrada y determina la distancia entre ellos.
¿Qué respuestas esperarías de cada uno de los siguientes dos usos de line-length:
(line-length 2 5)
(line-length 5 2)
¿Esperas la mismas respuesta independientemente de si la entrada más grande o más pequeña va primero?
If you have time and want to reinforce how conditionals arise from examples, you can have students fill in blanks in Examples such as (EXAMPLE (line-length 2 5) ___), circle what’s different, and notice that the circle labels are in different orders depending on whether the first or the second input is larger. This in turn suggests that the code for line-length will need a conditional. In this case, one could avoid the conditional by taking the absolute value of the difference (the function abs does this); if you are working with older students who already know about absolute value you could show it. Using cond, however, emphasizes how code structure arises from examples.
- Dezplázate hasta las funciones line-length y collide? en tu archivo de juego. Nota que la line-length utiliza un condicional para que se reste el número más pequeño del más grande.
¿Puedes explicar por qué la line-length necesita usar cond? ¿Cuáles son las dos condiciones?
The two conditions are:
A is less than B
B is less than or equal to A
Desafortunadamente, la line-length solo puede calcular la distancia entre puntos en una sola dimensión (x or y). ¿Cómo se calcularía la distancia entre los objetos que se mueven en 2 dimensiones (como los elementos de tu juego)?. La line-length puede calcular las líneas verticales y horizontales en el gráfico mostrado aquí, utilizando la distancia entre las coordenadas x y la distancia entre las coordenadas y. Desafortunadamente, no nos dice cuán distantes están los dos centros.
Dibujar una línea desde el centro de un objeto a otro crea un triángulo rectángulo, con lados A, B y C. A y B son las distancias verticales y horizontales, siendo C la distancia entre las dos coordenadas. La line-length se puede utilizar para calcular A y B, pero ¿cómo podemos calcular C?
Students’ gamefiles all have a value called *distances-color*, which is set to the empty string "". By changing this to a color such as "yellow" or "red", the game will draw right triangles between each game character, and fill in the lengths for each side. You may want to demonstrate this using your own game file, and have the students follow along. Hint: to make it as easy as possible to see these triangles, set your background to be a simple, black rectangle and slow down the animation functions.
En un triángulo rectángulo, el lado opuesto al ángulo de 90-grados se denomina hipotenusa. Pensando de nuevo en nuestra detección de colisión, sabemos que los objetos chocarán si la hipotenusa es menor que la suma de sus radios. Saber la longitud de la hipotenusa será esencial para determinar cuando ocurre una colisión.