使用Python脚本的Dynamo中的粒子系统/运动

时间:2019-04-30 19:58:41

标签: python processing p5.js particle-system

所以我试图将下面的Java(p5 /P5.js)脚本转换/重新创建为Dynamo中的PythonScript:

enter image description here

到目前为止,我的尝试看起来像这样:

enter image description here

我只想知道我是否正以正确的方式进行操作?我觉得我没有正确执行def init吗?应该是(例如):self.location = location,然后在另一行上描述位置吗? 另外,在处理/ Java脚本中,Particle是一个类,然后在主脚本选项卡中进行引用……所以我可以先写出类Particle然后再执行主代码吗?

非常感谢,我正在尝试学习,任何建议/反馈都会对我有所帮助:)

1 个答案:

答案 0 :(得分:0)

我可能错了,但是我觉得您可能需要阅读/学习更多有关面向对象编程(OOP)和python的知识。所以这个答案更多地是关于那些事情。

在python def init 中,方法实际上是一个构造函数。像使用任何其他OOP语言一样,只要不使它变得太复杂,就可以在构造函数中调用函数或方法。

为了回答您的问题并给您反馈:

将废弃的代码留在类中并不总是一个好主意。您可以尝试在 init 方法内部定义宽度和高度,而不用像以前那样定义宽度和高度。这样,您可以在需要时再次使用它们:

def __init__(...):
    self.width = Math.Rand()
    self.height = Math.Rand()
    self.location = Vector.ByTwoPoint(self.width, self.height)
    ...

当然可以在脚本的其他位置使用您的类:

class Particle:
    # your class code here with this level of indentation 

# this level of indentation means you are no longer in the class and you can go on with your script
# this might be good place for a do things with your class.
# but you can do the same thing in another script file. Just don't forget to import your class
def do_stuff():
    new_particle = Particle(...) # this calls the __init__ method of your class

# lastly you should call your functions or else you don't have a runnable script
if __name__ == "__main__":
do_stuff()

如果我是对的,那么是一个不错的起点:https://www.python.org/doc/

此外,请不要复制屏幕快照,以后再复制并粘贴您的代码。这样回答起来更容易。