Python实现心形点云生成算法并进行优化:附完整代码示例
```python import numpy as np import random import math from PIL import Image import os def genRandPoints(pointCount, heartScales, maxVar, ratio): """ 生成随机心形点云 Args: pointCount: 需要生成的点数 heartScales: 心形尺度参数 [scale1, scale2] 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]) z_shrink = 0.01 sz = z - z_shrink sheartValue = heart_func(x, y, sz, heartScales[1]) # 保留边界点 if heartValue < 0 and sheartValue > 0: # 转换为中心坐标系 result[index] = [x - 0.5, y - 0.5, z - 0.5] # 应用随机变异 var = random.uniform(-maxVar, maxVar) result[index] = result[index] * (1 + var) # 应用缩放 result[index] = result[index] * ratio index += 1 # 进度显示 if index % 1000 == 0: progress = (index / pointCount) * 100 print(f"Generated {index} points ({progress:.1f}%)") return result[:index] # 返回实际生成的点 def save_points_to_file(points, filename): """ 保存点云数据到文件 Args: points: 点云数组 filename: 输出文件名 """ np.savetxt(filename, points, fmt='%.6f', delimiter=',') print(f"Points saved to {filename}") def load_points_from_file(filename): """ 从文件加载点云数据 Args: filename: 输入文件名 Returns: 点云数组 """ if os.path.exists(filename): points = np.loadtxt(filename, delimiter=',') print(f"Loaded {len(points)} points from {filename}") return points return None # 使用示例 if __name__ == "__main__": # 生成随机心形点云 heart_scales = [3.5, 3.9] random_points = genRandPoints( pointCount=10000, heartScales=heart_scales, maxVar=0.2, ratio=0.8 ) # 保存点云 save_points_to_file(random_points, "random_heart_points.txt") # 加载点云 loaded_points = load_points_from_file("random_heart_points.txt") ``` [2026-02-12 13:06:00 | AI写代码神器 | 745点数解答]
- [阿里通义] 代码填空挑战:完成正态分布、随机数生成及数据处理代码(506点数解答 | 2025-03-23 14:32:14)299
- [字节豆包] 挑战!完成代码填空解锁数据处理奥秘(116点数解答 | 2025-03-26 22:22:15)319
- [DeepSeek] 挑战填空!完成这段 NumPy 代码实现数据生成与保存(178点数解答 | 2025-03-26 22:26:30)378
- [字节豆包] Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(161点数解答 | 2024-10-31 00:39:36)431
- [阿里通义] Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(261点数解答 | 2024-11-28 21:19:39)316
- [GPT] 探寻数组中最长摆动子序列长度:思路剖析与代码优化(758点数解答 | 2024-12-23 23:18:29)247
- [GPT] 独家剖析:求解数组最长摆动子序列长度的代码实现与改进建议(350点数解答 | 2024-12-23 23:20:54)244
- [GPT] Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(422点数解答 | 2024-10-29 15:43:54)389
- [字节豆包] Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(254点数解答 | 2024-10-29 16:01:39)380
- [字节豆包] C++ 实现我的世界基岩版:从简单框架到开发要点揭秘(182点数解答 | 2025-02-22 15:53:11)184
- [字节豆包] C++ 实现完整斗地主:含洗牌、发牌与手牌展示,可按需扩展!(1028点数解答 | 2026-01-10 08:02:37)18
- [字节豆包] Three.js 示例代码解析:优化场景渲染与注意要点(164点数解答 | 2025-02-27 23:30:20)241