2013-03-06 88 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