C/Visual C - problema con triangulo

 
Vista:

problema con triangulo

Publicado por Arnaldo (1 intervención) el 08/12/2004 21:47:49
Tengo que hacer un programa en c++ que dado tres puntos P(x,y), Q(x,y), R(x,y), todos diferentes (forman un triangulo), luego me dan otro punto cualquiera S(x,y), debo decir si este punto pertenece o no a este triangulo.
Se espera rapida respuesta.
GRACIAS.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problema con triangulo

Publicado por chuidiang (677 intervenciones) el 09/12/2004 09:04:41
Hola:

El algoritmo es sencillo si sabes algo de matemáticas (supongo que sí).

El triángulo son tres segmentos que tienes perfectamente delimitados con los puntos del triángulo. Son los segmentos PQ, QR y RP.

Si trazas una semirecta vertical hacia arriba desde el punto S, debes calcular a cuantos segmentos corta. Si corta a un número impar de segmentos, el punto está dentro del triángulo. Si no corta a ninguno o corta a un número par, entonces está fuera.

Para ver los cortes, en primer lugar descarta aquellos segmentos que claramente no cortan a esa recta que hemos trazado. Es decir, descarta los segmentos cuyas dos x sean menores que la x de S, los que las dos x sean mayores que la de S y los que las dos y sean menores que la y de S (es decir, los segmentos que están claramente a la izquierda, a la derecha o debajo de la semirecta).

Si hay una x a cada lado y las dos y están encima de S, entonces la semirecta corta seguro al segmento.

Para los segmentos que te queden sin descartar, (una x a cada lado del punto S una y por encima y la otra por debajo), calcula la recta que pasa por los dos puntos del segmento. Supon, por ejemplo, que te sale y = ax + b.

Luego, para esa recta, calculas el valor de y cuando x es la x de S. Es decir, y1 = aSx + b.

Si el valor de y1 en la recta es mayor que la y de S, entonces S está por debajo del segmento. La semirecta que trazamos hacia arriba desde S, cortaría al segmento.

No sé si esto está claro o está demasiado embarullado. Si tienes alguna pega, vuelve a preguntar aquí o a mi correo.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar