如何从点(x1,y1)找到给定垂线的坐标

时间:2009-12-11 10:04:30

标签: c++ geometry

我有一个多边形,既可以是规则的也可以是不规则的。我必须做多边形的偏移/缓冲。我需要通过一定量的偏移来拉伸多边形。形状应该保持不变。

2 个答案:

答案 0 :(得分:1)

根据您的要求,问题有几种不同的解决方案。

一个好的起点是阅读本页右栏中的相关部分 两个好的是:

  1. An algorithm for inflating/deflating (offsetting, buffering) polygons
  2. How do you find a point a given perpendicular distance from a line?
  3. 这两个问题(有很好的答案)会帮助你吗? 如果没有,请编辑您的问题,并提供有关您的具体问题的更多信息。

答案 1 :(得分:0)

乘以每个坐标whit偏移量

我知道,有人不会相信。 好的,这里是python中的完整源代码(我使用的是pythonxy)

import numpy as np
import matplotlib.pyplot as plt

x1, y1 = np.random.rand(2, 20)
plt.plot(x1,y1)

x2=x1*1.3
y2=y1*1.3

l=len(x1)

#calculate centers
cx1=sum(x1)/l
cy1=sum(y1)/l
cx2=sum(x2)/l
cy2=sum(y2)/l

#recenter polygon
x2=x2-(cx2-cx1)
y2=y2-(cy2-cy1)

plt.plot(x2,y2)
plt.show()

我做了示例whit随机行,但它与你的例子没有什么不同

http://img200.imageshack.us/img200/8615/grafm.png

这是有效的原因是因为每个点的乘法与拉伸轴相同。 我将中心计算为“平均值”并将一个中心移到另一个中心,这样位置看起来更自然