求解一点到类锥边界的最短距离

类锥形区域定义

蓝线部分的区域是由一个圆不断更新圆心和半径形成的

圆初始为A(ax, ay),半径为r

圆随着参数t而变化,t的取值范围为(0, 1],圆的半径为r/t, 圆心坐标为(ax/t, ay/t)

圆扩展的方向为向量 方向

 

问题描述

 对于类锥形区域内的一点C,求C到类锥形区域最近的距离d

 

解决方案

 分情况考虑,区域1,2为一种情况,区域3为另一种情况

如何判断点属于类锥形区域的哪个部分 

区域1,2

对于区域1,2,我们需要求解PA的长度 

 

思路是求解AD的长度和PD的长度,则PA = AD - DP

已知QB = r, 三角形OQB和三角形ODA相似,则OQ / OD = QB / DA --> DA = OD * QB / OQ  = OD * r / OQ

所以需要知道OD和OQ的比值才能求出DA,设OD / OQ = t

因为OD = OE + ED, 三角形OEP和三角形PED相似,所以 OE / PE = EP / ED --> ED = PE ^ 2 / OE

OE等于OP在OD上投影,所以OE = OP * ODPE = OE - OP

在直角三角形中,PE ^ 2 + ED ^ 2 = DP ^ 2,可求得DP,ED,t,进而求得AD

区域3

半径减去点到圆心的距离即为点到类锥边界的最短距离

posted @ 2019-07-16 04:36  roov  阅读(9)  评论(0编辑  收藏  举报