点到矩形的最短距离
- 先确定矩形的左上角(lu)和右下角(rd)坐标,以及点坐标
- 以矩形内部为中心,用四条边的延长线将空间化为9个区域
1左上 2正上 3右上 4正左 5矩形内部 6正右 7左下 8正下 9右下 - 判断点处于哪个区域
- 若在1,3,7,9区域,计算其到矩形最近的顶点的距离
- 若在2,4,6,8区域,计算其到矩形最近的边的距离
- 若在5区域,计算点到四边的距离,冒泡找出最小值
- 若在矩形边上,则为0
#include <stdio.h>
#include <math.h>
//用结构体定义矩形和点坐标
typedef struct {
double x, y;
} POINT;
typedef struct {
POINT lu, rd;
} RECTANGLE;
int main() {
RECTANGLE a;
POINT b;
scanf("%lf%lf%lf%lf", &a.lu.x, &a.lu.y, &a.rd.x, &a.rd.y);
scanf("%lf%lf", &b.x, &b.y);
//点在矩形内部时,到四边的距离
int i, j;
double n[4], t;
n[0] = b.x - a.lu.x;
n[1]