diff --git a/readme.md b/readme.md index ee522e5..c7b2e30 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,64 @@ -# 凸包算法的wasm实现 -[在线测试地址](https://kuraa.cc/upload/convex_hull.html) +# 凸包算法演示 (Convex Hull Demonstration) + +这是一个交互式的凸包算法演示网页,支持同时比较 WebAssembly 和 JavaScript 实现的性能差异。 [git](https://git.kuraa.cc/kura/convex_hull) + +## 功能特点 + +- 支持手动输入点集数据 +- 提供随机点集生成功能(30/3000/10000/30000点) +- 可视化展示: + - 蓝色点表示输入的点集 + - 红色线表示计算得出的凸包 +- 双重实现对比: + - WebAssembly 实现 + - 纯 JavaScript 实现(Graham Scan算法) +- 性能对比: + - 控制台输出两种实现的执行时间 + - 支持大规模点集的性能测试 + +## 使用方法 + +1. 点集输入方式: + - 在文本框中手动输入点集,格式:`x1,y1;x2,y2;x3,y3;...` + - 使用随机生成按钮快速生成测试数据 + +2. 点击"计算凸包"按钮执行算法 + - 自动进行 WebAssembly 和 JavaScript 两种实现的计算 + - 在画布上显示结果 + - 在控制台查看性能数据 + +## 技术实现 + +- 前端:原生 HTML + JavaScript +- 计算核心: + - WebAssembly 实现(通过 Emscripten 编译) + - JavaScript 实现(Graham Scan 算法) +- 可视化:Canvas 2D + +## 在线演示 + +[在线测试地址](https://kuraa.cc/upload/convex_hull.html) + + +## 性能对比 + +- WebAssembly 版本通常在处理大规模数据时(如30000点)表现更优,实际不是!!!!! +- JavaScript 版本在小规模数据时(如30点)性能足够 + +## 本地运行 + +由于使用了 WebAssembly,需要通过 Web 服务器运行此项目。可以使用以下方式: + +```bash +使用 Python 启动简单的 HTTP 服务器 +python -m http.server +或使用 Node.js 的 http-server +npx http-server +``` + + +## wasm 调用 ```js function callWasmConvexHull(points) { //长度