我正在嘗試撰寫一個沒有任何 python 庫的簡單代碼。
目的是找到矩形的中心線(特別是最長邊)。
到目前為止,這是我的代碼。(它正在尋找中心坐標)。
我希望能夠對中心線進行細化,而與矩形的方向無關。你建議我怎么做。我愿意接受任何建議。
import matplotlib.pyplot as plt
x = [4,4,-4,-4]
y = [8,-5,-5,8]
x1,y1 = x[0],y[0]
x2,y2 = x[1],y[1]
x3,y3 = x[2],y[2]
x4,y4 = x[3],y[3]
ch_y1 = y1-y2
ch_y2 = y1-y4
ch_x1 = x1-x2
ch_x2 = x1-x4
l1 = ((x1-x2)**2 (y1-y2)**2)**0.5
l4 = ((x1-x4)**2 (y1-y4)**2)**0.5
l2 = ((x2-x3)**2 (y2-y3)**2)**0.5
l3 = ((x3-x4)**2 (y3-y4)**2)**0.5
if l2 > l1:
if abs(1-l1/l3) < 0.3 :
if x1>x2:
x11 = x1 - l2/2
if x1<x2:
x11 = x1 l2/2
if x1 == x2:
x11 = x1
if y1>y2:
y11 = y1 - l2/2
if y1<y2:
y11 = y1 l2/2
if y1 == y2:
y11 = y1
if x2>x3:
x12 = x2 - l3/2
if x2<x3:
x12 = x2 l3/2
if x2 == x3:
x12 = x2
if y2>y3:
y12 = y2 - l3/2
if y2<y3:
y12 = y2 l3/2
if y2 == y3:
y12 = y2
if l1 >l2:
x1 = x1
x2 = x3
x3 = x4
y1 = y1
y2 = y3
y3 = y4
if abs(1-l2/l4) < 0.3 :
if x1>x2:
x11 = x1 - l2/2
if x1<x2:
x11 = x1 l2/2
if x1 == x2:
x11 = x1
if y1>y2:
y11 = y1 - l2/2
if y1<y2:
y11 = y1 l2/2
if y1 == y2:
y11 = y1
if x2>x3:
x12 = x2 - l4/2
if x2<x3:
x12 = x2 l4/2
if x2 == x3:
x12 = x2
if y2>y3:
y12 = y2 - l4/2
if y2<y3:
y12 = y2 l4/2
if y2 == y3:
y12 = y2
plt.plot(x,y)
plt.plot([x11,x12],[y11,y12])
uj5u.com熱心網友回復:
那太復雜了。您可以像這樣繪制穿過線段中心的線(請注意,為了簡單起見,我添加了x[0]and y[0]asx[4]和as的副本y[4]):
import matplotlib.pyplot as plt
x = [4,4,-4,-4]
y = [8,-5,-5,8]
x = x [x[0]]
y = y [y[0]]
plt.plot(x,y)
for i in range(2):
plt.plot([(x[i] x[i 1])/2, (x[i 2] x[i 3])/2], [(y[i] y[i 1])/2, (y[i 2] y[i 3])/2])

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/349381.html
標籤:Python
