Example #1
0
    def created(self):
        n = self.n
        self.pts = []

        for i in range(1, n):
            a = (i / n - 0.5) * pi
            p = []
            for j in range(n):
                b = j * 2 * pi / n
                tc = anglesToCoords([b, a])
                p.append(tc)
            self.pts.append(p)

        self.np = numpy.array([0, 1, 0])
        self.sp = numpy.array([0, -1, 0])

        for k in range(n):
            uv = numpy.array([(1 / n, k / n), (0, k / n),
                              (1 / n, (k + 1) / n)])
            wc = numpy.array([self.pts[0][k - 1], self.sp, self.pts[0][k]])
            self.appendWedge(wc, uv)

        for i in range(n - 3, -1, -1):
            for j in range(n):
                uv = numpy.array([((i + 1) / n, j / n),
                                  ((i + 1) / n, (j + 1) / n),
                                  ((i + 2) / n, (j + 1) / n)])
                wc = numpy.array(
                    [self.pts[i][j - 1], self.pts[i][j], self.pts[i + 1][j]])

                self.appendWedge(wc, uv)
                uv = numpy.array([((i + 1) / n, j / n),
                                  ((i + 2) / n, (j + 1) / n),
                                  ((i + 2) / n, j / n)])
                wc = numpy.array([
                    self.pts[i][j - 1], self.pts[i + 1][j],
                    self.pts[i + 1][j - 1]
                ])
                self.appendWedge(wc, uv)

        for k in range(n):
            uv = numpy.array([((n - 1) / n, k / n), ((n - 1) / n, (k + 1) / n),
                              (1, k / n)])
            wc = numpy.array([self.pts[-1][k - 1], self.pts[-1][k], self.np])
            self.appendWedge(wc, uv)

        p = np.array(self.viewer.sunPoints) + self.pos
        self.viewer.sunAvgPos = np.array(self.viewer.sunAvgPos) + self.pos
        self.viewer.sunPoints = (p.reshape((-1, 3)) @ self.rotMat).reshape(
            (-1, 3, 3))
Example #2
0
    def create(self):
        self.numWedges = 0
        pos = numpy.array(self.coords)
        n = self.n
        self.pts = []

        for i in range(1, n):
            a = (i / n - 0.5) * pi
            p = []
            for j in range(n):
                b = j * 2 * pi / n
                tc = anglesToCoords([b, a])
                p.append(tc)
            self.pts.append(p)

        self.np = numpy.array([0, 1, 0])
        self.sp = numpy.array([0, -1, 0])

        for k in range(n):
            uv = numpy.array([(1 / n, k / n), (0, k / n),
                              (1 / n, (k + 1) / n)])
            wc = numpy.array([self.pts[0][k - 1], self.sp, self.pts[0][k]])
            self.appendWedge(wc, -wc, uv)

        for i in range(n - 3, -1, -1):
            for j in range(n):
                uv = numpy.array([((i + 1) / n, j / n),
                                  ((i + 1) / n, (j + 1) / n),
                                  ((i + 2) / n, (j + 1) / n)])
                wc = numpy.array(
                    [self.pts[i][j - 1], self.pts[i][j], self.pts[i + 1][j]])

                self.appendWedge(wc, -wc, uv)
                uv = numpy.array([((i + 1) / n, j / n),
                                  ((i + 2) / n, (j + 1) / n),
                                  ((i + 2) / n, j / n)])
                wc = numpy.array([
                    self.pts[i][j - 1], self.pts[i + 1][j],
                    self.pts[i + 1][j - 1]
                ])
                self.appendWedge(wc, -wc, uv)

        for k in range(n):
            uv = numpy.array([((n - 1) / n, k / n), ((n - 1) / n, (k + 1) / n),
                              (1, k / n)])
            wc = numpy.array([self.pts[-1][k - 1], self.pts[-1][k], self.np])
            self.appendWedge(wc, -wc, uv)
Example #3
0
 def changeDir(self, newDir):
     self.dv = anglesToCoords(newDir) * self.vel
     self.Rpv[self.pl < 0] = (
         0.5 - nr.randn(np.sum(self.pl < 0), 3)) * self.randVel + self.dv