0: result[index] = [x - 0.5, y - 0.5, z - 0.5] # 向内扩散 len = 0.7 result[index] = result[index] * (1 - len * inside_rand(0.2)) # 重新赋予深度 newY = random.random() - 0.5 rheartValue = heart_func(result[index][0] + 0.5, newY + 0.5, result[index][2] + 0.5, heartScales[0]) if rheartValue > 0: continue result[index][1] = newY # 删掉肚脐眼 dist = distance(result[index]) if dist < 0.12: continue index = index + 1 if index % 100 == 0: print("{ind} generated {per}%".format(ind=index, per=((index / pointCount) * 100))) return result # 生成随机心 def genRandPoints(pointCount, heartScales, maxVar, ratio): result = np.empty((pointCount, 3)) index = 0 while index < pointCount: x = random.random() y = random.random() z = random.random() mheartValue = heart_func(x, 0.5, z, heartScales[1]) mid_ignore = random.random() if mheartValue < 0 and mid_ignore < mid_point_ignore: continue heartValue = heart_func(x, y, z, heartScales[0]) sheartValue = heart_func(x, y, z, heartScales[1]) if heartValue < 0 and sheartValue > 0: result[index] = [x - 0.5, y - 0.5, z - 0.5] dist = distance(result[index]) if dist < 0.12: continue len = 0.7 result[index] = result[index] * (1 - len * inside_rand(0.2)) index = index + 1 for i in range(pointCount): var = maxVar * ratio randScale = 1 + random.normalvariate(0, var) result[i] = result[i] * randScale return result # 世界坐标到相机本地坐标 def world_2_cameraLocalSapce(world_point): new_point = world_point.copy() new_point[1] = new_point[1] + camera_position[1] return new_point # 相机本地坐标到相机空间坐标 def cameraLocal_2_cameraSpace(cameraLocalPoint): depth = distance(cameraLocalPoint) cx = cameraLocalPoint[0] * (camera_close_plane / cameraLocalPoint[1]) cz = -cameraLocalPoint[2] * (cx / cameraLocalPoint[0]) cameraLocalPoint[0] = cx cameraLocalPoint[1] = cz return cameraLocalPoint, depth # 相机空间坐标到屏幕坐标 def camerSpace_2_screenSpace(cameraSpace): x = cameraSpace[0] y = cameraSpace[1] # convert to view space centerx = canvas_width / 2 centery = canvas_height / 2 ratiox = canvas_width / world_width ratioy = canvas_height / world_heigth viewx = centerx + x * ratiox viewy = canvas_height - (centery + y * ratioy) cameraSpace[0] = viewx cameraSpace[1] = viewy return cameraSpace.astype(int) # 绘制世界坐标下的点 def draw_point(worldPoint): cameraLocal = world_2_cameraLocalSapce(worldPoint) cameraSpsace, depth = cameraLocal_2_cameraSpace(cameraLocal) screeSpace = camerSpace_2_screenSpace(cameraSpsace) draw_size = int(random.random() * 3 + 1) draw_on_buffer(screeSpace, depth, draw_size) # 绘制到缓存上 def draw_on_buffer(screenPos, depth, draw_size): if draw_size == 0: return elif draw_size == 1: draw_point_on_buffer(screenPos[0], screenPos[1], color_strength, depth) elif draw_size == 2: draw_point_on_buffer(screenPos[0], screenPos[1], color_strength, depth) draw_point_on_buffer(screenPos[0] + 1, screenPos[1] + 1, color_strength, depth) elif draw_size == 3: draw_point_on_buffer(screenPos[0], screenPos[1], color_strength, depth) draw_point_on_buffer(screenPos[0] + 1, screenPos[1] + 1, color_strength, depth) draw_point_on_buffer(screenPos[0] + 1, screenPos[1], color_strength, depth) elif draw_size == 4: draw_point_on_buffer(screenPos[0], screenPos[1], color_strength, depth) draw_point_on_buffer(screenPos[0] + 1, screenPos[1], color_strength, depth) draw_point_on_buffer(screenPos[0], screenPos[1] + 1, color_strength, depth) draw_point_on_buffer(screenPos[0] + 1, screenPos[1] + 1, color_strength, depth) # 根据色调和颜色强度获取颜色 def get_color(strength): result = None if strength >= 1: result = colorsys.hsv_to_rgb(hue, 2 - strength, 1) else: result = colorsys.hsv_to_rgb(hue, 1, strength) r = min(result[0] * 256, 255) g = min(result[1] * 256, 255) b = min(result[2] * 256, 255) return np.array((r, g, b), dtype=int) # 可以根据深度做一些好玩的 def draw_point_on_buffer(x, y, color, depth): if x < 0 or x >= canvas_width or y < 0 or y >= canvas_height: return # 混合 strength = float(color) / 255 strength_buffer[x, y] = strength_buffer[x, y] + strength # 绘制缓存 def draw_buffer_on_canvas(output = None): render_buffer.fill(0) for i in range(render_buffer.shape[0]): for j in range(render_buffer.shape[1]): render_buffer[i, j] = get_color(strength_buffer[i, j]) im = Image.fromarray(np.uint8(render_buffer)) im = im.rotate(-90) if output is None: plt.imshow(im) plt.show() else: im.save(output) def paint_heart(ratio, randratio, outputFile = None): global strength_buffer global render_buffer global points # 清空缓存 strength_buffer.fill(0) for i in range(fixed_point_size): # 缩放 point = points[i] * lerp_vector(min_scale, max_scale, ratio) # 球型场 dist = distance(point) radius = 0.4 sphere_scale = radius / dist point = point * lerp_float(0.9, sphere_scale, ratio * 0.3) # 绘制 draw_point(point) # 生成一组随机点 randPoints = genRandPoints(random_point_szie, random_scale_range, random_point_maxvar, randratio) for i in range(random_point_szie): # 绘制 draw_point(randPoints[i]) # 高斯模糊 for i in range(1): strength_buffer = gaussian_filter(strength_buffer, sigma=0.8) # 绘制缓存 draw_buffer_on_canvas(outputFile) def show_images(): img = None for i in range(total_frames): save_name = "{name}.{fmt}".format(name=i, fmt=image_fmt) save_path = os.path.join(output_dir, save_name) img = cv2.imread(save_path, cv2.IMREAD_ANYCOLOR) cv2.imshow("Img", img) cv2.waitKey(25) def gen_images(): global points if not os.path.isdir(output_dir): os.mkdir(output_dir) # 尝试加载或生成中间心 if not os.path.exists(points_file): print("未发现缓存点,重新生成中") points = genPoints(fixed_point_size, fixed_scale_range) np.savetxt(points_file, points) else: print("发现缓存文件,跳过生成") points = np.loadtxt(points_file) for i in range(total_frames): print("正在处理图片... ", i) frame_ratio = float(i) / (total_frames - 1) frame_ratio = frame_ratio ** 2 ratio = math.sin(frame_ratio * math.pi) * 0.743144 randratio = math.sin(frame_ratio * math.pi * 2 + total_frames / 2) save_name = "{name}.{fmt}".format(name=i, fmt=image_fmt) save_path = os.path.join(output_dir, save_name) paint_heart(ratio, randratio, save_path) print("图片已保存至", save_path) if __name__ == "__main__": gen_images() while True: show_images()">

Python在线运行

版本:
编辑于 2022-11-21 23:52 累计访问:89
点击了解高性能代码运行API
运行结果
代码简介
代码仓库
极速运行
交互输入
极速运行模式,更高效的运行,点击编辑器上方的运行按钮即刻体验吧。
以下是用户最新保存的代码
专业干废电脑 发布于:2022-11-07 22:26 我想买试试在城市,哈哈。 发布于:2022-11-07 14:32 列表的运用 发布于:2022-11-07 09:55 2.2.3.1切片 发布于:2022-11-07 09:25 跑分代码(PC手机都能用) 发布于:2022-11-11 20:34 在python中的多分支判断 发布于:2022-11-05 21:26 海龟画图冰墩墩 发布于:2022-11-05 09:13 猜你TopN计算规则 发布于:2022-11-04 10:36 简单的判断 发布于:2022-11-09 16:29 宝宝查人名 发布于:2022-11-02 15:44 5、 使用字典和集合模拟下面有向图结构,请使用相关序列结构实现:输出有向图中某个结点的入度与出度,以及该结点与其它结点的所有进、出显示。 发布于:2022-11-01 14:29 4、 设计一个字典,并编写程序,用户输入内容作为键,然后输出字典中对应的值,如果用户输入的键不存在,输出“你输入的键不存在!”,如果存在,输出“XX键所对应的值为XX!”。 发布于:2022-11-01 11:17 求3位数或4位数的自幂数。自幂数是指一个n(3或4)位数,它的每个位上的数字的 n 次幂之和等于它本身。例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数,3位数的自幂数被称为水仙花数。当n为4时,有1^4 + 6^4 + 3^4 + 4^4 = 1634,1634即是n为4时的一个自幂数,4位数的自幂数被称为玖瑰花数。‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬程序运行时,输入数字3或4,选择求解水仙花数或玖瑰花数,结果放置在列表中按照从小到大顺序输出。 发布于:2022-11-01 11:10 2、 编写程序:现有一张现金面额100元,请将其兑换成10元,5元,1元的零钱,可以是其中一种、两种或三种面值的组合 发布于:2022-11-01 09:28 1、 编写程序,已知有两个列表,L1=[1,2,3,4,5],L2=[5,6,7,8,9],计算两个列表的交集、并集和差集。 发布于:2022-11-01 09:00 #注释:输入两门学科(满分100分)的成绩score1、score2; score1 = int(input("请输入score1的值:")) score2 = int(input("请输入score2的值:")) #注释:在以下区域中编写代码,实现:如果两门 #成绩中有一门大于60分就输出“通过”,否则输出“加油”。 发布于:2022-10-31 16:26 判断性别和年龄 发布于:2022-10-31 12:47 Miller-Rabin 发布于:2022-10-28 11:42 信息课专属 发布于:2022-10-27 16:43 对数开方取整 发布于:2022-10-24 13:47 字符串倒取 发布于:2022-10-24 13:43 字符串语法结构 发布于:2022-10-24 09:14 str 函数 发布于:2022-10-24 09:30 hello kitty 发布于:2022-10-24 08:34 pca测试 发布于:2022-10-23 20:41 求最大公约数 发布于:2022-10-23 15:58 中国剩余定理 发布于:2022-10-22 20:39 收水费啦啦 发布于:2022-10-22 19:30 美团抓数据 发布于:2022-10-22 19:07 暴力马尔科夫链 发布于:2022-10-24 11:29 ads.ads_evalservice_mod_sta (服务评比汇总表) 发布于:2022-10-21 18:12 神经网络模型,keras模型 发布于:2022-10-20 17:36 py-hw-04 hw 发布于:2022-10-19 19:24 移动盘子计算 发布于:2022-10-19 09:29 农民分土地 发布于:2022-10-16 18:32 python冒泡 发布于:2022-10-15 17:41 python pandas 筛选测试 发布于:2022-10-15 16:33 三角形边长 发布于:2022-10-15 09:17 input函数 发布于:2022-10-15 09:14 三角形周长 发布于:2022-10-15 09:14 三角形的周长 发布于:2022-10-15 09:14 程序生日姓名 发布于:2022-10-15 09:51 sanjiaox zhouch 发布于:2022-10-15 09:00 jiaohud aima 发布于:2022-10-15 08:57 是对付医疗费深V 发布于:2022-10-13 15:59 撒U盾高后付费的SV科技 发布于:2022-10-13 15:55 if的还不够李饿哦提如果 发布于:2022-10-13 12:59 金士顿给分开了时候打开是就还是两人份 发布于:2022-10-13 12:58 夫狗日u规划 发布于:2022-10-12 17:58 关键词检测 发布于:2022-10-12 11:40 [更多]

2022-11-21 23:52
旺仔牛奶 (qwqawa)作者
我分享了Python代码片断,代码简介:爱心代码awa
提示:严禁拍马屁、涉政、违法等无关技术的内容
发送

title

使用此草稿 删除草稿

  • 00:23
注册登录后可减少验证码的弹出,点击前往 注册 | 登录

皮肤:

运行模式:

嵌入代码 iframe嵌入:


服务器已安装大部分常用的依赖库,但仍会存在一些未被安装的库, 可以通过本窗口立即安装所需依赖库,请确保库名正确,否则无法安装成功。


请输入依赖库的名称:

请选择语言: