计算多边形的斜外包矩形

本文介绍了如何计算不规则多边形的最小斜外包矩形,以确定文字注记的轴线。通过计算多边形顶点的坐标变换,找到外包矩形并确定其长轴,进而实现与多边形边平行的文字排列。算法涉及坐标旋转公式,最终选择面积最小的外包矩形作为结果。此方法适用于地图制图中的文字布局优化。
摘要由CSDN通过智能技术生成

在地图制图时,有时需要依据多边形的长轴方向决定文字注记的轴线,如下图

为此达到上述目的,需要计算多边形的长轴方向。对不规则多边形计算长轴方向,一个可行的办法是计算出多边形的最小斜外包矩形,并根据该斜外包矩形的长边,来计算轴线。

斜外包矩形计算的总体思路:

1、设多边形顶点数为n,编号为1-n,以12作为参考边

2、将参考边以起始点(x1,y1)为轴逆时针旋转θ,使得L12边平行于x轴,旋转后的多边形各顶点坐标为(x1,y1),(x2',y2'),……,(xn',yn')

3、外包矩形左下角坐标为(min{xn'},min{yn'}),右上角角坐标为(max{xn'},max{yn'})

4、记录外包矩形的面积,长中轴

5、将外包矩形以起始点(x1,y1)为轴顺时针旋转θ(复原),求得复原后外包矩形的坐标

6、以23、34、……、n1依次作为参考边,重复上述过程

7、最终将面积最小者作为最小斜外包矩形,进行输出

需要用到的公式:

平面内直角坐标系中坐标旋转变换公式

x'=xcos(θ)-ysin(θ)
y'=ycos(θ)+xsin(θ)

由于本需求中,并非对坐标绕坐标系原点旋转,所以需要对上述公式进行变换:

设点(x,y)绕点(x1,y1)逆时针旋转θ角,旋转后的点坐标(x',y')计算公式为:

x'=(x - x1)cos(θ) - (y - y1)sin(θ) + x1
y'=(y - y1)cos(θ) + (x - x1)sin(θ) + y1

对应的,复原时,需要将外包矩形的顶点(x',y')绕点(x1,y1)再顺时针旋转θ角,这样得到的复原后斜外包矩形的顶点坐标(x'',y'')计算公式为:

x'' = (x' - x1)cos(θ) + (y' - y1)sin(θ) + x1
y'' = (y' - y1)cos(θ) - (x' - x1)sin(θ) + y1

多边形与最小斜外包矩形叠加效果如下:

需要留意的是,本算法中,斜外包矩形旋转的角度,局限于原多边形每一条边的方位角,也就是说斜外包矩形一定与多边形的某一条边重合或者平行,但实际情况中,可能存在不平行的情况。考虑到本算法已经能满足生成倾斜注记需要,对这种特殊情况未做进一步优化调整。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值