100% found this document useful (1 vote)
21 views

Computer graphics programming in OpenGL with C 2nd Edition V Scott Gordon instant download

The document provides information about the book 'Computer Graphics Programming in OpenGL with C++', Second Edition, authored by V. Scott Gordon and John Clevenger. It includes details on the book's content, licensing, and publisher information, as well as a comprehensive table of contents outlining various chapters covering topics like the OpenGL graphics pipeline, mathematical foundations, and lighting. Additionally, it mentions the availability of companion files and the publisher's contact information.

Uploaded by

ernesayeg
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
21 views

Computer graphics programming in OpenGL with C 2nd Edition V Scott Gordon instant download

The document provides information about the book 'Computer Graphics Programming in OpenGL with C++', Second Edition, authored by V. Scott Gordon and John Clevenger. It includes details on the book's content, licensing, and publisher information, as well as a comprehensive table of contents outlining various chapters covering topics like the OpenGL graphics pipeline, mathematical foundations, and lighting. Additionally, it mentions the availability of companion files and the publisher's contact information.

Uploaded by

ernesayeg
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 54

Computer graphics programming in OpenGL with C

2nd Edition V Scott Gordon pdf download

https://ebookmeta.com/product/computer-graphics-programming-in-
opengl-with-c-2nd-edition-v-scott-gordon/

Download more ebook from https://ebookmeta.com


We believe these products will be a great fit for you. Click
the link to download now, or visit ebookmeta.com
to discover even more!

Computer Graphics Programming in OpenGL with Java 3rd


Edition V. Scott Gordon

https://ebookmeta.com/product/computer-graphics-programming-in-
opengl-with-java-3rd-edition-v-scott-gordon/

OpenGL Foundations Taking Your First Steps in Graphics


Programming Kameron Hussain

https://ebookmeta.com/product/opengl-foundations-taking-your-
first-steps-in-graphics-programming-kameron-hussain/

Introduction to Computer Graphics: Using OpenGL and


Java, 3rd Edition Karsten Lehn

https://ebookmeta.com/product/introduction-to-computer-graphics-
using-opengl-and-java-3rd-edition-karsten-lehn/

The Code Breaker: Jennifer Doudna, Gene Editing, and


the Future of the Human Race 1st Edition Walter
Isaacson

https://ebookmeta.com/product/the-code-breaker-jennifer-doudna-
gene-editing-and-the-future-of-the-human-race-1st-edition-walter-
isaacson/
Metaheuristics for Finding Multiple Solutions 1st
Edition Mike Preuss Michael G Epitropakis Xiaodong Li
Jonathan E Fieldsend

https://ebookmeta.com/product/metaheuristics-for-finding-
multiple-solutions-1st-edition-mike-preuss-michael-g-epitropakis-
xiaodong-li-jonathan-e-fieldsend/

Power Transition in the Anarchical Society: Rising


Powers, Institutional Change and the New World Order
Tonny Brems Knudsen

https://ebookmeta.com/product/power-transition-in-the-anarchical-
society-rising-powers-institutional-change-and-the-new-world-
order-tonny-brems-knudsen/

Pro JSF and HTML5 2nd Edition Hazem Saleh Allan Lykke
Christensen Zubin Wadia

https://ebookmeta.com/product/pro-jsf-and-html5-2nd-edition-
hazem-saleh-allan-lykke-christensen-zubin-wadia/

Marxist Politics 1st Edition Md Ayub Mallick

https://ebookmeta.com/product/marxist-politics-1st-edition-md-
ayub-mallick/

Nistisima The secret to delicious vegan cooking from


the Mediterranean and beyond 1st Edition Georgina
Hayden

https://ebookmeta.com/product/nistisima-the-secret-to-delicious-
vegan-cooking-from-the-mediterranean-and-beyond-1st-edition-
georgina-hayden/
The Bloomsbury Handbook to Sylvia Plath 1st Edition
Anita Helle

https://ebookmeta.com/product/the-bloomsbury-handbook-to-sylvia-
plath-1st-edition-anita-helle/
Computer Graphics
Programming in OpenGL
with C++
Second Edition

CGP_C++_CH00-FM_2E_2pp.indd 1 11/13/2020 4:25:31 PM


LICENSE, DISCLAIMER OF LIABILITY, AND LIMITED WARRANTY

By purchasing or using this book and its companion files (the “Work”), you
agree that this license grants permission to use the contents contained herein,
including the companion files, but does not give you the right of ownership to any
of the textual content in the book / files or ownership to any of the information
or products contained in it. This license does not permit uploading of the Work
onto the Internet or on a network (of any kind) without the written consent of the
Publisher. Duplication or dissemination of any text, code, simulations, images,
etc. contained herein is limited to and subject to licensing terms for the respective
products, and permission must be obtained from the Publisher or the owner of the
content, etc., in order to reproduce or network any portion of the textual material
(in any media) that is contained in the Work.

Mercury Learning and Information (“MLI” or “the Publisher”) and anyone


involved in the creation, writing, or production of the companion files,
accompanying algorithms, code, or computer programs (“the software”), and any
accompanying Web site or software of the Work, cannot and do not warrant the
performance or results that might be obtained by using the contents of the Work.
The author, developers, and the Publisher have used their best efforts to insure
the accuracy and functionality of the textual material and/or programs contained
in this package; we, however, make no warranty of any kind, express or implied,
regarding the performance of these contents or programs. The Work is sold “as is”
without warranty (except for defective materials used in manufacturing the book
or due to faulty workmanship).

The sole remedy in the event of a claim of any kind is expressly limited to
replacement of the book and/or companion files, and only at the discretion of the
Publisher. The use of “implied warranty” and certain “exclusions” vary from state
to state and might not apply to the purchaser of this product.

The companion files are available for downloading by writing to the publisher at
info@merclearning.com.

CGP_C++_CH00-FM_2E_2pp.indd 2 11/13/2020 4:25:32 PM


Computer Graphics
Programming in OpenGL
with C++
Second Edition

V. Scott Gordon, Ph.D.


California State University, Sacramento

John Clevenger, Ph.D.


California State University, Sacramento

Mercury Learning and Information


Dulles, Virginia
Boston, Massachusetts
New Delhi

CGP_C++_CH00-FM_2E_2pp.indd 3 11/13/2020 4:25:32 PM


Copyright ©2021 by Mercury Learning and Information LLC. All rights reserved.

This publication, portions of it, or any accompanying software may not be reproduced in any way,
stored in a retrieval system of any type, or transmitted by any means, media, electronic display or
mechanical display, including, but not limited to, photocopy, recording, Internet postings, or scan­
ning, without prior permission in writing from the publisher.

Publisher: David Pallai


Mercury Learning and Information
22841 Quicksilver Drive
Dulles, VA 20166
info@merclearning.com
www.merclearning.com
(800) 232-0223

Computer Graphics Programming in OpenGL with C++, Second Edition.


V. Scott Gordon & John Clevenger.
ISBN: 978-1-68392-672-6

The publisher recognizes and respects all marks used by companies, manufacturers, and
developers as a means to distinguish their products. All brand names and product names mentioned
in this book are trademarks or service marks of their respective companies. Any omission or misuse
(of any kind) of service marks or trademarks, etc. is not an attempt to infringe on the property
of others.

Library of Congress Control Number: 2020946880

202122321 Printed on acid-free paper in the United States of America.

Our titles are available for adoption, license, or bulk purchase by institutions, corporations, etc.
For additional information, please contact the Customer Service Dept. at 800-232-0223 (toll free).
Digital versions of our titles are available at: www.academiccourseware.com and other e-vendors. All
companion files are available by writing to the publisher at info@merclearning.com.

The sole obligation of Mercury Learning and Information to the purchaser is to replace
the book and/or disc, based on defective materials or faulty workmanship, but not based on the
operation or functionality of the product.

CGP_C++_CH00-FM_2E_2pp.indd 4 11/13/2020 4:25:32 PM


Contents
Preface xi
What’s New in this Edition xiii
Intended Audience xiv
How to Use This Book xv
Acknowledgments xvii
About the Authors xix

Chapter 1 Getting Started 1


1.1 Languages and Libraries 1
1.1.1 C++ 2
1.1.2 OpenGL / GLSL 2
1.1.3 Window Management 3
1.1.4 Extension Library 4
1.1.5 Math Library 4
1.1.6 Texture Management 5
1.1.7 Optional Libraries 5
1.2 Installation and Configuration 5

Chapter 2 The OpenGL Graphics Pipeline 7


2.1 The OpenGL Pipeline 8
2.1.1 C++/OpenGL Application 9
2.1.2 Vertex and Fragment Shaders 12
2.1.3 Tessellation 17
2.1.4 Geometry Shader 18

CGP_C++_CH00-FM_2E_2pp.indd 5 11/13/2020 4:25:32 PM


vi ■ C o n ten ts

2.1.5 Rasterization 19
2.1.6 Fragment Shader 20
2.1.7 Pixel Operations 21
2.2 Detecting OpenGL and GLSL Errors 22
2.3 Reading GLSL Source Code from Files 26
2.4 Building Objects from Vertices 27
2.5 Animating a Scene 28
2.6 Organizing the C++ Code Files 31

Chapter 3 Mathematical Foundations 35


3.1 3D Coordinate Systems 36
3.2 Points 36
3.3 Matrices 37
3.4 Transformation Matrices 39
3.4.1 Translation 40
3.4.2 Scaling 41
3.4.3 Rotation 42
3.5 Vectors 43
3.5.1 Uses for Dot Product 45
3.5.2 Uses for Cross Product 46
3.6 Local and World Space 47
3.7 Eye Space and the Synthetic Camera 48
3.8 Projection Matrices 51
3.8.1 The Perspective Projection Matrix 51
3.8.2 The Orthographic Projection Matrix 53
3.9 Look-At Matrix 54
3.10 GLSL Functions for Building Matrix Transforms 56

Chapter 4 Managing 3D Graphics Data 61


4.1 Buffers and Vertex Attributes 62
4.2 Uniform Variables 65
4.3 Interpolation of Vertex Attributes 66
4.4 Model-View and Perspective Matrices 67
4.5 Our First 3D Program – a 3D Cube 68
4.6 Rendering Multiple Copies of an Object 78
4.6.1 Instancing 79
4.7 Rendering Multiple Different Models in a Scene 82
4.8 Matrix Stacks 85

CGP_C++_CH00-FM_2E_2pp.indd 6 11/13/2020 4:25:32 PM


C onte nts ■ vii

4.9 Combating “Z-Fighting” Artifacts 92


4.10 Other Options for Primitives 93
4.11 Coding for Performance 95
4.11.1 Minimizing Dynamic Memory Allocation 95
4.11.2 Pre-Computing the Perspective Matrix 97
4.11.3 Back-Face Culling 98

Chapter 5 Texture Mapping 103


5.1 Loading Texture Image Files 104
5.2 Texture Coordinates 106
5.3 Creating a Texture Object 108
5.4 Constructing Texture Coordinates 109
5.5 Loading Texture Coordinates into Buffers 110
5.6 Using the Texture in a Shader: Sampler Variables and
Texture Units 111
5.7 Texture Mapping: Example Program 112
5.8 Mipmapping 114
5.9 Anisotropic Filtering 119
5.10 Wrapping and Tiling 120
5.11 Perspective Distortion 122
5.12 Textures – Additional OpenGL Details 124

Chapter 6 3D Models 129


6.1 Procedural Models – Building a Sphere 129
6.2 OpenGL Indexing – Building a Torus 138
6.2.1 The Torus 138
6.2.2 Indexing in OpenGL 140
6.3 Loading Externally Produced Models 145

Chapter 7 Lighting 159


7.1 Lighting Models 159
7.2 Lights 161
7.3 Materials 164
7.4 ADS Lighting Computations 166
7.5 Implementing ADS Lighting 169
7.5.1 Gouraud Shading 170
7.5.2 Phong Shading 178
7.6 Combining Lighting and Textures 183

CGP_C++_CH00-FM_2E_2pp.indd 7 11/13/2020 4:25:32 PM


viii ■ Co n te n ts

Chapter 8 Shadows 189


8.1 The Importance of Shadows 189
8.2 Projective Shadows 190
8.3 Shadow Volumes 191
8.4 Shadow Mapping 192
8.4.1 Shadow Mapping (PASS ONE) – “Draw” Objects from
Light Position 193
8.4.2 Shadow Mapping (Intermediate Step) – Copying the Z-Buffer
to a Texture 194
8.4.3 Shadow Mapping (PASS TWO) – Rendering the Scene with
Shadows 195
8.5 A Shadow Mapping Example 199
8.6 Shadow Mapping Artifacts 205
8.7 Soft Shadows 208
8.7.1 Soft Shadows in the Real World 208
8.7.2 Generating Soft Shadows – Percentage Closer Filtering (PCF) 209
8.7.3 A Soft Shadow/PCF Program 213

Chapter 9 Sky and Backgrounds 219


9.1 Skyboxes 219
9.2 Skydomes 222
9.3 Implementing a Skybox 224
9.3.1 Building a Skybox from Scratch 224
9.3.2 Using OpenGL Cube Maps 227
9.4 Environment Mapping 231

Chapter 10 Enhancing Surface Detail 241


10.1 Bump Mapping 241
10.2 Normal Mapping 243
10.3 Height Mapping 252

Chapter 11 Parametric Surfaces 259


11.1 Quadratic Bézier Curves 259
11.2 Cubic Bézier Curves 261
11.3 Quadratic Bézier Surfaces 264
11.4 Cubic Bézier Surfaces 266

CGP_C++_CH00-FM_2E_2pp.indd 8 11/13/2020 4:25:32 PM


C onte nts ■ ix

Chapter 12 Tessellation 271


12.1 Tessellation in OpenGL 271
12.2 Tessellation for Bézier Surfaces 277
12.3 Tessellation for Terrain / Height Maps 284
12.4 Controlling Level of Detail (LOD) 291

Chapter 13 Geometry Shaders 297


13.1 Per-Primitive Processing in OpenGL 297
13.2 Altering Primitives 299
13.3 Deleting Primitives 303
13.4 Adding Primitives 304
13.5 Changing Primitive Types 307

Chapter 14 Other Techniques 311


14.1 Fog 311
14.2 Compositing / Blending / Transparency 314
14.3 User-Defined Clipping Planes 320
14.4 3D Textures 322
14.5 Noise 328
14.6 Noise Application – Marble 333
14.7 Noise Application – Wood 337
14.8 Noise Application – Clouds 342
14.9 Noise Application – Special Effects 347

Chapter 15 Simulating Water 353


15.1 Pool Surface and Floor Geometry Setup 353
15.2 Adding Surface Reflection and Refraction 358
15.3 Adding Surface Waves 369
15.4 Additional Corrections 372
15.5 Animating the Water Movement 376
15.6 Underwater Caustics 378

Chapter 16 Ray Tracing and Compute Shaders 383


16.1 Compute Shaders 385
16.1.1 Compiling and Using Compute Shaders 385
16.1.2 Parallel Computing in Compute Shaders 386
16.1.3 Work Groups 390

CGP_C++_CH00-FM_2E_2pp.indd 9 11/13/2020 4:25:32 PM


x ■ C o n te n ts

16.1.4 Work Group Details 391


16.1.5 Work Group Limitations 393
16.2 Ray Casting 394
16.2.1 Defining the 2D Texture Image 394
16.2.2 Building and Displaying the Ray Cast Image 395
16.2.3 Ray-Sphere Intersection 403
16.2.4 Axis-Aligned Ray-Box Intersection 404
16.2.5 Output of Simple Ray Casting Without Lighting 405
16.2.6 Adding ADS Lighting 406
16.2.7 Adding Shadows 408
16.2.8 Non-Axis-Aligned Ray-Box Intersection 410
16.2.9 Determining Texture Coordinates 413
16.2.10 Plane Intersection and Procedural Textures 420
16.3 Ray Tracing 424
16.3.1 Reflection 424
16.3.2 Refraction 428
16.3.3 Combining Reflection, Refraction, and Textures 431
16.3.4 Increasing the Number of Rays 432
16.3.5 Generalizing the Solution 439
16.3.6 Additional Examples 443
16.3.7 Blending Colors for Transparent Objects 448

Chapter 17 Stereoscopy for 3D Glasses and VR Headsets 461


17.1 View and Projection Matrices for Two Eyes 463
17.2 Anaglyph Rendering 465
17.3 Side-by-Side Rendering 468
17.4 Correcting Lens Distortion in Headsets 469
17.5 A Simple Testing Hardware Configuration 477

Appendix A Installation and Setup for PC (Windows) 481


Appendix B Installation and Setup for Macintosh 489
Appendix C Using the Nsight Graphics Debugger 497

Index 503

CGP_C++_CH00-FM_2E_2pp.indd 10 11/13/2020 4:25:32 PM


Preface
This book is designed primarily as a textbook for a typical computer science undergradu-
ate course in OpenGL 3D graphics programming. However, we have also endeavored to
create a text that could be used to teach oneself, without an accompanying course. With
both of those aims in mind, we have tried to explain things as clearly and as simply as we
can. All of the programming examples are stripped down and simplified as much as pos-
sible, but they are still complete so that the reader may run them all as presented.

One of the things that we hope is unique about this book is that we have strived to
make it accessible to someone new to 3D graphics programming. While there is by no
means a lack of information available on the topic—quite the contrary—many students
are initially overwhelmed. This text is our attempt to write the book we wish we had had
when we were starting out, with step-by-step explanations of the basics, progressing in
an organized manner up through advanced topics. We considered titling the book “shader
programming made easy”; however, we don’t think that there really is any way of making
shader programming “easy.” We hope that we have come close.

This book teaches OpenGL programming in C++. There are several advantages to
learning graphics programming in C++:
• OpenGL’s native language is C, so a C++ program can make direct OpenGL
function calls.
• OpenGL applications written in C++ typically exhibit very high performance.
• C++ offers modern programming constructs (classes, polymorphism, etc.) not
available in C.
• C++ is a popular language choice for using OpenGL, and a large number of
instructional resources for OpenGL are available in C++.

CGP_C++_CH00-FM_2E_2pp.indd 11 11/13/2020 4:25:32 PM


xii ■ Pr e fa c e

It is worth mentioning that there do exist other language bindings for OpenGL.
Popular alternatives exist for Java, C#, Python, and many others. This textbook focuses
only on C++.

Another thing that makes this book unique is that it has a “sister” textbook: Computer
Graphics Programming in OpenGL with Java 2/E. The two books are organized in lock-
step, with the same chapter and section numbers and topics, figures, exercises, and theo-
retical descriptions. Wherever possible, the code is organized similarly. Of course, the
use of C++ versus Java leads to considerable programming differences (although all of
the shader code is identical). Still, we believe that we have provided virtually identical
learning paths, even allowing a student to choose either option within a single classroom.

An important point of clarification is that there exist both different versions of


OpenGL (briefly discussed later) and different variants of OpenGL. For example, in
addition to “standard OpenGL” (sometimes called “desktop OpenGL”), there exists a
variant called “OpenGL ES,” which is tailored for development of embedded systems
(hence the “ES”). “Embedded systems” include devices such as mobile phones, game
consoles, automobiles, and industrial control systems. OpenGL ES is mostly a subset of
standard OpenGL, eliminating a large number of operations that are typically not needed
for embedded systems. OpenGL ES also adds some additional functionality, typically
application-specific operations for particular target environments. This book focuses on
standard OpenGL.

Yet another variant of OpenGL is called “WebGL.” Based on OpenGL ES, WebGL is
designed to support the use of OpenGL in web browsers. WebGL allows an application to
use JavaScript1 to invoke OpenGL ES operations, which makes it easy to embed OpenGL
graphics into standard HTML (web) documents. Most modern web browsers support
WebGL, including Apple Safari, Google Chrome, Microsoft Edge, Microsoft Internet
Explorer, Mozilla Firefox, and Opera. Since web programming is outside the scope of this
book, we will not cover any WebGL specifics. Note however that because WebGL is based
on OpenGL ES, which in turn is based on standard OpenGL, much of what is covered in
this book can be transferred directly to learning about these OpenGL variants.

The very topic of 3D graphics lends itself to impressive, even beautiful images.
Indeed, many popular textbooks on the topic are filled with breathtaking scenes, and it
is enticing to leaf through their galleries. While we acknowledge the motivational utility
of such examples, our aim is to teach, not to impress. The images in this book are simply

1 
JavaScript is a scripting language that can be used to embed code in webpages. It has strong
similarities to Java, but also many important differences.

CGP_C++_CH00-FM_2E_2pp.indd 12 11/13/2020 4:25:32 PM


Pre fa c e ■ xiii

the outputs of the example programs, and since this is an introductory text, the resulting
scenes are unlikely to impress an expert. However, the techniques presented do constitute
the foundational elements for producing today’s stunning 3D effects.

We also haven’t tried to create an OpenGL “reference.” Our coverage of OpenGL


represents only a tiny fraction of its capabilities. Rather, our aim is to use OpenGL as a
vehicle for teaching the fundamentals of modern shader-based 3D graphics programming
and provide the reader with a sufficiently deep understanding for further study.

What’s New in this Edition


We have added three new chapters in this 2nd edition of Computer Graphics Programming
in OpenGL using C++:

• Chapter 15 – Simulating Water


• Chapter 16 – Ray Tracing
• Chapter 17 – Stereoscopy

Ray tracing in particular has become “hot” recently, so we are especially excited that
it is now included in our book. It is also a huge topic, so even though our coverage is just
a basic introduction, Chapter 16 is now the longest chapter in the book. Chapter 16 also
includes an introduction to compute shaders, which were introduced in OpenGL 4.3, and
an introduction to additive and subtractive color blending, which expands on a topic that
was introduced in Section 14.2.

For years, our own students have repeatedly expressed an interest in simulating
water. However, water takes so many forms that writing an introductory section on the
topic is challenging. Ultimately, we decided to present water in a way that would comple-
ment related topics in the book such as terrain, sky, etc., and so in Chapter 15 we focus on
utilizing our noise maps from Chapter 14 to generate water surfaces such as are seen in
lakes and oceans.

The new chapter on stereoscopy is motivated by the increased popularity of virtual


reality. However, it is also applicable to the development of animation for “3D movies”,
and we have tried to provide introductory coverage of both uses equally.

As a result of these additions, this 2nd edition is larger than the previous edition.

CGP_C++_CH00-FM_2E_2pp.indd 13 11/13/2020 4:25:32 PM


xiv ■ P refa c e

Besides the new material, there are important revisions throughout the book. For
example, we fixed bugs in our Torus class in Chapter 6 and made significant improve-
ments to our noise map functions in Chapter 14. We expanded our Utils.cpp utility class
to handle the loading of compute shaders. We also helped identify a bug in SOIL2 (now
fixed) that affected Macintosh users attempting to load cubemaps.

There are dozens of small changes in every chapter that the reader might not even
notice: fixing typos, cleaning up code inconsistencies, updating the installation instruc-
tions, making slight wording changes, sprucing up figures, updating references, etc.
Completely eliminating typos is virtually impossible in a book that covers an ever-­
changing technology-rich topic, but we really have tried hard.

Intended Audience
This book is targeted at students of computer science. This could mean undergraduates
pursuing a BS degree, but it could also mean anyone who studies computer science. As
such, we are assuming that the reader has at least a solid background in object-oriented
programming, at the level of someone who is, say, a computer science major at the junior
or senior level.

There are also some specific things that we use in this book that we don’t cover,
because we assume the reader already has sufficient background. In particular, these are:

• C++ and its most commonly used libraries, such as the Standard Template
Library;
• familiarity with using an Integrated Development Environment (IDE), such as
Visual Studio;
• basic data structures and algorithms, such as linked lists, stacks, and queues, etc.
• recursion;
• event-driven programming concepts;
• basic matrix algebra and trigonometry; and
• awareness of color models, such as RGB, RGBA, etc.

It is hoped that the potential audience for this new book is further bolstered by the
existence of its “sister” textbook, Computer Graphics Programming in OpenGL with
Java. In particular, we envision a learning environment where students are free to utilize
either C++ or Java in the same classroom, selecting one or the other book. The two texts
cover the material sufficiently in lockstep that we have been able to conduct a graphics
programming course successfully in this manner.

CGP_C++_CH00-FM_2E_2pp.indd 14 11/13/2020 4:25:32 PM


Other documents randomly have
different content
PLAIN KNITTING.

After casting on
the stitches, hold the
pin with the stitches
on it in the left hand,
and with the thread
turned round the
little finger of the
right hand pass it
under the second
and third fingers, and
over the forefinger;
take the other pin in
the right hand; put
this pin into the first loop on the left pin, and with the forefinger of
the right hand pass the thread between the pins, bring the thread
through, which forms one stitch; then take the loop off the left pin
and repeat.
TO MAKE A STITCH

Bring the thread forward between the pins; when this stitch is
worked in the next row it will form an open stitch.
TO MAKE TWO, THREE, OR MORE STITCHES.

Turn the thread as


many times round
the pin as E, F, G,
and in the next row;
pearl a stitch and
knit a stitch,
alternately, taking off
one turn of the
thread each time, for
as many stitches as
were made in the
row before.
TO SLIP A STITCH.

To pass a stitch from the left pin to the right without working it. In
all knitting the first stitch of every row should be slipped to make a
firm and even selvedge; this is not mentioned in the receipts, as it
would much lengthen the description, but is to be observed as a
fixed rule; for example, when a row commences thus; knit 2
together, work as follows:—slip the 1st stitch, knit the 2d, and turn
the slipped stitch over the knitted one.
TO KNIT TWO STITCHES TOGETHER.

Take two stitches with the right hand pin, and knit as 1 stitch.
TO KNIT THREE STITCHES TOGETHER.

Slip 1 stitch, knit 2 stitches together, and with the point of the left
hand pin turn the slipped stitch over the 2 knitted together, leaving
but 1 stitch.
PEARL, ALSO CALLED SEAM, BACK, AND RIB
KNITTING.

Commence the
row with the thread
in front of the pin,
pass the point of the
pin down the stitch,
turn the thread
round the pin, and
take it off as in plain
knitting; repeat,
always keeping the
thread in front.
PEARL AND PLAIN STITCHES IN THE SAME ROW.

Pass the thread to the back of the work before knitting plain
stitches, and to the front before pearling stitches.
TO PEARL TWO OR THREE STITCHES TOGETHER

Keep the thread in front of the pin, pass the point of the right pin
down 2 or 3 stitches, and pearl them together.
TO MAKE A STITCH IN PEARL KNITTING.

Having the thread in front of the pin, turn the thread completely
round the pin, so as to bring it in front again.
TO FORM A ROUND.

4 or 5 pins are
required; cast on the
required number of
stitches on one pin,
and divide them
equally on the other
3 or 4 pins, keeping
the 4th or 5th pin to
knit with, and with
this pin knit the 1st
stitch that was cast;
on knitting off the 3
or 4 pins form one
round.
TO RAISE STITCHES.

The work must be


held on the right
side. Put the pin in
the selvedge or side
of the work, as H;
pass the thread
round the pin and
bring it through, so
as to form a stitch of plain knitting; repeat the same to the end.
A ROW.

Is knitting from one end of the pin to the other.


A PATTERN.

Is the number of rows, that are worked before commencing again.


TO JOIN TWO PIECES OF KNITTING TOGETHER.

As in the Berthe
and Collar, place the
two pins containing
the work together,
the deepest at the
back, and with a
third pin put it
through one stitch of
each pin, as I and K,
and knit them as one stitch.
THE STITCHES BETWEEN A PARENTHESIS ( ).

(Knit 2 together, and knit 1 three times), are worked thus, knit 2
together, knit 1; knit 2 together, knit 1; knit 2 together, knit 1; this
prevents useless repetition.
A MARK *.

When this mark (*) occurs in a row, the stitches before it are not
to be repeated in the row, being merely the edge stitches to prevent
the work from decreasing; thus when knit 3 together, is in a row, the
row generally begins with knit 2 together and ends the same.
TO CAST OFF.

Knit the first 2


stitches; turn the
first stitch, as L, over
the 2d M; knit the 3d
and turn the 2d
stitch over; repeat at
the end of the row,
draw the thread
through and fasten
off. When part of a row only is cast off, as for example—cast off 30
stitches, leaving 20 stitches; cast off 31 stitches, and put the last
loop cast off on the left pin, to make up the 20 stitches.
STITCHES OVER.

A stitch or stitches over, in many of the patterns, commencing


thus—“cast on 10 stitches for each pattern, and one over” for 7
patterns, cast on 71 stitches. As many patterns end with “make a
stitch,” it could not be done without this stitch to perfect the pattern.
The pins are all gauged by the Bell Gauge.
BERTHE. CHANTILLY PATTERN.

Taylor’s Crochet or Knitting Thread, No. 8; Pins No. 19, or Fine Black
Netting Silk.
This Berthe is composed of two rows of lace, with open rows
between them for ribbon. In this pattern, the pearl stitch is the half
of the 2 made stitches in the row before. Cast on 49 stitches with
one pin.
1st row.—Knit 2 together, make 2, knit 3 together, make 1, knit 2
together, knit 2, knit 2 together, make 1, knit 3, make 1, knit 3
together, make 1, knit 3, make 1, knit 3 together, make 1, knit 3,
make 1, knit 2 together, knit 2, knit 2 together, make 1, knit 1,
make 1, knit 2 together, knit 14.
2d.—Make 1, knit 2 together, knit 12, knit 2 together, make 1, knit 1,
make 1, knit 2 together, knit 3, make 1, knit 2 together, knit 1, knit
2 together, make 1, knit 1, make 1, knit 2 together, knit 1, knit 2
together, make 1, knit 1, make 1, knit 2 together, knit 1, knit 2
together, make 1, knit 3, knit 2 together, make 1, knit 2, pearl half
a stitch, knit 1.
3d.—Knit 2 together, make 2, knit 2 together, make 1, knit 1, make
1, knit 2 together, knit 3, make 1, knit 3 together, make 1, knit 3,
make 1, knit 3 together, make 1, knit 3, make 1, knit 3 together,
make 1, knit 2 together, knit 2, knit 2 together, make 1, knit 1,
make 1, knit 2 together, knit 14.
4th.—Make 1, knit 2 together, knit 11, knit 2 together, make 1, knit
3, make 1, knit 2 together, knit 4, make 1, knit 2 together, knit 1,
knit 2 together, make 1, knit 1, make 1, knit 2 together, knit 1, knit
2 together, make 1, knit 4, knit 2 together, make 1, knit 3, make 1,
knit 2, pearl 1, knit 1.
5th.—Knit 2 together, make 2, knit 2 together, make 1, knit 5, make
1, knit 2 together, knit 4, make 1, knit 3 together, make 1, knit 3,
make 1, knit 3 together, make 1, knit 4, knit 2 together, make 1,
knit 5, make 1, knit 2 together, knit 12.
6th.—Make 1, knit 2 together, knit 9, knit 2 together, make 1, knit 7,
make 1, knit 2 together, knit 5, make 1, knit 2 together, knit 1, knit
2 together, make 1, knit 5, knit 2 together, make 1, knit 7, make 1,
knit 2, pearl 1, knit 1.
7th.—Knit 2 together, make 2, knit 2 together, make 1, knit 2, knit 2
together, make 1, knit 1, make 1, knit 2 together, knit 2, make 1,
knit 2 together, knit 5, make 1, knit 3 together, make 1, knit 5, knit
2 together, make 1, knit 2, knit 2 together, make 1, knit 1, make 1,
knit 2 together, knit 2, make 1, knit 2 together, knit 10.
8th.—Make 1, knit 2 together, knit 7, knit 2 together, make 1, knit 2,
knit 2 together, make 1, knit 3, make 1, knit 2 together, knit 2,
make 1, knit 2 together, knit 11, knit 2 together, make 1, knit 2,
knit 2 together, make 1, knit 3, make 1, knit 2 together, knit 2,
make 1, knit 2, pearl 1, knit 1.
9th.—Knit 2 together, make 2 *, knit 2 together, make 1, knit 1,
make 1, knit 2 together, knit 1, make 1, knit 2 together, knit 1, knit
2 together, make 1, knit 1, knit 2 together, make 1, knit 1, make 1,
knit 2 together, knit 9, repeat from * once more; end with 8 plain
instead of 9.
10th.—Make 1, knit 2 together, knit 5, knit 2 together, make 1, knit
3, make 1, knit 2 together, knit 1, make 1, knit three together,
make 1, knit 1, knit 2 together, make 1, knit 3, make 1, knit 2
together, knit 7, knit 2 together, make 1, knit 3, make 1, knit 2
together, knit 1, make 1, knit 3 together, make 1, knit 1, knit 2
together, make 1, knit 3, make 1, knit 2, pearl 1, knit 1.
11th.—Knit 2 together, make 2 *, knit 2 together, make 1, knit 5,
make 1, knit 2 together, knit 3, knit 2 together, make 1, knit 5,
make 1, knit 2 together, knit 5; repeat from * once more, and end
with 1 plain.
12th.—Make 1, knit 2 together, knit 3, knit 2 together, make 1, knit
7, make 1, knit 2 together, knit 1, knit 2 together, make 1, knit 7;
repeat once more, and end with make 1, knit 2, pearl 1, knit 1.
13th.—Knit 2 together, make 2 *, knit 2 together, make 1, knit 2,
knit 2 together, make 1, knit 1, make 1, knit 2 together, knit 2,
make 1, knit 3 together, make 1, knit 2, knit 2 together, make 1,
knit 1, make 1, knit 2 together, knit 2, make 1, knit 2 together, knit
1; repeat from * once more, and end with knit 3.
14th.—Make 1, knit 2 together, knit 3 *, make 1, knit 2, knit 2
together, make 1, knit 3, make 1, knit 2 together, knit 2, make 1,
knit 1, make 1, knit 2 together, knit 2, make 1, knit 3, make 1, knit
2 together, knit 2, make 1, knit 3 together; repeat from * once
more, and end with knit 2 together instead of three together, pearl
1, knit 1.
15th.—Knit 2 together, make 2, knit 2 together *, make 1, knit 2
together, knit 1, make 1, knit 2 together, knit 1, knit 2 together,
make 1, knit 1, knit 2 together, make 1, knit 3; repeat from * 3
times more, and end with knit 3.
16th.—Make 1, knit 2 together *, knit 5, make 1, knit 2 together, knit
1, make 1, knit 3 together, make 1, knit 1, knit 2 together, make 1;
repeat from * 3 times more, and end with knit 2 together, knit 1,
pearl 1, knit 1.
17th.—Knit 2 together, make 2, knit 3 together *, make 1, knit 2
together, knit 3, knit 2 together, make 1, knit 7; repeat from * 3
times more, and end with one plain.
18th.—Make 1, knit 2 together *, knit 7, make 1, knit 2 together, knit
1, knit 2 together, make 1, knit 2, knit 2 together, make 1, knit 1,
make 1, knit 2 together, knit 2, make 1, knit 2 together, knit 1, knit
2 together, make 1, knit 2; repeat from * once more, and end with
knit 3 together instead of 2 plain, pearl 1, knit 1.
19th.—Knit 2 together, make 2, knit 2 together *, make 1, knit 3
together, make 1, knit 2, knit 2 together, make 1, knit 3, make 1,
knit 2 together, knit 2, make 1, knit 3 together, make 1, knit 11;
repeat from * once more, and end with 10 plain instead of 11.
20th.—Make 1, knit 2 together, knit 8, knit 3 together, make 1, knit 2
together, knit 1, make 1, knit 2 together, knit 1, knit 2 together,
make 1, knit 1, knit 2 together, make 1, knit 6, knit 2 together,
make 1, knit 1, make 1, knit 2 together, knit 6, make 1, knit 2
together, knit 1, make 1, knit 2 together, knit 1, knit 2 together,
make 1, knit 1, knit 2 together, make 1, knit 3 together, knit 2
together, pearl 1, knit 1.
21st.—Knit 2 together, make 2, knit 3 together, make 1, knit 2
together, knit 1, make 1, knit 3 together, make 1, knit 1, knit 2
together, make 1, knit 6, knit 2 together, make 1, knit 3, make 1,
knit 2 together, knit 6, make 1, knit 2 together, knit 1, make 1, knit
3 together, make 1, knit 1, knit 2 together, make 1, knit 12.
22d.—Make 1, knit 2 together, knit 11, make 1, knit 2 together, knit
3, knit 2 together, make 1, knit 5, knit 2 together, make 1, knit 1,
make 1, knit 2 together, knit 1, knit 2 together, make 1, knit 1,
make 1, knit 2 together, knit 5, make 1, knit 2 together, knit 3, knit
2 together, make 1, knit 2 together, knit 1, pearl 1, knit 1.
23d.—Knit 2 together, make 2, knit 3 together, make 1, knit 2
together, knit 1, knit 2 together, make 1, knit 5, knit 2 together,
make 1, knit 3, make 1, knit 3 together, make 1, knit 3, make 1,
knit 2 together, knit 5, make 1, knit 2 together, knit 1, knit 2
together, make 1, knit 14.
24th.—Make 1, knit 2 together, knit 13, make 1, knit 3 together,
make 1, knit 4, knit 2 together, make 1, knit 1, make 1, knit 2
together, knit 1, knit 2 together, make 1, knit 1, make 1, knit 2
together, knit 1, knit 2 together, make 1, knit 1, make 1, knit 2
together, knit 4, make 1, knit 3 together, make 1, knit 3 together,
pearl 1, knit 1.
Repeat from 1st row—and when sufficient is made, cast off. For the
ribbon raise the loops at the selvedge and knit 6 rows plain.
7th.—Knit 3 plain *, make 6, knit 3 together, knit 1, knit 3 together;
repeat from * to the end.
8th.—Knit 3 together, pearl 1, knit 1, pearl 1, knit 1, pearl 1, knit 1;
these last 6 stitches are the made stitches in last row, taking off
one turn of the thread each stitch; knit 6 rows plain.
15th.—Knit 6 plain, and then work the same as the 7th row from the
*.
16th.—Same as 8th, and then knit 6 rows plain.
25th.—Same as 7th.
26th.—Same as 8th, and then knit 6 rows plain. This finishes the 1st
part of the Berthe, and leaving it on the pins, work the 2d part,
and when as many patterns are completed as the 1st part, raise
the loops of the selvedge on the pin, place the two parts together,
the narrowest in front, and with a third pin knit 1 stitch off each
together, and knit 2 rows plain and cast off.—See “Explanation of
Terms, to Join.”
CHANTILLY LACE EDGING.

SECOND PART OF BERTHE.

This may be used for a variety of purposes. Pins and thread as


before, cast on 21 stitches.

1st row.—Knit 2 together, make 2, knit 3 together, make 1, knit 2


together, knit 2, knit 2 together, make 1, knit 3, make 1, knit 3
together, make 1, knit 4.
2d.—Make 1, knit 2 together, knit 1, knit 2 together, make 1, knit 1,
make 1, knit 2 together, knit 1, knit 2 together, make 1, knit 3, knit
2 together, make 1, knit 2, pearl 1, knit 1.
3d.—Knit 2 together, make 2, knit 2 together, make 1, knit 1, make
1, knit 2 together, knit 3, make 1, knit 3 together, make 1, knit 3,
make 1, knit 2 together, knit 2.
4th.—Make 1, knit 2 together, knit 1, make 1, knit 2 together, knit 1,
knit 2 together, make 1, knit 4, knit 2 together, make 1, knit 3,
make 1, knit 2, pearl 1, knit 1.
5th.—Knit 2 together, make 2, knit 2 together, make 1, knit 5, make
1, knit 2 together, knit 4, make 1, knit 3 together, make 1, knit 4.
6th.—Make 1, knit 2 together, knit 8, knit 2 together, make 1, knit 7,
make 1, knit 2, pearl 1, knit 1.
7th.—Knit 2 together, make 2, knit 2 together, make 1, knit 2, knit 2
together, make 1, knit 1, make 1, knit 2 together, knit 2, make 1,
knit 2 together, knit 9.
8th.—Make 1, knit 2 together, knit 6, knit 2 together, make 1, knit 2,
knit 2 together, make 1, knit 3, make 1, knit 2 together, knit 2,
make 1, knit 2, pearl 1, knit 1.
9th.—Knit 2 together, make 2, knit 2 together, make 1, knit 1, make
1, knit 2 together, knit 1, make 1, knit 2 together, knit 1, knit 2
together, make 1, knit 1, knit 2 together, make 1, knit 1, make 1,
knit 2 together, knit 7.
10th.—Make 1, knit 2 together, knit 4, knit 2 together, make 1, knit
3, make 1, knit 2 together, knit 1, make 1, knit 3 together, make 1,
knit 1, knit 2 together, make 1, knit 3, make 1, knit 2, pearl 1, knit
1.
11th.—Knit 2 together, make 2, knit 2 together, make 1, knit 5, make
1, knit 2 together, knit, 3, knit 2 together, make 1, knit 5, make 1,
knit 2 together, knit 5.
12th.—Make 1, knit 2 together, knit 2, knit 2 together, make 1, knit
7, make 1, knit 2 together, knit 1, knit 2 together, make 1, knit 7,
make 1, knit 2, pearl 1, knit 1.
13th.—Knit 2 together, make 2, knit 2 together, make 1, knit 2, knit
2 together, make 1, knit 1, make 1, knit 2 together, knit 2, make 1,
knit 3 together, make 1, knit 2, knit 2 together, make 1, knit 1,
make 1, knit 2 together, knit 2, make 1, knit 2 together, knit 3.
14th.—Make 1, (knit 2 together twice), make 1, knit 2, knit 2
together, make 1, knit 3, make 1, knit 2 together, knit 2, make 1,
knit 1, make 1, knit 2, knit 2 together, make 1, knit 3, make 1, knit
2 together, knit 2, make 1, knit 2, pearl 1, knit 1.
15th.—Knit 2 together, make 2, knit 3 together, * make 1, knit 2
together, knit 1, make 1, knit 2 together, knit 1, knit 2 together,
make 1, knit 1, knit 2 together, make 1, knit 3; repeat from * once
more, and end with knit 1.
16th.—Make 1, knit 2 together, knit 3, make 1, knit 2 together, knit
1, make 1, knit 3 together, make 1, knit 1, knit 2 together, make 1,
knit 5, make 1, knit 2 together, knit 1, make 1, knit 3 together,
make 1, knit 1, knit 2 together, make 1, knit 2 together, knit 1,
pearl 1, knit 1.
17th.—Knit 2 together, make 2, knit 3 together, make 1, knit 2
together, knit 3, knit 2 together, make 1, knit 7, make 1, knit 2
together, knit 3, knit 2 together, make 1, knit 6.
18th.—Make 1, knit 2 together, knit 5, make 1, knit 2 together, knit
1, knit 2 together, make 1, knit 2, knit 2 together, make 1, knit 1,
make 1, knit 2 together, knit 2, make 1, knit 2 together, knit 1, knit
2 together, make 1, knit 3 together, pearl 1, knit 1.
19th.—Knit 2 together, make 2, knit 2 together, make 1, knit 3
together, make 1, knit 2, knit 2 together, make 1, knit 3, make 1,
knit 2 together, knit 2, make 1, knit 3 together, make 1, knit 8.
20th.—Make 1, knit 2 together, knit 1, make 1, knit 2 together, knit
6, make 1, knit 2 together, knit 1, make 1, knit 2 together, knit 1,
knit 2 together, make 1, knit 1, knit 2 together, make 1, knit 3
together, knit 2 together, pearl 1, knit 1.
21st.—Knit 2 together, make 2, knit 3 together, make 1, knit 2
together, knit 1, make 1, knit 3 together, make 1, knit 1, knit 2
together, make 1, knit 6, knit 2 together, make 1, knit 4.
22d.—Make 1, knit 2 together, knit 1, knit 2 together, make 1, knit 1,
make 1, knit 2 together, knit 5, make 1, knit 2 together, knit 3, knit
2 together, make 1, knit 2 together, knit 1, pearl 1, knit 1.
23d.—Knit 2 together, make 2, knit 3 together, make 1, knit 2
together, knit 1, knit 2 together, make 1, knit 5, knit 2 together,
make 1, knit 3, make 1, knit 2 together, knit 2.
24th.—Make 1, knit 2 together, knit 1, make 1, knit 2 together, knit
1, knit 2 together, make 1, knit 1, make 1, knit 2 together, knit 4,
(make 1, and knit 3 together twice), pearl 1, knit 1; commence
again at the first row.
MANCHETTE, OR UNDER SLEEVE POINT LACE
PATTERN.

Taylor’s Crochet or Knitting Thread, No. 12; Pins No. 21, Ball Gauge.
Cast on 81 stitches with 2 pins.
1st row, pearl; 2d row, plain; 3d row, pearl; 4th row, plain; 5th row,
pearl.
6th.—Make 4, knit 3 together, knit 3 together; repeat.
7th.—Pearl 3, knit 1, pearl 1, knit 1; the last 4 stitches are those
made on 6th row; repeat.
8th, plain; 9th, pearl; 10th, plain; 11th, pearl.
12th.—Make 1, knit 2; repeat.
13th.—Pearl. There will now be 121 stitches on the pin; these 13
rows form the band, and now commence the pattern.
1st row.—Knit 1, knit 2 together, make 1, knit 1, make 1, knit 2
together; repeat at the end of the row, knit 1.
2d.—Make 1, knit 3 together, make 1, knit 1, make 1, knit 2
together; repeat, and end with knit 1.
3d.—Knit 1, knit 2 together, make 1, knit 1, make 1, knit 2 together;
repeat, and end with knit 1.
4th.—Knit 2 together *, make 1, knit 3, make 1, knit 3 together;
repeat from *, and end with knit 2 together.
5th.—Knit 1, make 1, knit 2 together, knit 1, knit 2 together, make 1;
repeat, and end with knit 1.
6th.—Knit 1, make 1, knit 2 together, make 1, knit 3 together, make
1; repeat, and end with knit 1.
7th.—Same as 5th.
8th.—Knit 2, make 1, knit 3 together, make 1, knit 1; repeat, at the
end, knit 1. Repeat this pattern 3 times more, then knit a row, knit
1, knit 2 together, and repeat to the end, which will bring the
manchette to the original 84 stitches; commence again at the 1st
row, and work the band and the pattern once more, then work the
band, and cast off; finish with the point lace edging working 9
scollops for each manchette, and trim with ribbon in each open
row of the band.
POINT LACE EDGING.

Taylor’s Crochet or Knitting Thread, No. 12; Pins No. 21, Bell
Gauge. Cast on 12 stitches.
1st row.—Knit 2, make 1, (knit 2 together twice), make 1, knit 3,
make 1, knit 3.
2d.—Make 1, knit 2 together, knit 1, make 1, knit 2 together, knit
1, knit 2 together, make 1, knit 3, make 1, knit 2 together.
3d.—Knit 2, make 1, knit 2 together, knit 1, make 1, knit 2
together, make 1, knit 3 together, make 1, knit 3.
4th.—Make 1, knit 2 together, knit 1, make 1, knit 1, make 1, knit
2, knit 2 together, make 1, knit 3, make 1, knit 2 together.
5th.—Knit 2, make 1, knit 2 together, knit 2, make 1, knit 3
together, make 1, knit 3, make 1, knit 3.
6th.—Make 1, knit 2 together, knit 1, make 1, knit 2 together, knit
1, knit 2 together, make 1, knit 1, make 1, knit 2 together, knit 3,
make 1, knit 2 together.
7th.—Knit 2, make 1, knit 2 together, knit 1, knit 2 together, make
1, knit 1, make 1, knit 2 together, make 1, knit 3 together, make
1, knit 3.
8th.—Make 1, knit 2 together, knit 1, make 1, knit 1, make 1, knit
2, knit 2 together, make 1, knit 1, make 1, knit 2 together, knit 3,
make 1, knit 2 together.
9th.—Knit 2, make 1, (knit 2 together twice), make 1, knit 3, make
1, knit 3 together, make 1, knit 3, make 1, knit 3.
10th.—Make 1, knit 2 together, knit 1, make 1, knit 2 together, knit
1, knit 2 together, make 1, knit 1, make 1, knit, 2 together, knit
1, knit 2 together, make 1, knit 3, make 1, knit 2 together.
11th.—Knit 2, make 1, knit 2 together, knit 1, make 1, knit 2
together, make 1, knit 3 together, make 1, knit 1, make 1, knit 2
together, make 1, knit 3 together, make 1, knit 3.
12th.—Make 1, knit 2 together, knit 1, make 1, knit 1, make 1, knit
2, knit 2 together, make 1, knit 1, make 1, knit 2 together, knit 1,
knit 2 together, make 1, knit 3, make 1, knit 2 together.
13th.—Knit 2, make 1, (knit, 2 together twice), make 1, knit 3
together, make 1, knit 3, make 1, knit 3 together, make 1, knit 3,
make 1, knit 3.
14th.—Make 1, knit 2 together, knit 1, make 1, knit 2 together, knit
1, knit 2 together, make 1, knit 1, make 1, knit 2 together, knit 1,
knit 2 together, make 1, knit 1, make 1, knit 2 together, knit 2,
make 1, knit 2 together.
15th.—Knit 2, make 1, (knit 2 together twice), make 1, knit 1,
make 1, knit 2 together, make 1, knit 3 together, make 1, knit 1,
make 1, knit 2 together, make 1, knit 3 together, make 1, knit 3.
16th.—Same as 14th.
17th.—Knit 2, make 1, knit 2 together, knit 1, make 1, knit 3, make
1, knit 3 together, make 1, knit 3, make 1, knit 3 together, make
1, knit 2 together, knit 2.
18th.—Make 1, knit 2 together, knit 1, knit 2 together, make 1, knit
2 together, knit 1, knit 2 together, make 1, knit 1, make 1, knit 2
together, knit 1, knit 2 together, make 1, knit 2 together, knit 1,
make 1, knit 2 together.
19th.—Knit 2, make 1, knit 2 together, make 1, knit 2, make 1, knit
3 together, make 1, knit 1, make 1, knit 2 together, make 1, knit
3 together, make 1, knit 2 together, knit 2.
20th.—Same as 10th.

You might also like