点到矩形的最短距离

本文介绍了计算点到矩形最短距离的方法,包括判断点在矩形9个区域的位置,并根据位置计算距离。对于不同区域,分别计算到顶点、边或四边的距离来确定最短距离。
摘要由CSDN通过智能技术生成

点到矩形的最短距离

  1. 先确定矩形的左上角(lu)和右下角(rd)坐标,以及点坐标
  2. 以矩形内部为中心,用四条边的延长线将空间化为9个区域
    1左上 2正上 3右上
    4正左 5矩形内部 6正右
    7左下 8正下 9右下

  3. 判断点处于哪个区域
  • 若在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] 
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
假设有一个点 P(x,y) 和一个矩形矩形的左下角顶点为 A(a,b),右上角顶点为 B(c,d)。要计算点 P 到矩形的最短距离,可以按照以下步骤进行: 1. 判断点 P 是否在矩形内部,如果在内部,则最短距离为 0。 2. 如果点 P 在矩形的左侧或右侧,则最短距离为点 P 到矩形边界的水平距离。如果点 P 在矩形的上方或下方,则最短距离为点 P 到矩形边界的垂直距离。 3. 如果点 P 在矩形的内部,则最短距离为点 P 到矩形边界的最短距离。可以将这个问题分解为点 P 到每条矩形边的最短距离,然后取其中的最小值。 具体而言,可以按照以下步骤计算点 P 到矩形左侧边界的最短距离: 1. 如果点 P 的横坐标 x 大于矩形左侧边界的横坐标 a,则点 P 在矩形左侧,最短距离为点 P 到矩形左侧边界的水平距离:d = x - a。 2. 如果点 P 的横坐标 x 小于矩形左侧边界的横坐标 a,则点 P 在矩形左侧,最短距离为点 P 到矩形左侧顶点 A 的距离:d = ((y-b)*(y-b) + (x-a)*(x-a))^(1/2)。 3. 如果点 P 的纵坐标 y 在矩形上下边界之间,则点 P 在矩形内部,最短距离为点 P 到矩形左侧边界的水平距离,即 d = x - a。 4. 如果点 P 的纵坐标 y 小于矩形下边界的纵坐标 b,则点 P 在矩形下方,最短距离为点 P 到矩形左下角顶点 A 的距离,即 d = ((y-b)*(y-b) + (x-a)*(x-a))^(1/2)。 5. 如果点 P 的纵坐标 y 大于矩形上边界的纵坐标 d,则点 P 在矩形上方,最短距离为点 P 到矩形左上角顶点的距离,即 d = ((y-d)*(y-d) + (x-a)*(x-a))^(1/2)。 同理,可以计算点 P 到矩形右侧边界、上边界和下边界的最短距离,然后取其中的最小值即可。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值