3个版本 (重大更改)
0.3.0 | 2020年2月28日 |
---|---|
0.2.0 | 2020年1月16日 |
0.1.0 | 2020年1月8日 |
#960 in 数学
每月27次下载
115KB
2.5K SLoC
Rust CAD系统
一个用于创建2D CAD应用程序的可扩展框架,使用Rust编写并基于实体-组件-系统架构。
如果您想了解这个项目的实现方式和设计方式,可以查看思维实验:在游戏引擎之外使用ECS模式。
项目目标和里程碑
我已经将这个项目的方向划分为几个里程碑,每个里程碑都包含一系列相关的功能或概念。
-
里程碑:MVP
- 几何原语(
Arc
、Point
、Line
等) - 基本的样式组件(例如,带有颜色和笔触宽度的
LineStyle
) - 所有绘图对象都附加到一个
Layer
- 绘图对象有一个
BoundingBox
,每次有变化时都会重新计算 - 在画布上渲染绘图对象
- 示例展示了上述所有内容,并渲染了一个简单的绘图(
render_to_image.rs
)
- 几何原语(
-
里程碑:在线演示
- 正确渲染到HTML5
<canvas>
- 用于创建绘图对象的交互式工具
- 点
- 线
- 弧
- 在不同层之间移动项目
- 选择性地显示/隐藏层
-
Viewport
平移 - 缩放
Viewport
- 正确渲染到HTML5
-
里程碑:适用于现实世界应用(请参阅Michael-F-Bryan/rustmatic#38)
- 强大的撤销/重做机制
-
愿望清单
- Z级,以便对象可以相互覆盖
- 实体可以被赋予名称以赋予它们语义意义
- 近似算法
- 翻译算法
- 统一缩放算法
- 不保持宽高比的缩放算法
- 计算几何原型的长度
- B样条
- 插值样条
- 贝塞尔曲线
- 椭圆形截面
- 所有几何原型的最近点算法
构建WebAssembly演示
如果您想在本地上运行WebAssembly演示,您首先需要一个代码副本。
$ git clone https://github.com/Michael-F-Bryan/arcs
您还需要wasm-pack
程序。我们将使用它来构建演示。
$ cargo install --force wasm-pack
Updating crates.io index
Installing wasm-pack v0.8.1
Downloaded cc v1.0.50
...
Compiling wasm-pack v0.8.1
Finished release [optimized] target(s) in 2m 20s
Installed /home/michael/.cargo/bin/wasm-pack
现在我们可以构建演示了。
$ cd arcs/demo
$ wasm-pack build --target web
[INFO]: Checking for the Wasm target...
[INFO]: Compiling to Wasm...
Compiling arcs-demo v0.1.0 (/home/michael/Documents/arcs/demo)
Finished release [optimized] target(s) in 8.19s
:-) [WARN]: origin crate has no README
[INFO]: Installing wasm-bindgen...
[INFO]: :-) Done in 8.37s
[INFO]: :-) Your wasm pkg is ready to publish at ./pkg.
$ ls pkg
arcs_demo.d.ts arcs_demo.js arcs_demo_bg.d.ts arcs_demo_bg.wasm
package.json README.md
现在演示已编译,可以从磁盘提供。
$ python3 -m http.server
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
127.0.0.1 - - [10/Jan/2020 18:31:35] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [10/Jan/2020 18:31:35] "GET /pkg/arcs_demo.js HTTP/1.1" 200 -
127.0.0.1 - - [10/Jan/2020 18:31:35] "GET /pkg/arcs_demo_bg.wasm HTTP/1.1" 200 -
许可
本项目受以下任一许可协议的许可:
- Apache License, Version 2.0, (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE2.0)
- MIT许可 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
供您选择。
建议始终使用cargo-crev来验证每个依赖项的可信度,包括此依赖项。
贡献
开始贡献的最简单方法是检查问题跟踪器,寻找容易解决的问题。或者,愿望清单包含我们希望实现的特性列表,尽管这些可能需要更多努力或经验。
我们总是愿意帮助指导贡献者!
该库的目的是不包含安全性错误。开发者将尽力避免它们,并欢迎帮助分析和修复它们。
除非您明确说明,否则根据Apache-2.0许可协议定义的,您提交的任何贡献,都应如上所述双重许可,不附加任何额外条款或条件。
依赖项
~6.5MB
~125K SLoC