FolkComputer / FolkComputer/folk
Coordinate conversion proposal
- Dominant language
- C
- Stars
- 298
- Forks
- 28
- PR merge metrics
- No merged PRs in 30d
Description
I've been thinking about how to draw on one program relative to another, and I think I've landed on an ergonomic design. First off, we have to introduce the concepts of "surfaces". A surface is a quad (probably in projector space) with an associated texture. Right now each program would effectively be a surface, but the table would also need to be a surface (it has the texture, but not the associated quad). The other concept is a "point". We already sort of have points, but they are dimensionless and spaceless. I think 2D points should be associated with their surface. It would look something like `{point 10.0 20.0 123}`, where 123 is the program/$this/surface. You'd create a point with `[point 10.0 20.0]`, which [upvar]s `id` to grab the surface to put at the end of the point. Then you could call a function like `project $point 145`, where 145 is the surface being projected onto. This would 1. Convert the point to 3D projector space, 2. Project that 3D point onto the target, and 3. Convert that projected point back to its 2D position on the target surface. Note that this in-between conversion step can fail if the points are in different projector spaces, and there's no conversion (like with two different systems that aren't calibrated relative to each other, for example).
Contributor guide
No contributing guide indexed for this repository
Research direction
The issue names no files or tests. Start by reviewing the existing point and projector-space handling, then trace how programs and the table are represented. Done would require an agreed surface and point model with projection behavior, including the failure case for uncalibrated projector spaces.
Written by the indexing model from the issue text.
Assessment
- Domain
- computer-graphics
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100