曼德勃罗集web可视化应用

曼德勃罗集web可视化应用

曼德勃罗集可视化应用

一个基于 Next.js 构建的沉浸式曼德勃罗集(Mandelbrot Set)探索工具,提供丰富的交互功能和精美的视觉效果。

在这里插入图片描述

源代码:https://gitee.com/yanjianzhong007/mandelbrotset
在线演示:https://z2p9jz49tp.coze.site/

git clone https://gitee.com/yanjianzhong007/mandelbrotset.git 

功能特性

核心功能

  • 全屏显示:沉浸式全屏浏览体验
  • 高性能渲染:基于 Canvas 的像素级渲染,支持流畅的实时交互
  • 拉框选择
    • Shift + 拖拽:放大选定区域
    • Ctrl + 拖拽:缩小选定区域
  • 一键全图:快速返回完整视图
  • 缩放滑块:快速定位缩放级别(2x - 1000x)

预设位置(上帝的指纹)

内置 10 个经典的分形区域:

  1. 完整视图
  2. 象鼻 (Elephant Valley)
  3. 海马谷 (Seahorse Valley)
  4. 双螺旋 (Double Spiral)
  5. 轻盈之羽 (Light Feather)
  6. 螺旋星系 (Spiral Galaxy)
  7. 迷你曼德勃罗 (Mini Mandelbrot)
  8. 海马群岛 (Seahorse Islands)
  9. 闪电峡谷 (Lightning Canyon)
  10. 螺旋花 (Spiral Flower)

颜色主题

7 种精心设计的颜色方案:

  • 彩虹
  • 火焰
  • 海洋
  • 灰度
  • 霓虹
  • 日落
  • 森林

交互工具

  • 撤销功能:支持多步撤销,快捷键 Ctrl+Z
  • 书签管理:保存、分类、命名并快速跳转到感兴趣的视图
  • 移动端支持:单指拖拽平移,双指缩放

界面特性

  • 悬浮控制面板:可折叠,支持深色/浅色主题切换
  • 渲染进度指示器:实时显示渲染状态
  • 水印显示:多行填充水印,跟随图案移动,字体小巧淡雅

技术栈

  • 框架: Next.js 16.0.10 (App Router)
  • 语言: TypeScript 5
  • UI: React 19 + Tailwind CSS 4
  • 渲染: HTML5 Canvas
  • 组件库: shadcn/ui

快速开始

环境要求

  • Node.js 18+
  • npm

操作指南

基本操作

  • 拖拽:按住鼠标左键拖动视图
  • 放大:按住 Shift 键并拖拽选择区域
  • 缩小:按住 Ctrl 键并拖拽选择区域
  • 缩放滑块:在控制面板中拖动滑块快速缩放
  • 撤销:按 Ctrl+Z 或点击撤销按钮

预设位置

在控制面板的"上帝的指纹"下拉菜单中选择预设位置,快速跳转到经典分形区域。

颜色主题

在控制面板的"颜色主题"下拉菜单中选择不同的配色方案,探索不同的视觉风格。

书签管理

  1. 点击控制面板中的书签图标(黄色书签按钮)
  2. 点击"添加书签"保存当前视图
  3. 为书签命名并选择分类
  4. 点击书签条目快速跳转

移动端操作

  • 单指拖拽:平移视图
  • 双指捏合:缩放视图

主题切换

点击控制面板右上角的太阳/月亮图标切换深色/浅色主题。

项目结构

mandelbrot-set/ ├── src/ │ ├── app/ │ │ └── page.tsx # 主页面组件 │ ├── components/ │ │ ├── ControlPanel.tsx # 控制面板 │ │ ├── MandelbrotCanvas.tsx # Canvas 渲染组件 │ │ ├── BookmarksPanel.tsx # 书签管理面板 │ │ ├── ProgressBar.tsx # 进度指示器 │ │ └── ui/ # shadcn/ui 组件 │ └── lib/ │ └── mandelbrot.ts # 核心算法和工具函数 ├── public/ # 静态资源 └── package.json 

核心算法

本项目使用经典的曼德勃罗集迭代算法:

z_{n+1} = z_n^2 + c 

其中 c 是复平面上的点,z 从 0 开始迭代。如果 |z| 始终保持在 2 以内,则点 c 属于曼德勃罗集。

性能优化

  • 使用 Canvas 直接操作像素,避免 DOM 操作
  • 画质模式切换:预览模式降低分辨率提升性能
  • 分块渲染:大画布分块处理,避免界面卡顿
  • Web Worker 支持:后台计算,保持界面响应

浏览器支持

  • Chrome/Edge 90+
  • Firefox 88+
  • Safari 14+
  • 支持桌面和移动端

开发说明

代码规范

  • 使用 TypeScript 进行类型检查
  • 遵循 ESLint 规则
  • 使用 Prettier 格式化代码

构建检查

pnpm build 

许可证

MIT

致谢

本应用受到曼德勃罗集的数学美学的启发,旨在为用户提供探索分形世界的沉浸式体验。

Read more

Flutter for OpenHarmony: Flutter 三方库 sanitize_html 彻底杜绝 XSS 注入风险(鸿蒙 Web 内容安全净化)

Flutter for OpenHarmony: Flutter 三方库 sanitize_html 彻底杜绝 XSS 注入风险(鸿蒙 Web 内容安全净化)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在开发 OpenHarmony 应用时,如果我们需要在 UI 中渲染来自后端的 HTML 内容(例如文章正文、用户评论),或者使用 flutter_html 等库,一个致命的安全风险就是 XSS (跨站脚本攻击)。恶意代码可能会通过 <script> 标签或 onerror 属性在你的 App 内执行非法逻辑。 sanitize_html 是一个轻量级且极高效的 HTML 净化库。它采用白名单机制,能瞬间过滤掉所有不安全的标签和属性,确保你在鸿蒙 App 内渲染的每一行 Web 内容都是绝对安全的。 一、核心防御机制解析 sanitize_html 遵循“默认拒绝”

Lada本地一键启动包:AI视频马赛克去除神器

Lada本地一键启动包:AI视频马赛克去除神器   咱就直说吧,网上那些特殊视频,最让人抓狂的就是关键地方总是打着马赛克。想看又看不清,那种感觉真的太折磨人了。我之前一直在找能去马赛克的工具,试了好多都不太行,直到我发现了这个神器——Lada。   这玩意儿到底能干啥? 简单来说呢,Lada就是一个基于AI的视频马赛克去除工具,专门用来恢复视频里那些被打了马赛克或者像素化的部分。不管是日本那种打码的,还是其他被处理过的视频,它都能帮你处理。 而且最关键的是,它是开源的,完全在你自己电脑上本地运行,没有任何限制。你懂的,这种私密视频肯定不能上传到什么在线平台处理,隐私问题太重要了。   我之前也试过一些在线工具,但这种视频谁敢随便上传啊?万一被保存下来或者泄露了,想想就后怕。用Lada就完全不同了,所有处理都在本地完成,你的小秘密只有你自己知道。处理完之后还能自动把音频合成回去,效果丝滑得很! 怎么用?超级简单 我实测了一下,真的是一键启动的那种简单。你看这个界面:   下载解压之后,双击启动命令就能跑起来了,完全不用折腾什么配置环境。导入你想处理

放弃无效编码!AI+SDD 重构复杂业务研发范式,新手也能落地

放弃无效编码!AI+SDD 重构复杂业务研发范式,新手也能落地

在当前复杂业务系统研发中,我们常陷入诸多困境:需求反复变更导致开发返工,AI辅助编程易出现幻觉生成无效代码,多人协作时重复开发浪费精力,上线后频繁出现回归bug,文档与代码脱节成为“无效资产”。这些问题的核心,是缺乏一套统一可落地的研发范式,让需求、设计、开发、测试全流程形成闭环,而规格驱动开发(SDD,Spec-Driven Development),正是解决这一痛点的关键。 很多开发者对SDD的认知停留在“先写文档再写代码”的表面,甚至觉得它是“额外负担”,尤其在工期紧张的复杂项目中,更倾向于跳过规格设计直接编码。但事实上,SDD并非传统意义上的“文档绑架”,而是结合AI时代研发特点,形成的一套高效可落地的工程化方法。 本文结合OpenSpec这一主流SDD工具,从实操层面拆解SDD在复杂业务系统中的落地全流程,解答工具使用、流程设计、痛点解决等关键问题,帮助每一位开发者真正用好SDD,提升复杂系统研发效率与质量。 核心概念明确 SDD中的Spec(Specification,规格),本质是对业务需求、技术设计、实现细节的标准化描述,是整个研发流程的“唯一真理来源”。与传统