int countIntersectionsPoint p Side Sides int n 计算交点个数 int count = 0; for int i = 0; i n; i++ if !isParallelSidesiendy - Sidesistarty Sidesiendx - Sidesistartx 如果边不平行x轴 if
该函数用于计算一个点和多边形的交点个数。
函数参数说明:
- Point p:表示要计算交点个数的点。
- Side Sides[]:表示多边形的边数组。
- int n:表示多边形的边数。
函数内部实现:
-
首先初始化交点个数为0。
-
然后遍历多边形的每一条边,判断以下情况:
-
如果边平行于x轴,则跳过该边。
-
如果点在边上,则判断边的方向,如果边向上,则交点个数加1。
-
如果射线和边相交,则交点个数加1。
-
最后返回交点个数。
函数中用到了以下两个辅助函数:
- isParallel:判断两条线段是否平行。
- isOnSide:判断一个点是否在一条线段上。
- isIntersecting:判断一条线段是否和另一条线段相交。
原文地址: https://www.cveoy.top/t/topic/fjvp 著作权归作者所有。请勿转载和采集!