回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>首先,我对Python(一个编程领域)相当陌生,但我希望学习并转换由<a href="https://stackoverflow.com/users/837847/jwpat7">jwpat7</a>开发的函数。给出一组由凸壳导出的点</p>
<pre><code>hull= [(560023.44957588764,6362057.3904932579),
(560023.44957588764,6362060.3904932579),
(560024.44957588764,6362063.3904932579),
(560026.94957588764,6362068.3904932579),
(560028.44957588764,6362069.8904932579),
(560034.94957588764,6362071.8904932579),
(560036.44957588764,6362071.8904932579),
(560037.44957588764,6362070.3904932579),
(560037.44957588764,6362064.8904932579),
(560036.44957588764,6362063.3904932579),
(560034.94957588764,6362061.3904932579),
(560026.94957588764,6362057.8904932579),
(560025.44957588764,6362057.3904932579),
(560023.44957588764,6362057.3904932579)]
</code></pre>
<p>此脚本返回此<a href="https://stackoverflow.com/questions/13542855/python-help-to-implement-an-algorithm-to-find-the-minimum-area-rectangle-for-gi">post problem</a>后面所有可能区域的打印。代码由
jwpat7是:</p>
^{pr2}$
<p>结果是:</p>
<pre><code>i iL iP iR Area
0 6 8 0 203.000
1 6 8 0 211.875
2 6 8 0 205.800
3 6 10 0 206.250
4 7 12 0 190.362
5 8 0 1 203.000
6 10 0 4 201.385
7 0 1 6 203.000
8 0 3 6 205.827
9 0 3 6 205.640
10 0 4 7 187.451
11 0 4 7 189.750
12 1 6 8 203.000
</code></pre>
<p>我希望创建一个返回最小矩形的长度、宽度和面积的函数。例如:</p>
<pre><code>Length, Width, Area = get_minimum_area_rectangle(hull)
print Length, Width, Area
18.036, 10.392, 187.451
</code></pre>
<p>我的问题是:</p>
<ol>
<li>我需要创建一个函数还是两个函数。示例:def
得到最小面积矩形</li>
<li>赫尔是一个价值列表。这是最好的格式吗?
<ol start=“3”>
<li>按照一个函数的方法,我有一个问题是如何在内部集成mostfar</li>
</ol></li>
</ol>
<p>提前谢谢</p>
<p>1)解决方案:一个功能
按照Scott Hunter提出的第一个解决方案,我有一个问题,就是在get_minimum_area_rectangle()中集成mostfar()。任何建议或帮助都非常感谢,因为我可以学习。在</p>
<pre><code>#!/usr/bin/python
import math
def get_minimum_area_rectangle(hull):
# get pi greek
pi = 4*math.atan(1)
# number of points
n = len(hull)
# indexes left, right, opposite
iL = iR = iP = 1
# work clockwise direction
for i in range(n-1):
# distance on x axis
dx = hull[i+1][0] - hull[i][0]
# distance on y axis
dy = hull[i+1][1] - hull[i][1]
# get orientation angle of the edge
theta = pi-math.atan2(dy, dx)
s, c = math.sin(theta), math.cos(theta)
yC = hull[i][0]*s + hull[i][1]*c
</code></pre>
<p>从这里开始,按照上面的jwpat7示例,我需要使用mostfar()。在这一点上,我有一个问题要理解,mostfar是如何整合的(抱歉,这个词不正确)</p>