日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python Graham求凸包問題并畫圖操作

瀏覽:22日期:2022-06-17 15:17:53
python Graham求凸包并畫圖

python寫Graham沒有c++那么好寫,但是python畫圖簡單。只需要用matplotlib里的pyplot,c++畫圖太難了。

Graham算法寫起來比較簡單,只需要想辦法對最小點和其他的點所連成的直線,與x軸正半軸的夾角進行排序,然后其他的就直接套用Graham算法模板就好了,因為c++可以重載排序函數sort,不用計算角度(用其他的數學方法),但是python不行(也許是我不知道而已,菜)。

python必須要在結構體里面加上角度這個變量,然后才能按照角度排序。排好序后就變得容易了,用stack棧存放答案,算完答案后,用scatter(散點圖)畫出點,用plt(折線圖)畫邊界就好了。

import matplotlib.pyplot as pltimport mathimport numpy as np class Node: def __init__(self):self.x = 0self.y = 0self.angel = 0#和最左下的點連成的直線,與x軸正半軸的夾角大小 #按照角度從小到大排序def cmp(x): return x.angel def bottom_point(points): min_index = 0 n = len(points) #先判斷y坐標,找出y坐標最小的點,x坐標最小的點 for i in range(1, n):if points[i].y < points[min_index].y or (points[i].y == points[min_index].y and points[i].x < points[min_index].x): min_index = i return min_index #計算角度def calc_angel(vec): norm = math.sqrt(vec[0] * vec[0] + vec[1] * vec[1]) if norm == 0:return 0 angel = math.acos(vec[0]/norm) if vec[1] >= 0:return angel else:return math.pi * 2 - angel def multi(v1, v2): return v1[0] * v2[1] - v1[1] * v2[0] point = []n = 30#生成30個點的坐標,n可以修改for i in range(n): temp = Node() temp.x = np.random.randint(1, 100) temp.y = np.random.randint(1, 100) point.append(temp)index = bottom_point(point)for i in range(n): if i == index:continue #計算每個點和point[index]所連成的直線與x軸正半軸的夾角 vector = [point[i].x - point[index].x, point[i].y - point[index].y] #vector是向量 point[i].angel = calc_angel(vector)#排序point.sort(key=cmp)#答案存入棧中stack = []stack.append(point[0])stack.append(point[1])#for循環更新答案for i in range(2, n): L = len(stack) top = stack[L - 1] next_top = stack[L - 2] vec1 = [point[i].x - next_top.x, point[i].y - next_top.y] vec2 = [top.x - next_top.x, top.y - next_top.y] #一定要大于等于零,因為可能在一條直線上 while multi(vec1, vec2) >= 0:stack.pop()L = len(stack)top = stack[L - 1]next_top = stack[L - 2]vec1 = [point[i].x - next_top.x, point[i].y - next_top.y]vec2 = [top.x - next_top.x, top.y - next_top.y] stack.append(point[i])#畫出圖像for p in point: plt.scatter(p.x, p.y, marker=’o’, c=’g’)L = len(stack)for i in range(L-1): plt.plot([stack[i].x, stack[i+1].x], [stack[i].y, stack[i+1].y], c=’r’)plt.plot([stack[0].x, stack[L-1].x], [stack[0].y, stack[L-1].y], c=’r’)plt.show()Python 找到凸包 Convex hulls

圖形學可以說經常遇到這東西了,這里給出一個庫函數的實現

from scipy.spatial import ConvexHullpoints = np.random.rand(10, 2) # 30 random points in 2-Dhull = ConvexHull(points)import matplotlib.pyplot as pltplt.plot(points[:,0], points[:,1], ’o’)for simplex in hull.simplices: plt.plot(points[simplex,0], points[simplex,1], ’k-’)plt.show()

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品久久久免费| 国产精品22p| 日韩深夜视频| 麻豆视频在线观看免费网站黄| 欧美精品aa| 久久精品国产免费| 国产精品白丝久久av网站| 国产精品免费99久久久| 久久伊人久久| 日韩深夜视频| 中国女人久久久| 综合一区在线| 欧美极品一区二区三区| 欧美国产小视频| 99成人在线视频| 麻豆成人在线| 日韩欧美美女在线观看| 国产伦精品一区二区三区在线播放| 久久99精品久久久野外观看| 国产精品国产一区| 欧美丝袜一区| 亚洲女人av| 国产精选久久| 中文一区一区三区高中清不卡免费| 久久精品亚洲人成影院 | 麻豆传媒一区二区三区| 91亚洲国产成人久久精品| 久久久9色精品国产一区二区三区| 好看的av在线不卡观看| 深夜日韩欧美| 福利精品一区| 9色精品在线| 国产乱论精品| 久久国产成人午夜av影院宅| 一本色道久久精品| 91国内精品| 国产 日韩 欧美一区| 噜噜噜躁狠狠躁狠狠精品视频| 国产精品一区二区三区av麻| 中文在线免费视频| 在线免费观看亚洲| 麻豆一区二区三| 免费观看久久av| 欧美亚洲三级| 色婷婷狠狠五月综合天色拍| 亚洲不卡视频| 日韩欧美国产精品综合嫩v| 蜜桃av一区| 高清一区二区| 视频国产精品| 日韩精品第一区| 日本不卡的三区四区五区| 日韩在线综合| 日本亚洲不卡| 久久久久国产一区二区| 日韩国产成人精品| 久久一区二区三区电影| 国产精品亚洲欧美一级在线| 亚洲国产专区| 麻豆精品视频在线观看| 麻豆精品91| 日韩在线短视频| 国产精品久久久久av蜜臀 | 亚洲啊v在线| 911亚洲精品| 欧美二区视频| 精品不卡一区| 日韩久久99| 极品日韩av| 国产极品模特精品一二| 在线亚洲免费| 蜜桃av在线播放| 国产精品探花在线观看| 石原莉奈在线亚洲二区| 亚洲v在线看| 精品欠久久久中文字幕加勒比| 蜜臀久久99精品久久久画质超高清 | 婷婷综合一区| 国产精久久一区二区| 日韩一区二区久久| 肉色欧美久久久久久久免费看| 欧美三级精品| 视频一区欧美精品| 久久久久久一区二区| 伊人久久亚洲| 丝袜美腿诱惑一区二区三区 | 午夜欧美在线| 国产人成精品一区二区三| 丝袜美腿诱惑一区二区三区| 久久久亚洲欧洲日产| 欧美日韩一区二区国产| 日韩精品亚洲aⅴ在线影院| 91高清一区| 日韩精品a在线观看91| 麻豆视频一区| 国产一区2区| 综合激情网站| 国产女人18毛片水真多18精品| 欧美国产美女| 亚洲精品裸体| 亚洲在线电影| 午夜一区在线| 清纯唯美亚洲综合一区| 久久成人亚洲| 婷婷综合成人| 欧美久久久网站| 午夜久久美女| 999精品一区| 日韩精品乱码av一区二区| 在线精品小视频| 91精品亚洲| 青青久久av| 色老板在线视频一区二区| 日韩欧美在线中字| 国产精品一在线观看| 日韩av一区二| 亚洲1234区| 久久久久久黄| 一区二区三区四区日本视频| 精品欠久久久中文字幕加勒比| 美女性感视频久久| 久久精品网址| 999国产精品视频| 国产高清一区| 视频一区二区三区中文字幕| 美女被久久久| 精品99久久| 久久人人精品| 久久午夜视频| 亚洲综合国产| 国产精品一区二区精品| 日韩中文首页| 日韩三级一区| 麻豆mv在线观看| 日韩午夜一区| 欧美日韩伊人| 亚洲精品黄色| 日韩av不卡在线观看| 今天的高清视频免费播放成人| 91tv亚洲精品香蕉国产一区| 三上悠亚国产精品一区二区三区 | 欧美a级片一区| 色天使综合视频| 欧美日韩精品一区二区三区视频| 久久av影视| 精品视频91| 欧洲精品一区二区三区| 蜜臀av免费一区二区三区| 美女精品在线| 国产欧美日韩一区二区三区四区| 精品五月天堂| 欧美日韩亚洲在线观看| 国产一区二区高清| 久久精品导航| 国产伦一区二区三区| 国产精品老牛| 欧美国产美女| 日本视频在线一区| 日本中文字幕不卡| 欧美国产日韩电影| 香蕉人人精品| 日产精品一区| 国产精品日本一区二区不卡视频 | 国产精品任我爽爆在线播放| 久久香蕉国产| 精品一区三区| 日韩一区二区中文| 欧美一区自拍| 69堂免费精品视频在线播放| 午夜影院欧美| 免费av一区二区三区四区| 免费国产自久久久久三四区久久 | 国产精品蜜月aⅴ在线| 欧美日韩夜夜| 国产一区二区高清| 国产高清不卡| 中文字幕在线视频网站| 激情综合网站| 欧美一区影院| 久久青青视频| 免费精品视频在线| 精品五月天堂| 三级亚洲高清视频| 久久久久97| 麻豆成人在线| 色综合五月天| 成人亚洲精品| 久久av免费| 免费久久精品| 日本一区免费网站| 国产麻豆精品| 99成人在线视频| 国产精品人人爽人人做我的可爱| 五月天激情综合网| 欧美日韩在线播放视频| 亚洲一区黄色| 国产黄色一区| 国产高清久久| 日韩中文首页| 亚洲性色av|