Closed Raclamusi closed 1 month ago
良さそうです。PR お願いします。
PR ありがとうございます。これは .calculateRoundBuffer()
だけでなく .calculaeBuffer()
も 1 頂点に対応したいですね。やってみて問題が無さそうであれば後者もお願いします。
1頂点の .calculaeBuffer()
は、下図のようにポリゴンが潰れてしまうから空のポリゴンを返す方が自然だと思っていたので、.calculateRoundBuffer()
についてのみ提案しました。
しかし、boost::geometry::buffer()
は1頂点の linestring に対して正方形を返します。
そもそも向きが定まらないので潰れようがないという解釈をすると、こちらの方が自然なのかもしれません。
何より、ある Vec2
型変数 p
について LineString{ p }.calculateBuffer()
と LineString{ p, p }.calculateBuffer()
の結果は等しいほうが良いと思うので、.calculateBuffer()
についても実装してみます。
サイズが1の
LineString
に対して.calculateRoundBuffer()
を呼んだとき、現在は空のポリゴンが返りますが、円のポリゴンを返すようにすることを提案します。 この方がより自然な挙動だと思います。実装は、以下のコードの条件を
points.size() < 1
に変更するだけです。https://github.com/Siv3D/OpenSiv3D/blob/a5a6d7bf1e0399a53607eebd956472fd15026c55/Siv3D/src/Siv3D/Polygon/PolygonDetail.cpp?ts=4#L1293-L1296