El problema que se plantea es hacer un programa que nos
diga si una circunferencia y una recta intersectan o no.
#include <iostream>
#include <math.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
float xcentro,ycentro,radio;
float pendiente,b;
float perpendicularpendiente,perpendicularB;
float xinterseccion, yinterseccion;
float distx,disty,dist;
std::cout << "PROGRAMA DE CALCULO DE INTERSECCIONES ENTRE CIRCUNFERENCIA-RECTA" << std::endl;
std::cout << "DATOS CIRCUNFERENCIA" << std::endl;
std::cout << "Introduzca el centro de la circunferencia:" << std::endl;
std::cout << "x: ";
std::cin >> xcentro;
std::cout << std::endl;
std::cout << "y: ";
std::cin >> ycentro;
std::cout << std::endl;
std::cout << "Introduzca el radio de la circunferencia: " ;
std::cin >> radio;
std::cout << std::endl;
std::cout << std::endl << "DATOS RECTA" << std::endl;
std::cout << "Introduzca el pendiente de la recta (m) " ;
std::cin >> pendiente;
std::cout << "Introduzca punto de intersección con el eje de las Y (b) " ;
std::cin >> b;
std::cout << std::endl << "CALCULANDO....ESPERE UN MOMENTO" << std::endl;
perpendicularpendiente = -(1/pendiente);
//Calculamos el termino independiente de una recta perpendicular a la dada.
perpendicularB = ycentro - perpendicularpendiente*xcentro;
//Calculamos q punto de la recta es el más cercano al centro de la circunferencia
xinterseccion = (perpendicularB-b)/(pendiente-perpendicularpendiente);
yinterseccion = xinterseccion*pendiente+b;
//calculamos la distancia minima entre recta y circunferencia
distx = xinterseccion - xcentro;
disty = yinterseccion - ycentro;
dist = sqrt(distx*distx + disty*disty);
if (dist <= radio)
{
std::cout << "La recta interesecta la circunferencia." << std::endl;
}
else
{
std::cout << "La recta NO intersecta la circunferencia." << std::endl;
}
system("pause");
return 0;
}
#include <iostream>
#include <math.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
float xcentro,ycentro,radio;
float pendiente,b;
float perpendicularpendiente,perpendicularB;
float xinterseccion, yinterseccion;
float distx,disty,dist;
std::cout << "PROGRAMA DE CALCULO DE INTERSECCIONES ENTRE CIRCUNFERENCIA-RECTA" << std::endl;
std::cout << "DATOS CIRCUNFERENCIA" << std::endl;
std::cout << "Introduzca el centro de la circunferencia:" << std::endl;
std::cout << "x: ";
std::cin >> xcentro;
std::cout << std::endl;
std::cout << "y: ";
std::cin >> ycentro;
std::cout << std::endl;
std::cout << "Introduzca el radio de la circunferencia: " ;
std::cin >> radio;
std::cout << std::endl;
std::cout << std::endl << "DATOS RECTA" << std::endl;
std::cout << "Introduzca el pendiente de la recta (m) " ;
std::cin >> pendiente;
std::cout << "Introduzca punto de intersección con el eje de las Y (b) " ;
std::cin >> b;
std::cout << std::endl << "CALCULANDO....ESPERE UN MOMENTO" << std::endl;
perpendicularpendiente = -(1/pendiente);
//Calculamos el termino independiente de una recta perpendicular a la dada.
perpendicularB = ycentro - perpendicularpendiente*xcentro;
//Calculamos q punto de la recta es el más cercano al centro de la circunferencia
xinterseccion = (perpendicularB-b)/(pendiente-perpendicularpendiente);
yinterseccion = xinterseccion*pendiente+b;
//calculamos la distancia minima entre recta y circunferencia
distx = xinterseccion - xcentro;
disty = yinterseccion - ycentro;
dist = sqrt(distx*distx + disty*disty);
if (dist <= radio)
{
std::cout << "La recta interesecta la circunferencia." << std::endl;
}
else
{
std::cout << "La recta NO intersecta la circunferencia." << std::endl;
}
system("pause");
return 0;
}