vector
authorFrank DeMarco <frank.s.demarco@gmail.com>
Wed, 9 Jul 2014 16:07:54 +0000 (01:07 +0900)
committerFrank DeMarco <frank.s.demarco@gmail.com>
Thu, 10 Jul 2014 04:00:03 +0000 (13:00 +0900)
hair_on_arm/HairOnArm.py
resource/record

index 8b427d6..e5e4a13 100644 (file)
@@ -1209,21 +1209,16 @@ class Loop(Samples):
         return samples
 
 
-class Node(Sprite):
+class Vector(GameChild):
 
-    def __init__(self, parent):
-        Sprite.__init__(self, parent)
-        self.display_surface = self.get_display_surface()
-        magnitude = random() * .7 + .3
-        self.x = sqrt(random() * magnitude) * choice((1, -1))
-        self.y = sqrt(random() * (magnitude - self.x ** 2)) * choice((1, -1))
-        self.z = sqrt(magnitude - self.x ** 2 - self.y ** 2) * choice((1, -1))
-        self.dephasing = False
+    def __init__(self, parent, x, y, z):
+        GameChild.__init__(self, parent)
+        self.x, self.y, self.z = x, y, z
 
-    def rotate(self, x, y, magnitude):
+    def rotate(self, x, y, angle):
         k = x, y, 0
         v = self.x, self.y, self.z
-        th = magnitude * .125
+        th = angle * .125
         c = cos(th)
         vs = [cc * c for cc in v]
         s = sin(th)
@@ -1235,12 +1230,26 @@ class Node(Sprite):
         self.x, self.y, self.z = (vs[ii] + vc[ii] + kd[ii] for ii in \
                                   xrange(len(v)))
 
-    def get_screen_coordinates(self):
-        cx, cy = self.display_surface.get_rect().center
+    def get_screen_coordinates(self, center=None):
+        if center is None:
+            center = self.display_surface.get_rect().center
+        cx, cy = center
         x = int(round(cx + self.x * self.parent.RADIUS))
         y = int(round(cy + self.y * self.parent.RADIUS))
         return x, y
 
+
+class Node(Vector):
+
+    def __init__(self, parent):
+        self.display_surface = parent.get_display_surface()
+        magnitude = random() * .7 + .3
+        x = sqrt(random() * magnitude) * choice((1, -1))
+        y = sqrt(random() * (magnitude - x ** 2)) * choice((1, -1))
+        z = sqrt(magnitude - x ** 2 - y ** 2) * choice((1, -1))
+        Vector.__init__(self, parent, x, y, z)
+        self.dephasing = False
+
     def is_hidden(self):
         return self.z <= 0 and self.parent.parent.gate.frame_rect. \
                collidepoint(self.get_screen_coordinates())
index e69de29..8d439c4 100644 (file)
@@ -0,0 +1,20 @@
+6 142457
+7 207628
+8 251441
+3 59262
+4 78692
+5 105654
+3 64921
+0 31059
+0 22952
+0 26266
+0 28788
+0 28187
+1 50045
+2 50802
+2 57692
+1 59498
+2 46857
+3 48401
+1 63909
+3 69693