pressure sensitive lines (drawing with iPad pencil)
In order to make this work, we start by capturing points from a mark.
We also capture a delta (the change between this point and the previous point), from which we can get a direction for each point. Here I'm drawing lines at each point with that point's direction rotated 90deg.
You can think of those lines as being between two points, which we make by moving the actual point by some "distance" in the cross direction of the line.
To make these responsive to pressure, we just need to make that "distance" be based on the pointer event's pressure. More pressure = more distance = thicker part of the line. (We could also use velocity rather than pressure!)
Finally, we need to connect the dots. We do this in order—connecting all the positive / blue dots until we get to the end, then connecting all the negative / yellow dots on our way back.
And that's our pressure sensitive stroke!
Plenty of potential improvements, such as using a cardinal spline to smooth out the line edges, or adding a rounded cap, but that's the general idea. Pretty cool, right?

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Steve Ruiz

Steve Ruiz Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @steveruizok

14 Dec 20
Aspect ratio resizing was breaking my head. I just couldn't figure out when to respect the user's height (and scale the width) vs. when to respect the user's width (and scale the height).
Long story short, remember the selection's initial aspect ratio (width / height, shown in green) and compare it against the current aspect ratio (pink). If the current ratio is greater than the initial ratio, we're tall so scale the height; otherwise, scale the width.
Flips also took a minute to work though. Depending on which dimension is being scaled, we need to offset a opposite point by the scaled width or height. Really visual problem—my comments have drawings in them.
Read 5 tweets
12 Dec 20
Small fix: zooming in on arrows in @excalidraw no longer leads to clipped arrows.
(This is how it used to look.)
Since I have the GIFs, here's a quick explanation. When it comes time to draw an element, it is first drawn onto an off-screen canvas. This canvas is then composed onto the main canvas.
Read 6 tweets
29 Nov 20
How to cheat at complex hit-testing. 🧵
Hit testing against our axis-aligned rectangles is easy. Is the point left of the left edge? Right of the right edge, above the top, or below the bottom? If you answered yes to any of these questions then it's a miss; otherwise, it's a hit.
Our lines are more difficult. We want to score hits within a certain distance of the line so we need to turn the line into a box. If the line is straight then we test against a polygon (a potentially rotated rectangle). Trickier but not bad. Curved lines? Those are hard.
Read 10 tweets
28 Nov 20
Experiment with adjustable arrows. The whole point of my arrows library was to avoid this kind of thing—and let the algorithm "guess" the best arc for an arrow, based on its distance—but this is useful too. 🏹🧵
For comparison, here's the same arrangements (almost) with the guessing algorithm in action.
The library has always supported two options: "bow" defines the minimum arc and "stretch" adds more arc to short arrows. The first GIF is essentially a UI to set the bow of arrows with no stretch. The second GIF is a set of arrows that all have the same non-zero bow and stretch.
Read 8 tweets
3 Nov 20
pro level docs for @createwithplay featuring theme-aware embedded videos 👀
This is of course a png / mp4 hamburger, with device frames laid over the video. We can record videos from our device and slap them into a Screenshot component.
I like how responsive it is, even to device height. (There's some liberal use of CSS functions.)
Read 5 tweets
1 Nov 20
Added a layers list and more design functions (align, stretch, distribute). The layers list is using a virtual list (react window via @brian_d_vaughn) so it can keep up with the high number of nodes, too.
Another little feature I would love to see in more design tools: stretch to fill bounding box. The need doesn't come up too often, but it's tedious to set when it does.
(Link here: next-playground-blush.vercel.app/pixi/1000,
. Change that 1000 to however many boxes you want to try)
Read 4 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!