上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 48 下一页
摘要: 直线方程的一般式:ax+by+c=0 点p(x1, y1)到直线的距离: //点到直线的距离(一般式表示直线) public static float PointToLineDistance(Vector2 point, float a, float b, float c) { //直线一般式: a 阅读全文
posted @ 2023-11-05 23:19 yanghui01 阅读(2068) 评论(0) 推荐(0)
摘要: ap1×ab与ap2×ab的结果异号,则表示两点在线段两侧;同号则表示在线段同侧 有一个点在线段上或两个点都在线段上,当做在线段同侧处理 //两点是否在线段同侧 public static bool IsTwoPointSameSideOfSegment(Vector2 a, Vector2 b, 阅读全文
posted @ 2023-11-05 21:12 yanghui01 阅读(467) 评论(0) 推荐(0)
摘要: 分离轴算法 1) 英文名Separating Axis Theorem,简称SAT 2) 就是利用投影法将多边形所有点都投影到分离轴上,如果在分离轴上的投影不重叠,则两凸多边形不相交。 那将哪个轴作为分离轴呢? 多边形的每条边的法线都分别作为分离轴来计算一次,在所有分离轴上都测试通过,则两个多边形相 阅读全文
posted @ 2023-11-05 01:33 yanghui01 阅读(598) 评论(0) 推荐(0)
摘要: 1) 以矩形的中心作为原点,建立坐标系。 2) 通过圆到矩形的最短距离<=r来判断是否相交,几种情况 2-a) bc.x>0&bc.y>0时,圆到矩形的最短距离为|bc|,所以|bc|>r则圆和矩形没有相交 2-b) bc.x<=0&bc.y>0时,圆到矩形的最短距离为|bc.y|即|dc|,把bc 阅读全文
posted @ 2023-11-05 00:40 yanghui01 阅读(816) 评论(0) 推荐(0)
摘要: 同侧法 点p在三角形三条边的同侧时,点p在三角形内。可以通过叉乘结果是否都为正或负来判断是否同侧 1) 三角形顶点逆时针时 1-a) ab与ap, bc与bp, ca与cp的夹角均为右手逆时针锐角,sin(锐角)>0,即:叉乘结果>0,此时p在三角形内。 1-b) bc与bp的夹角为0度,sin(0 阅读全文
posted @ 2023-11-04 01:04 yanghui01 阅读(240) 评论(0) 推荐(0)
摘要: 1) 如果点在以线段ab为对角线的矩形外, 肯定不在线段上 2) 点p和线段端点a或b重叠时, 在线段上 3) ap和ab的夹角为0度,则点在线段上; 否则不在线段上 叉乘判断 //点是否在线段上 public static bool IsPointOnSegment(Vector2 p, Vect 阅读全文
posted @ 2023-11-04 00:04 yanghui01 阅读(599) 评论(0) 推荐(0)
摘要: 一个点在圆内 两个点都在圆内 两个点都在圆外 public static bool IsSegmentCircleIntersect(Vector2 p1, Vector2 p2, Vector2 center, float r) { float sqrR = r * r; //1) 一个点在圆内, 阅读全文
posted @ 2023-11-03 00:21 yanghui01 阅读(226) 评论(0) 推荐(0)
摘要: 更推荐这个:点到线段的最近距离, 点与线段的位置关系 - 投影方式 判断依据 点与线段端点组成的三角形,有一个角是钝角或180度时,点在线段外侧 sin(锐角)>0, sin(钝角)>0,无法区分,所以叉乘不行。 cos(锐角)>0, cos(钝角)<0,可以区分,所以用点乘。 1) 在外侧时 a) 阅读全文
posted @ 2023-11-03 00:08 yanghui01 阅读(253) 评论(0) 推荐(0)
摘要: 注意:这边的矩形不带旋转 两圆是否相交 //两圆是否相交 public static bool IsTwoCircleIntersect(Vector2 center1, float r1, Vector2 center2, float r2) { var r = r1 + r2; var resu 阅读全文
posted @ 2023-11-02 23:31 yanghui01 阅读(51) 评论(0) 推荐(0)
摘要: 点是否在矩形内 //点是否在矩形内 public static bool IsPointInRect(Vector2 p, Vector2 min, Vector2 max) { if (p.x < min.x || p.x > max.x) return false; if (p.y < min. 阅读全文
posted @ 2023-11-02 23:04 yanghui01 阅读(29) 评论(0) 推荐(0)
上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 48 下一页