根据边框填充凹面多边形

时间:2014-02-27 18:54:47

标签: matplotlib drawing polygon

问题是使用pylab,numpy&amp ;;绘制一个内部有色的8点星。 matplot。

我已经设置了顶点xy坐标,它给出了星星的边框:

a=linspace(0,2*pi,2*n-1)
x=[]
y=[]
per=0

ang=list(a)

for i in range(2*n-1):
    if i%2==0:
        x.append(cos(ang[i]))
        y.append(sin(ang[i]))
    else:
        x.append(0.5*cos(ang[i]))
        y.append(0.5*sin(ang[i]))
plot (x,y)

现在我需要填写它,但我没有找到解决方案。

编辑:

我插入了这一行:

u=linspace(0,1)
for k in u:
    for i in range(2*n-1):
        if i%2==0:
            x.append(k*cos(ang[i]))
            y.append(k*sin(ang[i]))
        else:
            x.append(0.5*k*cos(ang[i]))
            y.append(0.5*k*sin(ang[i]))

通过区域,积分等问题的简单数学概念解决(:

1 个答案:

答案 0 :(得分:1)

循环可以很容易地在numpy中矢量化,填充多边形可以通过matplotlib fill命令绘制。这是一个例子:

import numpy as np
import matplotlib.pyplot as plt

n = 8
# angles of outer points
phi = np.linspace(0, 2*np.pi, tips+1)
# generate outer and inner (shifted) coordinates
x = np.array([np.sin(phi),
              0.5 * np.sin(phi + phi[1]/2)]).flatten(order='F')
y = np.array([np.cos(phi),
              0.5 * np.cos(phi + phi[1]/2)]).flatten(order='F')
# plot filled
plt.fill(x,y)
plt.show()