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))
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)
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