计算几何初步

这篇博客介绍了不同维度空间中两点间的距离计算,包括欧氏距离、曼哈顿距离和切比雪夫距离。欧氏距离适用于平面和立体空间,曼哈顿距离在二维和高维空间有应用,而切比雪夫距离则是考虑最大绝对差。文中还讨论了这些距离之间的转换关系,并提供了例题说明如何在特定问题中应用这些概念。此外,还涉及了向量叉积和点的旋转等几何概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两点之间距离

欧氏距离

即欧几里得距离。

平面内两点的距离为

\[\sqrt{(x_1-x_2)^2+(y_1-y_2)^2} \]

立体空间内两点的距离为

\[\sqrt{(x_1-x_2)^2+(y_1-y_2)^2+(z_1-z_2)^2} \]

\(\dots\)

\(n\) 维空间内两点的距离为

\[\sqrt{\sum_{i=1}^{n}{(x_1-x_2)^2}} \]

曼哈顿距离

二维空间内,两点之间距离为

\[d(A,B)=|x_1-x_2|+|y_1-y_2| \]

\(n\) 维空间内两点的距离为

\[\sum_{i=1}^{n}{|x_1-x_2|} \]

性质 \(-\) 三角形不等式:从点 \(i\)\(i\) 的直接距离不会大于途经的任何其它点 \(k\) 的距离。

\[d(i,j)\le d(i,k)+d(k,j) \]

切比雪夫距离

二维空间内,两点之间距离为

\[d(A,B)=\min{(|x_1-x_2|,|y_1-y_2|)} \]

曼哈顿距离与切比雪夫距离的相互转化

\(A(x_1,y_1),B(x_2,y_2)\)

  • 曼哈顿坐标系是通过切比雪夫坐标系旋转 \(45^\circ\) 后,再缩小到原来的一半得到的

  • 把每个点 \((x,y)\) 转化为 \((x+y,x-y)\)新坐标系下的切比雪夫距离 就是 原坐标系下的曼哈顿距离

  • 把每个点 \((x,y)\) 转化为 \((\dfrac{x+y}{2},\dfrac{x-y}{2})\)新坐标系下的曼哈顿距离 就是 原坐标系下的切比雪夫距离

例题

P5098 [USACO04OPEN]Cave Cows 3

对于式子 \(|x_1-x_2|+|y_1-y_2|\) ,可以假设 \(x_1-x_2\ge 0\) ,根据 \(y_1-y_2\) 正负分类讨论:

  • \(y_1-y_2\ge 0\)
\[|x_1-x_2|+|y_1-y_2|=(x_1-x_2)+(y_1-y_2)=(x-1+y_1)-(x_2+y_2) \]
  • \(y_1-y_2< 0\)
\[|x_1-x_2|+|y_1-y_2|=(x_1-x_2)+(y_2-y_1)=(x-1-y_1)-(x_2-y_2) \]

分别求出 \(x+y\)\(x-y\) 的最大、最小值之差即可。

P4648 [IOI2007] pairs 动物对数 (曼哈顿距离转切比雪夫距离)

P3964 [TJOI2013]松鼠聚会 (切比雪夫距离转曼哈顿距离)

向量叉积

对于点对 \((A,B,C)\) ,设:

\(x_1=A_x-B_x,y_1-A_y-B_y,x_2=C_x-B_x,y_2=C_y-B_y\)

若:

\[(x_1\times y_2-x_2\times y_2)>0 \]

则:

若:

\[(x_1\times y_2-x_2\times y_2)<0 \]

则:

因此我们就可以利用叉积来维护凸包以及多边形面积。

点的旋转

让点 \((x_1,y_1)\) 绕点 \((x_2,y_2)\) 旋转 \(t^o\) :

\(x=(x_1-x_2)\times \cos{t}-(y_1-y_2)\times \sin{t}+x_2\)

\(y=(x_1-x_2)\times \sin{t}+(y_1-y_2)\times \cos{t}+y_2\)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值