B站看到个效果,用Houdini基本复现一下
https://www.bilibili.com/video/BV1n34y1T7zM/?vd_source=45823cc7f3ac505694c035dd264cf594#reply185324895392
视野范围
匆匆忙忙写,就不做字体的格式大小,排版那些了
原本地图
布尔裁剪出一个圆,大小是设置的视野范围的圆。如果想要绝对的精度,可以不用传统多边形的一串点来描述圆,直接用C++写,做个结构体,点+半径来描述圆,CGAL还是哪个库,是有这个核的
地图的每个顶点和圆心的线段,和地图做求交。求交就是某个线段和“场景中其他所有线段”求交点。
遍历所有线段,嫌计算量太大的话再用网格划分或者四叉树等办法。这里就不用了,小场景演示。
如果有交点,那么就说明形不成所需的三角形。
所需的三角形,在下面提到
所需三角形就如这两个。。三角形的侧面边,没有和场景产生交点。
这种三角形就是我们需要的
这张图其实并不恰当
所需三角形应该是这里的很细长的那些,因为场景肯定很复杂,有很多点,不会像上图红色的那么巧
相邻的两两线段,依次找出所有所需三角形
就如这样,但有一个特殊情况,就是某个区域内,没有遮挡物,视野能看到最远,那么此时就不是三角形了,而是一段圆弧
圆弧就例如下面红色的标注