python实现jarvis算法评定平面图的代码
时间: 2023-02-12 09:02:23 浏览: 113
JarvisAlgorithm:Jarvis算法-Java
这是一段使用Python实现Jarvis算法评定平面图的代码示例:
```python
def jarvis(points):
n = len(points)
p = 0
for i in range(1,n):
if points[i][1] < points[p][1]:
p = i
elif points[i][1] == points[p][1]:
if points[i][0] > points[p][0]:
p = i
hull = [p]
endpoint = p
while True:
q = (p + 1) % n
for i in range(n):
if orientation(points[p], points[i], points[q]) == 2:
q = i
p = q
if p == endpoint:
break
hull.append(p)
return hull
def orientation(p, q, r):
val = (q[1] - p[1]) * (r[0] - q[0]) - (q[0] - p[0]) * (r[1] - q[1])
if val == 0:
return 0
elif val > 0:
return 1
else:
return 2
```
其中,points是一个二维列表,存储了平面上所有点的坐标,jarvis函数返回一个包含平面上凸包上所有点编号的列表。注意,在这个示例中,我们假设平面上所有点的编号是0~n-1。
阅读全文