我实现了一个画圈函数,几乎完成了,但它看起来是这样的:
def drawCicrcle(x, y, z, radius, numSides):
numVertices = numSides + 2
doublePi = 2.0 * math.pi
circleVerticesX = np.array([], dtype='f')
circleVerticesY = np.array([], dtype='f')
circleVerticesZ = np.array([], dtype='f')
circleVerticesX = np.insert(circleVerticesX, 0, x)
circleVerticesY = np.insert(circleVerticesX, 0, y)
circleVerticesZ = np.insert(circleVerticesX, 0, z)
for i in range(1, numVertices):
circleVerticesX = np.append(
circleVerticesX, x + (radius * math.cos(i * doublePi / numSides)))
circleVerticesY = np.append(
circleVerticesY, y + (radius * math.sin(i * doublePi / numSides)))
circleVerticesZ = np.append(circleVerticesZ, z)
allCircleVertices = np.array([], dtype='f')
for i in range(0, numVertices):
allCircleVertices = np.insert(
allCircleVertices, i*3, circleVerticesX[i])
allCircleVertices = np.insert(
allCircleVertices, (i*3) + 1, circleVerticesY[i])
allCircleVertices = np.insert(
allCircleVertices, (i*3) + 2, circleVerticesZ[i])
vboc = glGenBuffers(1)
glBindBuffer(GL_ARRAY_BUFFER, vboc)
glBufferData(GL_ARRAY_BUFFER, allCircleVertices, GL_STATIC_DRAW)
glVertexAttribPointer(0, 3, GL_FLOAT, False,
sizeof(ctypes.c_float)*9, ctypes.c_void_p(36))
glDrawArrays(GL_TRIANGLE_FAN, 0, numVertices)
我把我的主要的drawCicrcle(-0.5, 0.5, 0.0, 0.18, 360)
我错过了什么
circleVerticesX = np.array([numVertices], dtype='f')
不会做你期望它做的事情。它创建一个numpy数组,其中包含一个值为numVertices
(请参见^{使用顶点坐标创建列表,并从列表中创建numpy数组:
函数
drawCicrcle
:或者,使用} ),并将顶点坐标指定给数组的字段:
numVertices*3
元素创建一个空的numpy数组(请参见^{函数
drawCicrcle
:相关问题 更多 >
编程相关推荐