判断点是否在类锥形区域外部

问题描述:

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

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

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

圆扩展的方向为向量 方向

给一点D(a, b),判断D是否在蓝色区域内

 

 

解决方案:

1. 判断点是否在半圆区域,利用 || D - A || < r 判断,若成立,则D在蓝色区域内,若不成立,则执行第2步

2. 作D在向量 v 上的投影,设投影为C,因为C在向量 v 上,所以设C的坐标为(t * (bx - ax), t * (by - ay))

3. DC与向量 v 垂直,根据垂直两向量点乘等于0可求得参数t

4. 若 t 小于0,则一定不在蓝色区域内,特别情况半圆区域已经在第1步判断过了

5. 根据t可求得当前所在圆的半径及DC距离,判断DC距离与当前圆的半径大小,即可判断D是否在蓝色区域内

posted @ 2019-07-15 22:14  roov  阅读(14)  评论(0)    收藏  举报