多角形面積
| 投稿者 | 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 ※自己交差不可(反転分が負になる)
*/