求解一点到类锥边界的最短距离
类锥形区域定义
蓝线部分的区域是由一个圆不断更新圆心和半径形成的
圆初始为A(ax, ay),半径为r
圆随着参数t而变化,t的取值范围为(0, 1],圆的半径为r/t, 圆心坐标为(ax/t, ay/t)
圆扩展的方向为向量 v 方向
问题描述
对于类锥形区域内的一点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 * OD, PE = OE - OP
在直角三角形中,PE ^ 2 + ED ^ 2 = DP ^ 2,可求得DP,ED,t,进而求得AD
区域3
半径减去点到圆心的距离即为点到类锥边界的最短距离