My original aim with the brush was giving artists a tool to make boring(tm), very regular hatching directly with a tool instead of having to use time-consuming filters. With time I&#39;ve been thinking of also allowing the user to do a more &quot;organic&quot; hatching too (<a href="http://bmia.bmt.tue.nl/Research/MVIAV/IVR/ivrsb/index.php?Page=Hatching">http://bmia.bmt.tue.nl/Research/MVIAV/IVR/ivrsb/index.php?Page=Hatching</a> ; check the middle skull), but that would take long, I&#39;d surely have to sacrifice not finishing a halftone brush to work on that. I think it&#39;s worth the attempt though.<br>
<br>Now, with respect to &quot;boring, very regular&quot; hatching, the current algorithm (described in the GUI as trigonometry-algebra) has the problem that lines thicken in incremental mode (opaque background off) and look jagged in wash (opaque background on). Part of the jagging comes from the fact that the tips in the borders of the lines look different than the inner parts, so cutting those borders would help; that would have the extra benefit of reducing thickening in incremental mode. But even so, the lines get inherently out of sync when drawn little-chunk by little-chunk instead of all at a time; I am sure that it is due to the rasterization step, because I did the algebra carefully, and floating-point calculations aren&#39;t THAT imprecise to cause such errors to arise (or are they?).<br>
<br>The solution was to make that new algorithm, which would work as follows (the tooltip should explain this to the user): when the brush begins to paint, create an invisible canvas the size of the current selection, and hatch it; the brush will then &quot;uncover&quot; that invisible area as it paints, just like a scratch off card.<br>
<br>Now, if the user is using a pressure sensitive device (tablet), many invisible canvases (or &quot;layers&quot;) will be created, one for each different setting caused by the differing pressure (for example, each invisible canvas would use a different thickness). Then, when the user paints, the respective &#39;layer&#39; with the right settings will be &quot;uncovered&quot; and painted to the actual (visible) canvas.<br>
I expect this to have the following disadvantages: slow during initialization, as it must hatch many big invisible surfaces.<br>Advantages: quick after initialization, no jagging of the borders in wash mode, less thickening of the lines in incremental mode (they would only darken, not get out-of-synch adding extra pixels of thickness).<br>
<br>I believe the &quot;no jagging and less thickening&quot; benefit is remarkable, it would make the hatching generated look almost as clean if it were made by a filter, but it would be generated in real time and directly on the canvas by the user, instead of requiring the user to mount an elaborate set of layers and apply filters on it to get his final result (besides, the GIMP&#39;s Newsprint filter isn&#39;t too versatile with the hatching, so it would take the user many iterations and therefore a great deal of time to achieve areas with different thickness or with crosshatching, using that filter).<br>
<br><br><br>Endnote: with respect to Incremental and Wash: the dialogue the UI offers for choosing between incremental and wash mode has different effects than what I envisioned as the &quot;opaque background&quot; option, that&#39;s why I want both to coexist. When I link the BrushTip dialogue I&#39;ll make a proof of concept.<br>
<br>