FolkComputer / FolkComputer/folk

Coordinate conversion proposal

Open
#276 3 comments 2 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.