kurbo
Graphite
kurbo | Graphite | |
---|---|---|
5 | 46 | |
662 | 7,205 | |
2.3% | 5.2% | |
7.6 | 9.6 | |
1 day ago | 4 days ago | |
Rust | Rust | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
kurbo
-
Voronoi Diagram and Delaunay Triangulation in O(nlog(n)) (2020)
The numerical robustness thing gave me a chuckle (rotate 1 radian and pray to the geometry gods), especially as I've been spending a good fraction of my time dealing with that in fancy path rendering and stroking.
One of the things I really want to work on in the next few months is a path intersection implementation that's robust by construction, backed up both by a convincing (if not formal) argument and tests crafted to shake out robustness issues. I have a bunch of ideas, largely motivated by the need to generalize well to curves - Shewchuk's work, cited elsethread, is impressive but I'm not smart enough to figure out how to make it work for arbitrary Béziers.
There's an issue[277] to track the work, and that has pointers to some of the ideas. If anyone is interested in working with me on this, please get in touch. If successful, I think it'll result in a nice code base and also likely a publishable paper.
[277]: https://github.com/linebender/kurbo/issues/277
-
Announcing Bezier-rs: computational geometry algorithms for Bézier paths (seeking code review and boolean ops help)
I have some ideas on how to do boolean ops, some of which is written up in a blog post issue, and for which I have some code locally. In particular, the parabola estimate seems much more efficient than the usual fat line approach. I also have a sketch of quadratic/quadratic intersection in kurbo#230.
-
Bit Twiddling Hacks (2005)
I love these kinds of things and use them in GPU programming, among other things. Things have changed in a variety of ways: population count and count-trailing-zeros are generally available as fast instructions now. Multiply is also now just as fast as other operations, so is not to be avoided.
A couple examples. [1] computes the sum of the number of bytes used of four consecutive segments of a bezier path - each segment can be lineto, quadto, or curveto, can be the end of a path or not, and be i16 or f32. 4 tag bytes are packed into a 32 bit word, it computes all these, then sums them together.
[2] linearizes a recursive subdivision into an iterative loop. The stack depth is represented as the number of zeros in a word, so pushing the stack is a left shift, and popping is a right shift. It turns out you want to pop multiple levels at once, and the number of levels is computed by countTrailingZeros. ([2] is experimental Rust code, but I will adapt this into a compute shader)
[1]: https://github.com/linebender/piet-gpu/blob/main/piet-wgsl/s...
[2]: https://github.com/linebender/kurbo/blob/euler/src/euler.rs#...
-
A Review of the Odin Programming Language
That's a reasonable choice and I do agree it has nice properties, for example (a << b) << c is equal to a << (b + c) (unless that latter addition overflows), but it also does put you pretty firmly in the category of "not squeezing out every last cycle like you can in C." Usually that's one of the the things people expect in a tradeoff involving safety.
Regarding "never," I am an adventurous programmer[1], so am fully willing to accept that I am the exception that proves the rule.
On the more general point of UB for arithmetic overflow, I think we're on the same side: this is a pretty broken story in the way C has ended up, and one of the clear motivations for a cleaned up better-than-C language. I'm more interested in your thoughts on data races, where I suspect we have a substantive difference in perspective.
[1]: https://github.com/linebender/kurbo/blob/de52170e084cf658a2a...
- Kurbo: A Rust library for manipulating curves
Graphite
- 3D and 2D: Testing out my cross-platform graphics engine
-
Canva acquires Affinity, its biggest acquisition, to compete with Adobe
There is also Graphite (https://graphite.rs/) which, unlike Gimp, has a modern architecture and very ambitious goals (Blender for 2D basically).
-
Any good beginner open source projects for a guy with a math background?
If you're interested in either computational geometry, layout/packing/constraints, or functional programming language concepts, those are all the math-related concepts that we're currently interacting with for Graphite, a 2D vector graphics editor that's aiming to become the next Blender (but for 2D instead of 3D). If that sounds interesting, I'd love to help get you started if you want to join our Discord and I can explain the math-related work that we need to get done. Cheers!
- Graphite: 2D Raster and Vector Editor
-
Things I wish I knew before moving 50K lines of code to React Server Components
Not sure which web-based spreadsheet app you're talking about, because there are many that do use these frameworks. Here's a PS/AI clone built with a Svelte frontend: https://graphite.rs
- Redefining state-of-the-art graphics editing
- Graphite: Open-source raster and vector 2D graphics editor
- Graphite: In-development raster and vector 2D graphics editor that is FOSS
-
What’s everyone working on this week (25/2023)?
Wanted to contribute to a good Rust-based project last week, started searching and found a good Reddit thread featuring several great projects. Looked at and found Graphite. I liked the concept though I know almost nothing about graphic design.
-
New release for the Rust diffusers crate (Stable Diffusion in Rust + Torch), now with basic ControlNet support!
I'm currently trying to decide on the SD server to deploy with Graphite, both for running locally (with Tauri desktop builds) and for us to host on a server for users.
What are some alternatives?
geogram - a programming library with geometric algorithms
egui - egui: an easy-to-use immediate mode GUI in Rust that runs on both web and native
Method-Draw - Method Draw, the SVG Editor for Method of Action
GimelStudio - Non-destructive, node based 2D image editor with an API for custom nodes
Gimel-Studio - Old repo of the node-based image editor. See https://github.com/GimelStudio/GimelStudio for the next generation of Gimel Studio :rocket:
bevy - A refreshingly simple data-driven game engine built in Rust
burn - Burn is a new comprehensive dynamic Deep Learning Framework built using Rust with extreme flexibility, compute efficiency and portability as its primary goals. [Moved to: https://github.com/Tracel-AI/burn]
Rete.js - Rete.js is a framework for creating visual interfaces and workflows. It provides out-of-the-box solutions for visualization using various libraries and frameworks, as well as solutions for processing graphs based on dataflow and control flow approaches.
miso - :ramen: A tasty Haskell front-end framework
stegano-rs - A cross-platform command line tool for steganography focused on performance and simplicity written in rust-lang.
stablediffusion - High-Resolution Image Synthesis with Latent Diffusion Models
PhotoDemon - A free portable photo editor focused on pro-grade features, high performance, and maximum usability.