DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK

(gimpprint.info.gz) Perfect weaving

Info Catalog (gimpprint.info.gz) Simple weaving algorithms (gimpprint.info.gz) Weaving algorithms (gimpprint.info.gz) Weaving collisions
```
Perfect weaving
---------------

This simple weave pattern prints every row, but will give conspicuous
banding patterns for the reasons discussed above.

Let's start improving this for our simple case.  We can reduce
banding by making sure that any given jet never prints a row too close
to another row printed by the same jet.  This means we want to space the
rows printed by a given jet evenly down the page.  In turn, this
implies we want to advance the paper by as nearly an equal amount after
each pass as possible.

Each pass block prints S*J lines in S passes.  The first line
printed in each pass block is S*J rows lower on the page than the first
line printed in the previous pass block.  Therefore, if we advance the
paper by J rows between each pass, we can print the right number of
passes in each block and advance the paper perfectly evenly.

Here's what this "perfect" weave looks like:

start of full weave
|
0 *---*---*---*---*---*---*
1        *---*---*---*---*---*---*
2               *---*---*---*---*---*---*
3                      *---*---*---*---*---*---*
4                             *---*---*---*---*---*---*
5                                    *---*---*---*---*---*---*
6                                           *---*---*---*---*---*---*
7                                                  *---*---*---*---*---*---*
8                                                         *---*---*---*---*---*-
9                                                                *---*---*---*--
10                                                                      *---*---
11                                                                             *

You'll notice that, for the first few rows, this weave is too sparse.
It is not until the row marked "start of full weave" that every
subsequent row is printed.  We can calculate this start position as
follows:

start = (S-1) * (J-1)

For the moment, we will ignore this problem with the weave.  We'll
consider later how to fill in the missing rows.

Let's look at a few more examples of perfect weaves:

S=2,  J=7,  start=(2-1)*(7-1)=6:

starting row of full weave
|
0 *-*-*-*-*-*-*
1        *-*-*-*-*-*-*
2               *-*-*-*-*-*-*
3                      *-*-*-*-*-*-*
4                             *-*-*-*-*-*-*
5                                    *-*-*-*-*-*-*
6                                           *-*-*-*-*-*-*
7                                                  *-*-*-*-*-*-*

S=7,  J=2,  start=6:

start
|
0 *------*
1   *------*
2     *------*
3       *------*
4         *------*
5           *------*
6             *------*
7               *------*
8                 *------*
9                   *------*

S=4,  J=13,  start=36:

start
|
0 *---*---*---*---*---*---*---*---*---*---*---*---*
1              *---*---*---*---*---*---*---*---*---*---*---*---*
2                           *---*---*---*---*---*---*---*---*---*---*---*---*
3                                        *---*---*---*---*---*---*---*---*---*--
4                                                     *---*---*---*---*---*---*-
5                                                                  *---*---*---*

S=13,  J=4,  start=36:

start
|
0 *------------*------------*------------*
1     *------------*------------*------------*
2         *------------*------------*------------*
3             *------------*------------*------------*
4                 *------------*------------*------------*
5                     *------------*------------*------------*
6                         *------------*------------*------------*
7                             *------------*------------*------------*
8                                 *------------*------------*------------*
9                                     *------------*------------*------------*
10                                        *------------*------------*-----------
11                                            *------------*------------*-------
12                                                *------------*------------*---
13                                                    *------------*------------
14                                                        *------------*--------
15                                                            *------------*----
16                                                                *------------*
17                                                                    *---------
18                                                                        *-----
19                                                                            *-

S=8,  J=5,  start=28:

start
|
0 *-------*-------*-------*-------*
1      *-------*-------*-------*-------*
2           *-------*-------*-------*-------*
3                *-------*-------*-------*-------*
4                     *-------*-------*-------*-------*
5                          *-------*-------*-------*-------*
6                               *-------*-------*-------*-------*
7                                    *-------*-------*-------*-------*
8                                         *-------*-------*-------*-------*
9                                              *-------*-------*-------*-------*
10                                                  *-------*-------*-------*---
11                                                       *-------*-------*------
12                                                            *-------*-------*-
13                                                                 *-------*----
14                                                                      *-------
15                                                                           *--

S=9,  J=5,  start=32:

start
|
0 *--------*--------*--------*--------*
1      *--------*--------*--------*--------*
2           *--------*--------*--------*--------*
3                *--------*--------*--------*--------*
4                     *--------*--------*--------*--------*
5                          *--------*--------*--------*--------*
6                               *--------*--------*--------*--------*
7                                    *--------*--------*--------*--------*
8                                         *--------*--------*--------*--------*
9                                              *--------*--------*--------*-----
10                                                  *--------*--------*--------*
11                                                       *--------*--------*----
12                                                            *--------*--------
13                                                                 *--------*---
14                                                                      *-------
15                                                                           *--

S=6,  J=7,  start=30:

start
|
0 *-----*-----*-----*-----*-----*-----*
1        *-----*-----*-----*-----*-----*-----*
2               *-----*-----*-----*-----*-----*-----*
3                      *-----*-----*-----*-----*-----*-----*
4                             *-----*-----*-----*-----*-----*-----*
5                                    *-----*-----*-----*-----*-----*-----*
6                                           *-----*-----*-----*-----*-----*-----
7                                                  *-----*-----*-----*-----*----
8                                                         *-----*-----*-----*---
9                                                                *-----*-----*--
10                                                                      *-----*-
11                                                                             *

```
Info Catalog (gimpprint.info.gz) Simple weaving algorithms (gimpprint.info.gz) Weaving algorithms (gimpprint.info.gz) Weaving collisions
automatically generated byinfo2html