2013-03-06 154 views
0

我有一個定義一條線的點(x,y)的集合(C++向量)。我如何實現一個返回樣本線的函數,相對於它自己的尺寸水平和垂直翻轉?linesegment上的水平和垂直翻轉

+0

可不可以給你想要這個算法做或發佈的內容的示例你這麼遠代碼明智?你猜, – sgryzko 2013-03-06 16:06:51

+0

我的意思是關於質心,而不是一個固定點。謝謝你的回覆,這很好 – askemottelson 2013-03-06 16:40:47

回答

3

我假定你的意思是你不是在翻修一些固定的原點;你正在翻轉線的質心。

這裏的一些僞代碼:

Get the min and max y and x in the vector 
Height = yMax - yMin 
Width = xMax - xMin 
yCentroid = yMin + (Height/2) 
xCentroid = xMin + (Width/2) 

for each point... 
    xNew = xMax - (xOld - xMin) 
    yNew = yMax - (yOld - yMin) 

例如,如果我們有一個簡單的3點線從(-5,3)〜(7,4)至(11,-1),這將給我們一條從(11,0)到(-1,-1)到(-5,4)的翻轉線。這在下面的藍色例子中顯示。

它也適用於幾個點,如下圖所示的綠色榜樣。

Excel plot of algorithm results