我有一個向量對的數組,這些向量都是圍繞多邊形的順時針路徑中的所有邊。問題是,他們沒有按照正確的順序。我想對它們進行排序,以便數組的起點和終點是一樣的載體,和每一個人的一點重疊(端點到起始點):如何對點進行排序以便它們連接?
require 'matrix'
unsorted_points = [[Vector[-5, 0], Vector[-3, 2]],
[Vector[-3, 2], Vector[3, 2]],
[Vector[-3, -2], Vector[-5, 0]],
[Vector[3, 2], Vector[5, 0]],
[Vector[3, -2], Vector[-3, -2]],
[Vector[5, 0], Vector[3, -2]]]
sorted_points = [[Vector[-5, 0], Vector[-3, 2]],
[Vector[-3, 2], Vector[3, 2]],
[Vector[3, 2], Vector[5, 0]],
[Vector[5, 0], Vector[3, -2]],
[Vector[3, -2], Vector[-3, -2]],
[Vector[-3, -2], Vector[-5, 0]]]
什麼是做到這一點的最紅寶石習慣的方法?
編輯:矢量是來自'矩陣'庫的對象,但它們可以像數組一樣索引,例如, unsorted_points[0][0][0]
是-5
。
你需要告訴我們什麼'VECTOR'是,特別是如何從中提取的座標。 – sawa
@sawa ['Vector'](http://ruby-doc.org/stdlib-2.0.0/libdoc/matrix/rdoc/Vector.html)位於Ruby stdlib中;對於假設我們知道這個問題似乎是合理的。 :) – dbenhur