• 计算几何


    1.判断线段相交

    用向量叉积,把一条线段两个端点(a与b)与另一条线段上的点(c)相连,然后进行叉乘,根据叉乘的正负可以判断这个c点与(a,b)这条线段的关系,再把d与(a与b)这条线段上的两个端点相连,在求一次叉积,根据两者正负关系可以判断出来。

    2.直线相交(注意垂直情况)

    这是个数学上的问题,两点可以确定一条直线,你列个方程就行啦
    (y2-y1)/(x2-x1),计算AB斜率
    (y4-y3)/(x4-x3),计算CD斜率
    二者相等的话就不相交(平行哦)

    3.  判断线段和直线是否相交:
        有了上面的基础,这个算法就很容易了。如果线段 P1P2和直线Q1Q2相交,则P1P2跨立
    Q1Q2,即:( P1 - Q1 ) × ( Q2 - Q1 ) * ( Q2 - Q1 ) × ( P2 - Q1 ) >= 0 。

    4.  判断圆是否在矩形中:
        很容易证明,圆在矩形中的充要条件是:圆心在矩形中且圆的半径小于等于圆心到矩形四边
    的距离的最小值。

    5.点在多边形内

    面积判别法(只适用于凸多边形)

    第四点分别与三角形的两个点组成的面积分别设为S1,S2,S3,只要S1+S2+S3>原来的三角形面积就不在三角形范围中.可以使用海伦公式 。推广一下是否可以得到面向凸多边形的算法?

    我给一个比较完整的判断方法吧。
    如果要判断的点为A,则过A作平行于X轴的射线(向左),求射线与多边形的边的交点的个数,奇在内,偶在外。
    1。多边形中若存在与与X轴平行的边,这些平行边不作处理,不要去求交点;
    2。当交点在一条边的端点上时,如果这个端点是Y值较大的那个点则算一个交点,否则不算交点;
    3。如果A点在边上则算在边内,不用去求交点了。
    至于如何求两条线的交点,通过一点数学公式就行了,这里就不再提了。

    设要判断的点位A。
    1. 在多边形内取一个点B。(可以用4个顶点,取对角线的交叉点。也可以用3个顶点,从一个顶点向另2个顶点构成的线段的引线,取线上一点。)
    2. 依次判断A、B是否在每个边所对应直线的同一侧。如果不是,则A在多边形外。

    6.线段在多边形内

    线段在多边形内的一个必要条件是线段的两个端点都在多边形内,但由于多边形可能为凹,
    所以这不能成为判断的充分条件。

    如果线段和多边形的两相邻交点 P1 ,P2的中点P' 也在多边形内,则P1, P2 之间的所有
    点都在多边形内。

    7.  判断多边形是否在多边形内:  
        只要判断多边形的每条边是否都在多边形内即可。判断一个有 m个顶点的多边形是否在一个
    有n个顶点的多边形内复杂度为O(m*n)。 

    8.判断三角形

    a+b>c,同时加c,则p>c,同理p>a,P>b;

    面积s=sqrt(p*(p-a)*(p-b)*(p-c))

  • 相关阅读:
    第04组 团队项目-需求分析报告
    团队项目-选题报告
    第二次结对编程作业
    第一次结对编程作业
    第四组 团队展示
    第一次博客作业
    第09组 Alpha事后诸葛亮
    第09组 Alpha冲刺(6/6)
    2019 SDN上机第4次作业
    第09组 Alpha冲刺(5/6)
  • 原文地址:https://www.cnblogs.com/hxsyl/p/2676121.html
Copyright © 2020-2023  润新知