计算直线的斜率

在二维平面直角坐标系中,只要给定了两点(不重合),就能确定唯一一条直线,但当直线平行或垂直与x轴时,x或y的系数将为0,不方便存储。
不过,既然给定了两个点,我们可以直接用单位向量表示一条直线的斜率。

set<pair<int, int>> S;
    for (int i = 2; i <= n; ++i)
    {
        int dx = p[i].x - p[1].x, dy = p[i].y - p[1].y;
        int d = abs(__gcd(dx, dy));//gcd可能为负数,取绝对值
        if (dx < 0)//将向量的方向统一为从左向右
            dx = -dx, dy = -dy;
        S.insert({dx / d, dy / d});//判断有无重复斜率
    }
posted @ 2022-11-29 14:14  何太狼  阅读(158)  评论(0编辑  收藏  举报