以下の内容はhttps://end0tknr.hateblo.jp/entry/20250722/1753127245より取得しました。


多角形に対し、四角形が内接可能な範囲をpythonで算出

当初、ミンコフスキー和 or 差で実現できるかと思いましたが、 以下のようなスキャン(ブルートフォース?)を用いる方法にたどり着きました。

from shapely.geometry import box, Polygon
import numpy as np
import matplotlib.pyplot as plt

# 多角形 a
a = Polygon([(0, 0), (100, 0), (100, 50), (70, 80), (0, 80)])
# 四角形 b のサイズ
bw, bh = 20, 20
# スキャン精度
step = 2

def main():
    valid_positions = []
    minx, miny, maxx, maxy = a.bounds

    for x in np.arange(minx, maxx - bw, step):
        for y in np.arange(miny, maxy - bh, step):
            b = box(x, y, x + bw, y + bh)
            if a.contains(b):
                valid_positions.append((x, y))

    # 可視化
    plt.figure()
    x, y = a.exterior.xy
    plt.plot(x, y, color='black', label='Polygon a')
    
    for px, py in valid_positions:
        r = box(px, py, px + bw, py + bh)
        rx, ry = r.exterior.xy
        plt.plot(rx, ry, color='blue', alpha=0.2)
        
    plt.gca().set_aspect('equal')
    plt.legend()
    plt.show()

if __name__ == "__main__":
    main()




以上の内容はhttps://end0tknr.hateblo.jp/entry/20250722/1753127245より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14