def get_3D_version(self, pos): pos = convert_pos(pos) x, y, z = pos dx, dy = Vector.from_2_points(self.location, (x, y)) verts = deepcopy(self.vertices) # self._convert_to3d([(x+dx, y+dy, z) for x, y in self.vertices]) self.vertices = [LowLevel.convert_pos((x+dx, y+dy, z)) for x, y in self.vertices] new = LowerDimensional(self) self.vertices = verts return new
def __init__(self, pos: tuple, radius: float, overlay: _TemplateOverlay): if self.unit_sphere is None: self.unit_sphere = self.create_sphere() pos = LowLevel.convert_pos(pos) super(Sphere, self).__init__(overlay) self.location = pos self.radius = radius self.vertices = deepcopy(self.unit_sphere) for i, pt in enumerate(self.vertices): self.vertices[i] = pt * self.radius + pos # self.vertices = self._get_vertices() self._initialize()
def __init__(self, pos: tuple, l: float, w: float, h: float, texture: _TemplateOverlay = WHITE): super(RectPrism, self).__init__(texture) pos = LowLevel.convert_pos(pos) self.location = pos self.length = l self.width = w self.height = h self.vertices = self._get_vertices() self._initialize()
def __init__(self, pos: tuple, base_radius: float, height: float, num_verts: int, overlay: _TemplateOverlay): super(RegularPyramid, self).__init__(overlay) self.location = LowLevel.convert_pos(pos) self.point = self.location + (0, height, 0) base = [] angle_change = 360 / num_verts angle = angle_change / 2 for i in range(num_verts): dx, dz = sin(radians(angle)) * base_radius, cos( radians(angle)) * base_radius base.append(self.location + (dx, 0, dz)) angle += angle_change # print(self.location + (dx, 0, dz)) i = num_verts - 1 self.vertices = [] while i > -1: # allow full loop self.vertices.extend(base[i]) self.vertices.extend(self.point) self.vertices.extend(base[i - 1]) i -= 1 self._initialize()