计算几何


计算几何
  1. 面积:二维向量叉乘等于围成的平行四边形的面积 (取绝对值),除以二就是所围成的三角形的面积。

  2. 顺逆:根据叉乘的正负可以判断两条边是顺逆排列,为正就是顺时针排列

  3. 长度:向量的长度是向量本身的点积的平方根

  4. 角度:两个向量夹角的余弦等于它们的点积与它们长度的乘积的商(A和B的点积 / A和B的模长)

  • 抄的 jls 的板子(
struct Point {
    db x;
    db y;
    Point(db x = 0, db y = 0) : x(x), y(y) {}
     
    Point &operator+=(const Point &p) {
        x += p.x, y += p.y;
        return *this;
    }
    Point &operator-=(const Point &p) {
        x -= p.x, y -= p.y;
        return *this;
    }
    Point &operator*=(const db &v) {
        x *= v, y *= v;
        return *this;
    }
    friend Point operator-(const Point &p) {
        return Point(-p.x, -p.y);
    }
    friend Point operator+(Point lhs, const Point &rhs) {
        return lhs += rhs;
    }
    friend Point operator-(Point lhs, const Point &rhs) {
        return lhs -= rhs;
    }
    friend Point operator*(Point lhs, const db &rhs) {
        return lhs *= rhs;
    }
};

db dot(const Point &u, const Point &v) {
    return u.x * v.x + u.y * v.y;
}
//记得传的是边(点相减)
db len(const Point &u, const Point &v) {
    return sqrt(dot(u, v));
}

db cross(const Point &u, const Point &v) {
    return u.x * v.y - u.y * v.x;
}

文章作者: han yue
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 han yue !
评论
  目录