Introducción a la
Programación
Trimestre 2011 Primavera --- Tarea 2 versión A
Intersección de Segmentos
Recordarás que dos puntos distintos en el plano determinan una
única recta. Similarmente dos puntos en el plano determinan un segmento, el cual consiste
únicamente de los puntos en la recta que los une y que se
encuentran entre ellos (incluyéndolos). También
recordarás que dos rectas en el plano o bien son paralelas o
bien
se intersectan en un único punto. Con los segmentos ocurre algo
distinto, pues es posible que no se intersecten aún sin ser
paralelos. Considera por ejemplo los tres segmentos P determinado por los puntos
extremos (2,1) y (3,2), Q
determinado por los puntos extremos (1,3) y (3,4) y R determinado por los puntos
extremos (4,1) y (1,4). Observa que P
y Q no se intersectan, P y R se intersectan en (3,2) y Q y R se intersectan en (5/3, 10/3) =
(1.666666..., 3.333333...). Dados dos segmentos cualesquiera (que no
sean paralelos y ninguno de los cuales sea horizontal ni vertical)
determinados por sus puntos extremos, deberás determinar si
estos se intersectan o no y, en su caso, deberás calcular las
coordenadas del punto de intersección.
Especificación
La entrada consiste de ocho números positivos de punto flotante:
x1, y1, x2, y2, x3, y3, x4, y4. Los extremos del
segmento P son los puntos de
coordenadas (x1, y1) y (x2, y2). Los extremos del
segmento Q son los puntos de
coordenadas (x3, y3) y (x4, y4). La salida consiste
de dos números x, y de punto flotante separados por
un espacio. Si P y Q se intersectan, entonces (x, y) son las coordenadas del punto de
intersección. En caso contrario, x = y = -1. El
nombre de tu
programa deberá ser intsegNN.c,
donde
NN es el
número de lista que les fue
asignado.
Notas: (a) Tu
programa no deberá leer ni escribir nada además de los
datos mencionados. (b) Tu programa no deberá usar nada que no
hayamos visto en clase. (c) Para compilar tu programa en UNIX usa la
instrucción gcc
intsegNN.c -o intseg y para probarlo usa la instrucción ./intseg y teclea la entrada
deseada seguida de un enter.
Ejemplos
ENTRADA:
2
1
3 2 1 3 3 4 ENTRADA: 2 1 3 2 4 1 1 4
ENTRADA: 4 1 1 4 1 3 3 4
SALIDA:
-1
-1
SALIDA:
3.000000
2.000000 SALIDA:
1.666667 3.333333
Si quieres hacer más ejemplos puedes usar esta
página
de prueba.