Expand description
多角形の幾何演算(面積・重心・点と辺の距離・内包判定)。
床領域・壁領域の検出とリビルド(crate::region_gen・crate::region_rebuild・
crate::wall_region_rebuild)、床の荷重分配(squid_n_load::floor)、
部材数量の拾い出しが同じ式を必要とするため、ここを唯一の実装とする。
2 次元の関数は座標系を問わない(床は全体 XY、壁は構面の局所 (s, z)、
断面は局所 (y, z) で使う)。長さは mm、面積は mm² を単位とする。
§面積の 3 種
多角形の面積には投影面積と真の面積があり、用途で使い分ける。
signed_area・area— 2 次元多角形のシューレース公式。area_xy— 3 次元の頂点を全体 XY 平面へ投影した面積。床は水平面内にあるため、 床の荷重分配はこちらを使う(分配が見る面積と一致させる)。area_3d— 3 次元の頂点が張る平面上での真の面積(Newell の公式)。 傾いた壁・シェルの自重はこちらを使う。投影面積は傾きのぶんだけ小さく出るため、 自重に投影面積を用いると重量を過小評価する危険側になる。
Constants§
- BOUNDARY_
TOL_ MM - 辺上とみなす、点から辺までの距離の上限 [mm]。
Functions§
- area
- 多角形の面積 [mm²](絶対値。頂点の周り方に依らない)。
- area_3d
- 平面多角形(3 次元座標、頂点が同一平面上と仮定)の面積 [mm²]。
- area_xy
- 3 次元の頂点を全体 XY 平面へ投影した多角形の面積 [mm²]。
- bounding_
box - 点群の境界ボックス
(最小の角, 最大の角)。空の点群は原点に潰れた箱を返す。 - centroid
- 多角形の面積重心。
- contains_
by_ ray_ crossing - レイキャスト(偶奇則)だけで内包を判定する。
BOUNDARY_TOL_MMの帯を一切見ない。 - contains_
excluding_ boundary - 点
pが多角形の内部にあるか。辺上(BOUNDARY_TOL_MM以内)は内部に含めない。 - contains_
including_ boundary - 点
pが多角形の内部または辺上(BOUNDARY_TOL_MM以内)にあるか。 - on_
boundary - 点
pが多角形の辺上(頂点を含む)にあるか。辺までの距離がBOUNDARY_TOL_MM以内を辺上とする。頂点が 2 個未満なら偽。 - point_
segment_ dist - 点
pから線分a–bまでの距離 [mm]。 - point_
segment_ dist_ sq - 点
pから線分a–bまでの距離の 2 乗 [mm²]。 - signed_
area - 多角形の符号付き面積 [mm²](シューレース公式。反時計回りが正)。頂点が 3 個未満なら 0。