fwcd / mini-cad Goto Github PK
View Code? Open in Web Editor NEWParametric 3D modeller with a Swift-inspired DSL for macOS and iOS (WWDC 2023 submission)
License: GNU General Public License v3.0
Parametric 3D modeller with a Swift-inspired DSL for macOS and iOS (WWDC 2023 submission)
License: GNU General Public License v3.0
We probably want to interpret the program asynchronously and add a debouncer to wait until the user has finished typing.
It would be cool to have code completion in the editor.
It would be convenient to have automatic indentation in the editor.
Currently, our built-ins are defined in a rather weakly typed way. It would be cool if we could somehow abstract over this (e.g. structures with Codable
arguments and use a custom decoder to deserialize [Value]
or similar).
We could e.g. automatically run the test suite in CI.
Our current 'save' always saves as a new file. It would be nice to differentiate between 'save' and 'save as' by memorizing the file path to the opened file.
Before submitting the project, all debug views and outputs should be removed.
Similar to Swift, we could use the var
keyword.
Currently, their apparent thickness depends on how closely the camera is zoomed in.
We could either do this ourselves or use a library such as https://github.com/nicklockwood/Euclid.
We should fix the camera control to zoom the view towards/away from the orbited point. See also this todo comment:
Instead of generating Cuboid
s, we should generate actual meshes and then use CSG algorithms to e.g. compute unions, intersections etc.
Similar to last year.
It would be cool if the user could interactively explore the AST/the tokenization in a more visual way.
We should have the ability to export triangulated meshes in the STL format.
Now that we have the line it would be cool if we could display parse errors inline, similar e.g. to Xcode.
Wrap nodes in @Ranged
(or Ranged<...>
in lists).
Should be self-explanatory.
We should have the ability to parse and interpret infix mathematical expressions.
Something we could address after #16.
Similar to our Translate
operator.
This would probably entail
@Box
property wrapper for lhs
and rhs
BinaryOperator
into the Pretty
hierarchy
CustomStringConvertible
conformance? This would require updating the tokenizer accordingly.Recipes should use the .swift
extension (or a custom one, like .recipe
if we want to deviate from Swift syntax).
This could get pretty tricky after we have #3 and #5, since we'd need to track the 'origin' of each triangle throughout the CSG transformations (#22 would probably come in handy too).
But it would still be very cool if the user could e.g. drag/scale/rotate the objects in real-time in the preview as the code updates automatically (and perhaps snap it to the grid (optionally?)).
Note that this might also require inverting the entire tranformation stack. E.g. if the cube dragged by the user is inside a
Translate(...) {
Rotate(...) {
...
}
}
we'd have to compute how the original position/scales would have to be modified.
These should be tokenized with higher precedence than the operators.
Just to make it slightly more convenient to construct syntax trees programmatically, similar to e.g. SwiftSyntaxBuilder
.
Should be self-explanatory.
Another thing for the wishlist. Ternaries might be tricky to parse, we'll have to see how well that plays with our precedence climbing parser.
We should provide some instructional tips in the UI, e.g.
This should be pretty easy to do.
It would be cool to have support for Swift-style argument labels.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.