< hamamuさんのAI生成コード置き場

多角形面積

投稿者hamamu
言語C++23
更新日時 (JST)2026-10-18 18:17:53
サイズ707 Byte
参照URL

日時はサーバーが記録したものです。更新すると更新日時が変わるので、不都合がある場合は新しく投稿してください。

テキストで開く
//generated by GPT-5.4?, modified by hamamu
namespace polygonLib{
using ll=long long;

template<class T> T cross2d(const pair<T,T> &a,const pair<T,T> &b){
    return a.first*b.second-a.second*b.first;
}

template<class T> T polyArea(const vector<pair<T,T>> &polygon){
    const ll n=(ll)polygon.size();
    if(n<=2) return T();

    T area2=T();
    for(ll i=0;i<n;++i)
        area2+=cross2d(polygon[i],polygon[(i+1)%n]);
    return area2;
}
}
using polygonLib::polyArea;
/*
- ---- 多角形の符号付面積(の2倍)
ll s2=polyArea(poly);
.               ↑vpll頂点列 例:vpll{{-1,-2},{3,1},{0,2}};
- 反時計回りが正
※頂点数0,1,2なら0  ※自己交差不可(反転分が負になる)
*/