def render(self, origin: bimpy.Vec2, scale: float): points_on_canvas = [ bimpy.Vec2(item.x * scale + origin.x, item.y * -scale + origin.y) for item in self._convex_points ] for index in range(len(points_on_canvas) - 1): bimpy.add_line( points_on_canvas[index], points_on_canvas[index + 1], im_col32(211, 85, 186), 1.0, ) for index in range(len(points_on_canvas)): bimpy.add_circle_filled( points_on_canvas[index], 2.0, im_col32(204, 50, 153), 16, )
def draw_window_drawing(ctx, w, h, name, points): bimpy.set_next_window_pos(bimpy.Vec2(w + 20, h + 20), bimpy.Condition.Once) bimpy.set_next_window_size(bimpy.Vec2(w, h), bimpy.Condition.Once) bimpy.begin(name) window_zero = bimpy.get_window_pos() + bimpy.Vec2(100 + temp_separation_test.value, 100 + temp_separation_test.value) window_one = bimpy.get_window_pos() + bimpy.Vec2(w - 100 - temp_separation_test.value, h - 100 - temp_separation_test.value) bimpy.add_circle_filled(window_zero, 5.0, 0xFF000000 + 0xc88200, 100) bimpy.add_circle_filled(window_one, 5.0, 0xFF000000 + 0x4bb43c, 100) for x,y in points: point = bimpy.get_window_pos() + bimpy.Vec2(x, y) bimpy.add_circle_filled(point, 5.0, 0xFF000000 + 0x4bb43c, 100) bimpy.slider_float("separation", temp_separation_test, 0.0, 100.0) bimpy.end()
ctx.new_frame() bimpy.set_next_window_pos(bimpy.Vec2(20, 20), bimpy.Condition.Once) bimpy.set_next_window_size(bimpy.Vec2(800, 600), bimpy.Condition.Once) bimpy.begin("Drawings") window_pos = bimpy.get_window_pos() center = bimpy.Vec2(100, 100) + window_pos m = 100.0 for i in range(len(datapoints)): (x, R, P, S) = datapoints[i] for j in range(x.shape[0]): point = bimpy.Vec2(x[j, 0], x[j, 1]) bimpy.add_circle_filled(point * m + center, 5, 0xAF000000 + colors[i], 100) axis_ = np.matmul(axis, S * 2.0) axis_ = np.matmul(axis_, R) + P bimpy.add_line(center + bimpy.Vec2(axis_[0, 0], axis_[0, 1]) * m, center + bimpy.Vec2(axis_[1, 0], axis_[1, 1]) * m, 0xFFFF0000, 1) bimpy.add_line(center + bimpy.Vec2(axis_[2, 0], axis_[2, 1]) * m, center + bimpy.Vec2(axis_[3, 0], axis_[3, 1]) * m, 0xFFFF0000, 1) bimpy.end() bimpy.set_next_window_pos(bimpy.Vec2(20, 640), bimpy.Condition.Once)
M = np.full((n, m), True, dtype=bool) for i in range(100): Z[M] = Z[M] * Z[M] + C[M] M[np.abs(Z) > 2] = False im = bimpy.Image(np.uint8(np.flipud(1 - M) * 255)) if bimpy.button("Checkerboard"): import numpy as np im = bimpy.Image( np.uint8( np.kron([[1, 0] * 16, [0, 1] * 16] * 16, np.ones( (20, 20))) * 255)) im.grayscale_to_alpha() y = bimpy.get_cursor_pos_y() bimpy.set_cursor_pos_y(250) window_pos = bimpy.get_window_pos() center = bimpy.Vec2(150, 350) + window_pos bimpy.text( "Some text behind image. See 'Checkerboard' and 'RGB with alpha' options." ) bimpy.add_circle_filled(center, 50, 0xaf4bb43c, 255) bimpy.set_cursor_pos_y(y) if im is not None: bimpy.image(im)