本文整理汇总了Python中Vector.Vector.copy方法的典型用法代码示例。如果您正苦于以下问题:Python Vector.copy方法的具体用法?Python Vector.copy怎么用?Python Vector.copy使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Vector.Vector
的用法示例。
在下文中一共展示了Vector.copy方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Container
# 需要导入模块: from Vector import Vector [as 别名]
# 或者: from Vector.Vector import copy [as 别名]
#.........这里部分代码省略.........
self.scacomms = {}
contents = argd.get("contents", None)
if contents is not None:
for (comp, params) in contents.items():
self.addElement(comp, **params)
def main(self):
while 1:
while self.dataReady("control"):
cmsg = self.recv("control")
if isinstance(cmsg, producerFinished) or isinstance(cmsg, shutdownMicroprocess):
self.send(cmsg, "signal")
return
self.handleMovement()
self.applyTransforms()
yield 1
def handleMovement(self):
""" Handle movement commands received by corresponding inboxes. """
while self.dataReady("position"):
pos = self.recv("position")
self.position = Vector(*pos)
while self.dataReady("rotation"):
rot = self.recv("rotation")
self.rotation = Vector(*rot)
while self.dataReady("scaling"):
scaling = self.recv("scaling")
self.scaling = Vector(*scaling)
while self.dataReady("rel_position"):
self.position += Vector(*self.recv("rel_position"))
while self.dataReady("rel_rotation"):
self.rotation += Vector(*self.recv("rel_rotation"))
while self.dataReady("rel_scaling"):
self.scaling = Vector(*self.recv("rel_scaling"))
def applyTransforms(self):
""" Use the objects translation/rotation/scaling values to generate a new transformation Matrix if changes have happened. """
# generate new transformation matrix if needed
if self.oldscaling != self.scaling or self.oldrot != self.rotation or self.oldpos != self.position:
self.transform = Transform()
self.transform.applyScaling(self.scaling)
self.transform.applyRotation(self.rotation)
self.transform.applyTranslation(self.position)
self.oldpos = self.position.copy()
self.oldrot = self.rotation.copy()
self.oldscaling = self.scaling.copy()
self.rearangeContents()
def rearangeContents(self):
for comp in self.components:
trans = self.transform.transformVector(self.rel_positions[comp])
self.send(trans.toTuple(), self.poscomms[comp])
# self.send(self.rotation.toTuple(), self.rotcomms[comp])
self.send(self.scaling.toTuple(), self.scacomms[comp])
def addElement(self, comp, position=(0,0,0), rotation=(0,0,0), scaling=(1,1,1) ):
self.components.append(comp)
self.rel_positions[comp] = Vector( *position )
self.rel_rotations[comp] = Vector( *rotation )
self.rel_scalings[comp] = Vector( *scaling )
self.poscomms[comp] = self.addOutbox("pos")
self.link( (self, self.poscomms[comp]), (comp, "position") )
# self.rotcomms[comp] = self.addOutbox("rot")
# self.link( (self, self.rotcomms[comp]), (comp, "rotation") )
self.scacomms[comp] = self.addOutbox("sca")
self.link( (self, self.scacomms[comp]), (comp, "scaling") )
self.rearangeContents()
def removeElement(self, comp):
self.components.remove(comp)
self.rel_positions.pop(comp)
self.rel_rotations.pop(comp)
self.rel_scalings.pop(comp)
# todo: unlink
self.poscomms.pop(comp)
self.rotcomms.pop(comp)
self.scacomms.pop(comp)
self.rearangeContents()
示例2: OpenGLComponent
# 需要导入模块: from Vector import Vector [as 别名]
# 或者: from Vector.Vector import copy [as 别名]
#.........这里部分代码省略.........
self.identifier = self.recv("callback")
while 1:
yield 1
while self.dataReady("control"):
cmsg = self.recv("control")
if isinstance(cmsg, producerFinished) or isinstance(cmsg, shutdownMicroprocess):
self.send(cmsg, "signal")
return
self.frametime = float(self.clock.tick())/1000.0
self.handleMovement()
self.handleEvents()
self.applyTransforms()
# frame function from derived objects
self.frame()
while not self.anyReady():
self.pause()
yield 1
def applyTransforms(self):
""" Use the objects translation/rotation/scaling values to generate a new transformation Matrix if changes have happened. """
# generate new transformation matrix if needed
if self.oldscaling != self.scaling or self.oldrot != self.rotation or self.oldpos != self.position:
self.transform = Transform()
self.transform.applyScaling(self.scaling)
self.transform.applyRotation(self.rotation)
self.transform.applyTranslation(self.position)
if self.oldscaling != self.scaling:
self.send(self.scaling.toTuple(), "scaling")
self.oldscaling = self.scaling.copy()
if self.oldrot != self.rotation:
self.send(self.rotation.toTuple(), "rotation")
self.oldrot = self.rotation.copy()
if self.oldpos != self.position:
self.send(self.position.toTuple(), "position")
self.oldpos = self.position.copy()
# send new transform to display service
transform_update = { "TRANSFORM_UPDATE": True,
"objectid": id(self),
"transform": self.transform
}
self.send(transform_update, "display_signal")
def handleMovement(self):
""" Handle movement commands received by corresponding inboxes. """
while self.dataReady("position"):
pos = self.recv("position")
self.position = Vector(*pos)
while self.dataReady("rotation"):
rot = self.recv("rotation")
self.rotation = Vector(*rot)
while self.dataReady("scaling"):
scaling = self.recv("scaling")
self.scaling = Vector(*scaling)
while self.dataReady("rel_position"):