Content-Length: 293820 | pFad | http://github.com/fastplotlib/fastplotlib/pull/608

CD Cursor tool by kushalkolar · Pull Request #608 · fastplotlib/fastplotlib · GitHub
Skip to content

Cursor tool #608

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed

Cursor tool #608

wants to merge 1 commit into from

Conversation

kushalkolar
Copy link
Member

Make it possible to easily use the cursor to point at the same positions w.r.t. world space across subplots

Idea: when added to a subplot, a new world object is created and added to that subplot. All the world objects across the various subplots use the same buffer.

WIP

@kushalkolar
Copy link
Member Author

It would be useful to add crosshairs to multiple graphics in a subplot, in this case it can use the bbox of a graphic as the reference space that it lives in. This is particularly useful when adding multiple images to a subplot in a grid.

@kushalkolar
Copy link
Member Author

kushalkolar commented Sep 26, 2024

I think I have some better ideas on this after playing with using a scatter dot.

  1. Allow adding a Cursor to subplots or Graphics
  2. The cursor's current "source" position is where the pointer currently is. Either the subplot or the graphic the pointer is on.
  3. When added to graphics, the cursor's current "source" position is based on the graphic the mouse pointer is currently on. When added to a graphic the cursor's data is always in the same space as the parent graphic's data, i.e. Cursor.data maps directly to Graphic.data. The offset of an individual cursor matches the offset of the graphic is is on top of. To map from the source graphic to other graphics, just do linear transform, I think this will work:
# w_source, h_source and width and height of source graphic bbox
# w_target, h_target are width and height of target graphic bbox

A = np.array([
    [w_target / w_source, 0],
    [0, h_target / h_source],
])

u = [source_x, source_y]

target_pos = A @ u

Allowing an arbitrary non-linear transform could also be useful for some visualizations, so allow setting an arbitrary function as a transform.

If the Cursor has a permanent set parent graphic, an inverse transform could also be useful and settable!

  1. Allow a cursor to be a scatter point of any shape, one line, or two lines. If a line, then the endpoints are based on the bbox of the graphic or the subplot's extents.

  2. When calling target graphics, know what the source graphic was to prevent the source graphic from also becoming a target during that "event call cycle". Could happen if bbox of graphics overlap.

  3. When a graphic is deleted, remove it from the cursor list.

  4. Have modes, for example to allow double click to "add a marker" that sticks in that location.

  5. Let the source graphic either be dynamic (i.e. based on current mouse pointer position), or fixed so it only responds to a fixed source graphic.

@kushalkolar kushalkolar changed the title crosshair tool Cursor tool Sep 26, 2024
@kushalkolar
Copy link
Member Author

@hmaarrfk, thought you might be interested too, outline of what I'm going to implement is above

@hmaarrfk
Copy link

interesting work!

@kushalkolar
Copy link
Member Author

superseeded by #662

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://github.com/fastplotlib/fastplotlib/pull/608

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy