我的python代码不会运行!?
我不知道如何解决这个问题。有人可以帮帮我吗?
错误:
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\OpenGL\GLUT\special.py", line 120, in safeCall
return function( *args, **named )
File "C:/Users/zera7777/Desktop/New.py", line 106, in testCyrusBeck
numpy = point2Array([[0,3],[0,6],[4,6],[6,4],[6,0],[3,0]])
TypeError: 'list' object is not callable
GLUT Idle callback <function testCyrusBeck at 0x02AD8F30> with (),{} failed: returning None 'list' object is not callable
代码:
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
class Line2Segment(object):
def Vector2(self):
Vector2=norm()
Vector2.c = second - first
Vector2.normalVector = c.GetNormalVector()
return normalVector
def Line2Segment(self):
first.x=first.y=0
second.x=second.y=0
def __init__(self,first=0,second=0):
self.first=first
self.second=second
def Line2Segment(self):
first=self.first
second=self.second
class Line2(object):
def Line2(self):
pt.x=pt.y=0
norm.x=norm.y=0
def __init__(self,pt=0,norm=0):
self.pt=pt
self.norm=norm
def Line2(self):
pt=self.pt
norm=self.norm
class Line2List(object):
def num(self):
return line.size()
def push_back(self):
self.create_line(x0, y0, x1, y1, fill="#4760bf", width=3)
def __lshift__(self,index):
self.file.write(str(index))
return self
def chopCI(tIn,tOut,number,denom):
if denom<0:
tHit=number/denom
if tHit>tOut:
return 0
elif tHit>tIn:
tIn=tHit
elif denom>0:
tHit=number/denom
if tHit<tIn:
return 0
if tHit<tOut:
tOut=tHit
elif number<=0:
return 0
return 1
def CyrusBeckClip(seg,L):
tIn=0.0
tOut=1.0
c=seg.second-seg.first
L=Line2List.num()
for i in range(1,L):
tmp=L.line[i].pt-seg.first
number=L.line[i].norm*tmp
denom=L.line[i].norm*c
if(not chopCI(tIn,tOut,number,denom)):
return 0
if tOut<1.0:
seg.second=seg.first+c*tOut
if tIn>0.0:
seg.first=seg.first+c*tIn
return 1
def testLineSegment(self,AC,polygon):
glColor3f(0.0,0.0,1.0)
glBegin(GL_LINES)
glVertex2d(AC.first.x,AC.first.y)
glVertex2d(AC.second.x,AC.second.y)
glEnd()
glColor3f(0.0,1.0,1.0)
glBegin(GL_POINTS)
glVertex2d(AC.first.x,AC.first.y)
glVertex2d(AC.second.x,AC.second.y)
glEnd()
result = CyrusBeckClip(AC,polygon)
if result==0:
printf("")
else:
glColor3f(0.0,1.0,0.0)
glBegin(GL_LINES)
glVertex2d(AC.first.x,AC.first.y)
glVertex2d(AC.second.x,AC.second.y)
glEnd()
glColor3f(1.0,0.0,1.0)
glBegin(GL_POINTS)
glVertex2d(AC.first.x,AC.first.y)
glVertex2d(AC.second.x,AC.second.y)
glEnd()
def testCyrusBeck():
point2Array=[]
numpy = point2Array([[0,3],[0,6],[4,6],[6,4],[6,0],[3,0]])
glColor3f(1.0,1.0,0.0)
glBegin(GL_LINE_LOOP)
for i in range(1,7):
tempPoint.x = point2Array[i][0]
tempPoint.y = point2Array[i][1]
tempPoint2.x = point2Array[(i+1)%6][0]
tempPoint2.y = point2Array[(i+1)%6][1]
tempLine2.norm = ((Vector2)(tempPoint2-tempPoint)).GetNormalVector()
tempLine2.pt = tempPoint
polygon.push_back(tempLine2)
glVertex2d(tempPoint.x,tempPoint.y)
glEnd()
tempPoint.set(0,0);
tempPoint2.set(6,6);
AC.first = tempPoint;
AC.second = tempPoint2;
testLineSegment(AC,polygon);
tempPoint.set(2,3);
tempPoint2.set(5,7);
AC.first = tempPoint;
AC.second = tempPoint2;
testLineSegment(AC,polygon);
tempPoint.set(7,0);
tempPoint2.set(7,4);
AC.first = tempPoint;
AC.second = tempPoint2;
testLineSegment(AC,polygon);
tempPoint.set(1,5);
tempPoint2.set(4,5);
AC.first = tempPoint;
AC.second = tempPoint2;
testLineSegment(AC,polygon);
glutInit()
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA)
glutInitWindowSize(400, 400)
glutCreateWindow("test")
glutDisplayFunc(testCyrusBeck)
glutIdleFunc(testCyrusBeck)
glutMainLoop()
plt.show()
答案 0 :(得分:8)
这两行是一个问题:
point2Array=[]
numpy = point2Array([[0,3],[0,6],[4,6],[6,4],[6,0],[3,0]])
您已创建list
对象并将其绑定到名称point2Array
。您随后调用该对象。
您不能()
list
。
也许你想说:
point2Array = numpy.array([[0,3],[0,6],[4,6],[6,4],[6,0],[3,0]])
或者你的意思是:
point2Array = [[0,3],[0,6],[4,6],[6,4],[6,0],[3,0]]