Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
5K views

Computer Graphics Programming in OpenGL with Java 3rd Edition V. Scott Gordon pdf download

The document provides information about the book 'Computer Graphics Programming in OpenGL with Java, 3rd Edition' by V. Scott Gordon and John Clevenger, including its contents and licensing terms. It also includes links to download the book and other related titles. The book covers various topics in computer graphics programming using OpenGL and Java, including installation, graphics pipeline, mathematical foundations, and advanced techniques like lighting and shadows.

Uploaded by

bimbocarhamd1
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5K views

Computer Graphics Programming in OpenGL with Java 3rd Edition V. Scott Gordon pdf download

The document provides information about the book 'Computer Graphics Programming in OpenGL with Java, 3rd Edition' by V. Scott Gordon and John Clevenger, including its contents and licensing terms. It also includes links to download the book and other related titles. The book covers various topics in computer graphics programming using OpenGL and Java, including installation, graphics pipeline, mathematical foundations, and advanced techniques like lighting and shadows.

Uploaded by

bimbocarhamd1
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 53

Computer Graphics Programming in OpenGL with

Java 3rd Edition V. Scott Gordon download

https://ebookmeta.com/product/computer-graphics-programming-in-
opengl-with-java-3rd-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 C 2nd


Edition V Scott Gordon

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

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/

Developing Graphics Frameworks With Java and OpenGL 1st


Edition Lee Stemkoski

https://ebookmeta.com/product/developing-graphics-frameworks-
with-java-and-opengl-1st-edition-lee-stemkoski/

Engaged Learners and Digital Citizens Critical Outcomes


for Teaching and Learning 1st Edition Brad Garner

https://ebookmeta.com/product/engaged-learners-and-digital-
citizens-critical-outcomes-for-teaching-and-learning-1st-edition-
brad-garner/
The Spy Whisperer 1st Edition Matthew Dunn

https://ebookmeta.com/product/the-spy-whisperer-1st-edition-
matthew-dunn/

Case Files Family Medicine, 4e 4th Edition Donald


Briscoe

https://ebookmeta.com/product/case-files-family-medicine-4e-4th-
edition-donald-briscoe/

Advanced Therapeutics in Pain Medicine First Edition


Sahar Swidan

https://ebookmeta.com/product/advanced-therapeutics-in-pain-
medicine-first-edition-sahar-swidan/

Gingerbear Christmas Howls Romance Howliday Special 1st


Edition Reina Torres Torres Reina

https://ebookmeta.com/product/gingerbear-christmas-howls-romance-
howliday-special-1st-edition-reina-torres-torres-reina/

Resonating System What To Perceive So You Can Receive


Resonation Realm Book 1 2nd Edition Rinzen Joye

https://ebookmeta.com/product/resonating-system-what-to-perceive-
so-you-can-receive-resonation-realm-book-1-2nd-edition-rinzen-
joye/
Beaded By Midnight A curvy girl and brother s best
friend romance 1st Edition Eve London

https://ebookmeta.com/product/beaded-by-midnight-a-curvy-girl-
and-brother-s-best-friend-romance-1st-edition-eve-london/
Computer Graphics
Programming in OpenGL
with Java
Third Edition

CGP.Java3E.Ch00.FM.2pp.indd 1 8/17/2021 12:04:50 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, but does
not give you the right of ownership to any of the textual content in the book 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 disc,
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 ensure
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 author, developers, and the publisher of any accompanying content, and anyone
involved in the composition, production, and manufacturing of this work will not
be liable for damages of any kind arising out of the use of (or the inability to use)
the algorithms, source code, computer programs, or textual material contained
in this publication. This includes, but is not limited to, loss of revenue or profit,
or other incidental, physical, or consequential damages arising out of the use of
this Work.

The sole remedy in the event of a claim of any kind is expressly limited to
replacement of the book and disc 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.

Companion files are available for download from the publisher by writing to
info@merclearning.com.

CGP.Java3E.Ch00.FM.2pp.indd 2 8/17/2021 12:04:50 PM


Computer Graphics
Programming in OpenGL
with Java
Third Edition

V. Scott Gordon, PhD


California State University, Sacramento

John Clevenger, PhD


California State University, Sacramento

Mercury Learning and Information


Dulles, Virginia
Boston, Massachusetts
New Delhi

CGP.Java3E.Ch00.FM.2pp.indd 3 8/17/2021 12:04:50 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
scanning, 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

V. Scott Gordon & John Clevenger.


Computer Graphics Programming in OpenGL with Java, Third Edition
ISBN: 978-1-68392-736-5

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: 2021942460

212223 321 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.Java3E.Ch00.FM.2pp.indd 4 8/17/2021 12:04:50 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 Java 2
1.1.2 OpenGL / GLSL 2
1.1.3 JOGL 3
1.1.4 JOML 3
1.2 Installation and Configuration 4

Chapter 2 The OpenGL Graphics Pipeline 5


2.1 The OpenGL Pipeline 6
2.1.1 Java/JOGL Application 7
2.1.2 Vertex and Fragment Shaders 10
2.1.3 Tessellation 15
2.1.4 Geometry Shader 16
2.1.5 Rasterization 17
2.1.6 Fragment Shader 19
2.1.7 Pixel Operations 20

CGP.Java3E.Ch00.FM.2pp.indd 5 8/17/2021 12:04:51 PM


vi ■ C o n ten ts

2.2 Detecting OpenGL and GLSL Errors 21


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 Java Code Files 32

Chapter 3 Mathematical Foundations 37


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

Chapter 4 Managing 3D Graphics Data 63


4.1 Buffers and Vertex Attributes 64
4.2 Uniform Variables 67
4.3 Interpolation of Vertex Attributes 68
4.4 Model-View and Perspective Matrices 69
4.5 Our First 3D Program—A 3D Cube 71
4.6 Rendering Multiple Copies of an Object 80
4.6.1 Instancing 81
4.7 Rendering Multiple Different Models in a Scene 84
4.8 Matrix Stacks 87
4.9 Combating “Z-Fighting” Artifacts 94
4.10 Other Options for Primitives 95
4.11 Coding for Performance 97

CGP.Java3E.Ch00.FM.2pp.indd 6 8/17/2021 12:04:51 PM


C onte nts ■ vii

4.11.1 Minimizing Dynamic Memory Allocation 97


4.11.2 Pre-Computing the Perspective Matrix 99
4.11.3 Back-Face Culling 100

Chapter 5 Texture Mapping 107


5.1 Loading Texture Image Files 108
5.2 Texture Coordinates 110
5.3 Creating a Texture Object 112
5.4 Constructing Texture Coordinates 112
5.5 Loading Texture Coordinates into Buffers 114
5.6 Using the Texture in a Shader: Sampler Variables and Texture Units 114
5.7 Texture Mapping: Example Program 115
5.8 Mipmapping 118
5.9 Anisotropic Filtering 123
5.10 Wrapping and Tiling 124
5.11 Perspective Distortion 126
5.12 Loading Texture Image Files using Java AWT Classes 128

Chapter 6 3D Models 133


6.1 Procedural Models—Building a Sphere 134
6.2 OpenGL Indexing—Building a Torus 142
6.2.1 The Torus 142
6.2.2 Indexing in OpenGL 143
6.3 Loading Externally Produced Models 148

Chapter 7 Lighting 161


7.1 Lighting Models 161
7.2 Lights 163
7.3 Materials 166
7.4 ADS Lighting Computations 168
7.5 Implementing ADS Lighting 171
7.5.1 Gouraud Shading 172
7.5.2 Phong Shading 180
7.6 Combining Lighting and Textures 185

Chapter 8 Shadows 191


8.1 The Importance of Shadows 191
8.2 Projective Shadows 192

CGP.Java3E.Ch00.FM.2pp.indd 7 8/17/2021 12:04:51 PM


viii ■ Co n te n ts

8.3 Shadow Volumes 193


8.4 Shadow Mapping 194
8.4.1 Shadow Mapping (Pass One)—“Draw” Objects from
Light Position 195
8.4.2 Shadow Mapping (Intermediate Step)—Copying the
Z-Buffer to a Texture 196
8.4.3 Shadow Mapping (Pass Two)—Rendering the Scene with
Shadows 197
8.5 A Shadow Mapping Example 201
8.6 Shadow Mapping Artifacts 208
8.7 Soft Shadows 210
8.7.1 Soft Shadows in the Real World 211
8.7.2 Generating Soft Shadows—Percentage Closer Filtering (PCF) 212
8.7.3 A Soft Shadow/PCF Program 216

Chapter 9 Sky and Backgrounds 221


9.1 Skyboxes 221
9.2 Skydomes 224
9.3 Implementing a Skybox 226
9.3.1 Building a Skybox from Scratch 226
9.3.2 Using OpenGL Cube Maps 229
9.4 Environment Mapping 234

Chapter 10 Enhancing Surface Detail 243


10.1 Bump Mapping 243
10.2 Normal Mapping 245
10.3 Height Mapping 254

Chapter 11 Parametric Surfaces 261


11.1 Quadratic Bézier Curves 261
11.2 Cubic Bézier Curves 263
11.3 Quadratic Bézier Surfaces 266
11.4 Cubic Bézier Surfaces 268

Chapter 12 Tessellation 273


12.1 Tessellation in OpenGL 273
12.2 Tessellation for Bézier Surfaces 279
12.3 Tessellation for Terrain/Height Maps 286
12.4 Controlling Level of Detail (LOD) 293

CGP.Java3E.Ch00.FM.2pp.indd 8 8/17/2021 12:04:51 PM


C onte nts ■ ix

Chapter 13 Geometry Shaders 299


13.1 Per-Primitive Processing in OpenGL 299
13.2 Altering Primitives 301
13.3 Deleting Primitives 305
13.4 Adding Primitives 306
13.5 Changing Primitive Types 309

Chapter 14 Other Techniques 313


14.1 Fog 313
14.2 Compositing/Blending/Transparency 316
14.3 User-Defined Clipping Planes 322
14.4 3D Textures 324
14.5 Noise 330
14.6 Noise Application - Marble 335
14.7 Noise Application - Wood 340
14.8 Noise Application - Clouds 344
14.9 Noise Application - Special Effects 349

Chapter 15 Simulating Water 355


15.1 Pool Surface and Floor Geometry Setup 355
15.2 Adding Surface Reflection and Refraction 360
15.3 Adding Surface Waves 371
15.4 Additional Corrections 374
15.5 Animating the Water Movement 379
15.6 Underwater Caustics 381

Chapter 16 Ray Tracing and Compute Shaders 387


16.1 Compute Shaders 389
16.1.1 Compiling and Using Compute Shaders 389
16.1.2 Parallel Computing in Compute Shaders 390
16.1.3 Work Groups 394
16.1.4 Work Group Details 395
16.1.5 Work Group Limitations 398
16.2 Ray Casting 399
16.2.1 Defining the 2D Texture Image 399
16.2.2 Building and Displaying the Ray Cast Image 400
16.2.3 Ray-Sphere Intersection 408
16.2.4 Axis-Aligned Ray-Box Intersection 409

CGP.Java3E.Ch00.FM.2pp.indd 9 8/17/2021 12:04:51 PM


x ■ C o n te n ts

16.2.5 Output of Simple Ray Casting Without Lighting 411


16.2.6 Adding ADS Lighting 411
16.2.7 Adding Shadows 413
16.2.8 Non-Axis-Aligned Ray-Box Intersection 415
16.2.9 Determining Texture Coordinates 418
16.2.10 Plane Intersection and Procedural Textures 426
16.3 Ray Tracing 430
16.3.1 Reflection 430
16.3.2 Refraction 434
16.3.3 Combining Reflection, Refraction, and Textures 437
16.3.4 Increasing the Number of Rays 439
16.3.5 Generalizing the Solution 446
16.3.6 Additional Examples 450
16.3.7 Blending Colors for Transparent Objects 455

Chapter 17 Stereoscopy for 3D Glasses and VR Headsets 467


17.1 View and Projection Matrices for Two Eyes 469
17.2 Anaglyph Rendering 471
17.3 Side-by-Side Rendering 474
17.4 Correcting Lens Distortion in Headsets 475
17.5 A Simple Testing Hardware Configuration 483

Appendix A Installation and Setup for PC (Windows) 487


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

Index 505

CGP.Java3E.Ch00.FM.2pp.indd 10 8/17/2021 12:04:51 PM


Preface
This book is designed primarily as a textbook for a typical computer science ­undergraduate
course in modern shader-based, OpenGL 3D graphics programming. However, we have
also endeavored to create a text that could be used to teach oneself, without an accom-
panying 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 possible, but they are still complete, so the reader may run them all
as presented.

One of the things we hope is unique about this book is that we have strived to make it
accessible to a beginner – that is, 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, progress-
ing 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 Java, using JOGL—a Java “wrapper”
for OpenGL’s native C calls [JO21]. There are several advantages to learning graphics
programming in Java rather than in C:
• It is more convenient for students at schools that conduct most of their curriculum
in Java
• Installation and setup is easier in Java than for C or C++
• Java’s I/O, window, and event handling are arguably cleaner than in C

CGP.Java3E.Ch00.FM.2pp.indd 11 8/17/2021 12:04:51 PM


xii ■ Pr e fa c e

• Java’s excellent support for object-oriented design patterns can foster good design
• JOGL includes some very nice tools, such as for loading textures, animation
loops, etc.
It is worth mentioning that there do exist other Java bindings for OpenGL. One that
has become very popular is Lightweight Java Game Library, or LWJGL [LW21]. Like
JOGL, LWJGL also offers bindings for OpenAL and OpenCL. This textbook focuses
only on JOGL.

Another thing that makes this book unique is that it has a “sister” textbook: Computer
Graphics Programming in OpenGL with C++, Second Edition. The two books are orga-
nized in lockstep, with the same chapter and section numbers and topics, figures, exer-
cises, and theoretical descriptions. Wherever possible, the code is organized similarly.
Of course, the use of Java versus C++ leads to considerable programming differences
(although all of the shader code is identical). Still, we believe that we have provided vir-
tually 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. The JOGL suite of Java
bindings includes interfaces for different versions of OpenGL ES, although we do not use
them in this book.

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

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

CGP.Java3E.Ch00.FM.2pp.indd 12 8/17/2021 12:04:51 PM


Pre fa c e ■ xiii

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 the
outputs of the example programs, and because 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 or JOGL “reference.” Our coverage of


OpenGL and JOGL represents only a tiny fraction of their capabilities. Rather, our aim is
to use OpenGL and JOGL as vehicles for teaching the fundamentals of modern shader-
based 3D graphics programming, and provide the reader with a sufficiently deep under-
standing for further study. If along the way this text helps to expand awareness of JOGL
and other JogAmp technologies, that would be nice, too.

What’s New in This Edition


We have added three new chapters in this 3rd edition of Computer Graphics Programming
in OpenGL with Java:
• 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 complement
related topics in the book such as terrain, sky, etc., and so in Chapter 15 we focus on utiliz-
ing our noise maps from Chapter 14 to generate water surfaces such as are seen in lakes
and oceans.

CGP.Java3E.Ch00.FM.2pp.indd 13 8/17/2021 12:04:51 PM


xiv ■ P refa c e

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 3rd edition is larger than the previous edition.

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. Another small, but important, modifica-
tion was to change all of our lighting computations so that they are done in world space
rather than in camera space – this makes it easier to develop applications that require
being able to move the camera around. We also expanded our Utils.java utility class to
handle the loading of compute shaders.

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-chang-
ing technology-rich topic, but we have attempted it.

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, but that we don’t cover,
because we assume the reader already has sufficient background. In particular:
• Java and its Abstract Window Toolkit (AWT) or Swing library, especially for
GUI-building
• Java configuration details, such as manipulating the CLASSPATH
• basic data structures and algorithms, such as linked lists, stacks and queues, etc.
• recursion
• event-driven programming concepts
• basic matrix algebra and trigonometry
• basic analytic geometry, such as for defining points, lines, vectors, planes, and circles

CGP.Java3E.Ch00.FM.2pp.indd 14 8/17/2021 12:04:51 PM


Pre fa c e ■ xv

• awareness of color models, such as RGB, RGBA, etc.


• basic familiarity with C or C++ (some shader syntax is based on C)
The audience for this new 3rd edition is also hoped to be expanded by the similar
updates made for the 2nd edition of its “sister” textbook, Computer Graphics Programming
in OpenGL with C++. In particular, we envision a learning environment where students
are free to utilize either Java or C++ in the same classroom, selecting one or the other
book. The two texts cover the material sufficiently in lockstep that we have been conduct-
ing our graphics programming course successfully in this manner.

How to Use This Book


This book is designed to be read from front to back. That is, material in later chapters
frequently relies on information learned in earlier chapters. So, it probably won’t work to
jump back and forth in the chapters; rather, work your way forward through the material.

This is also intended mostly as a practical, hands-on guide. While there is plenty of
theoretical material included, the reader should treat this text as a sort of “workbook,” in
which you learn basic concepts by actually programming them yourself. We have pro-
vided code for all of the examples, but to really learn the concepts you will want to “play”
with those examples—extend them to build your own 3D scenes.

At the end of each chapter are a few exercises to solve. Some are very simple, involv-
ing merely making simple modifications to the provided code. The problems that are
marked “(PROJECT),” however, are expected to take some time to solve, and require writ-
ing a significant amount of code, or combining techniques from various examples. There
are also a few marked “(RESEARCH)”—those are problems that encourage independent
study because this textbook doesn’t provide sufficient detail to solve them.

OpenGL calls, whether made in C or in Java through JOGL, often involve long lists of
parameters. While writing this book, the authors debated whether or not to, in each case,
describe all of the parameters. We decided that in the early chapters we would describe
every detail. But as the topics progress, we decided to avoid getting bogged down in every
piece of minutiae in the OpenGL calls (and there are many), for fear of the reader losing
sight of the big picture. For this reason, it is essential when working through the examples
to have ready access to reference material for Java, OpenGL, and JOGL.

For this, there are a number of excellent reference sources that we recommend using
in conjunction with this book. The javadocs for Java and JOGL are absolutely essential,
and can be accessed online or downloaded. The reader should bookmark them for easy

CGP.Java3E.Ch00.FM.2pp.indd 15 8/17/2021 12:04:51 PM


Exploring the Variety of Random
Documents with Different Content
Henri kiipesi keulamastoon ja käytti ahkerasti kaukoputkeaan. Hän
oli pian selvillä siitä, mihin suuntaan vene oli ohjattava, mutta virta
oli vielä aivan liian voimakas.

Noin viisi kuusi tuntia vesi vielä alenisi. Toisin sanoen, kello
yhdentoista aikaan olisi sopivin hetki lähteä maihin.

Lyhyen neuvottelun jälkeen päätettiin ainakin toistaiseksi jättää


"Eteenpäin" tällä kellonlyönnillä. Heillä oli siis vielä yllin kyllin aikaa
saada jotain suuhunsa ennen kuin ratkaiseva hetki lähestyi.

Hitaasti, sanomattoman hitaasti vesi aleni. Moko, joka ei koskaan


ollut toimeton, piti koko ajan huolta luotaamisesta. Henri ja Gordon
huomasivat, että pieni neekeripoika arvelevasti pudisti päätään; oli
varmaan jotain, mikä ei häntä oikein miellyttänyt.

Ja niin olikin. Vesi ei Mokon mielestä ollut kyllin matalalla, jotta he


voisivat päästä maihin.

Nyt olivat hyvät neuvot kalliit.

Maihin heidän täytyi päästä ennen nousuveden aikaa, muuten


heidän täytyisi viettää vielä yksi yö laivassa, ja se olisi heidän
loppunsa, sillä ennen pitkää laiva hajoaisi.

"Minä keksin", sanoi Henri. "Mitä jos rakentaisimme hirsilautan?…


Ei, ei se käy, siihen menisi liian pitkä aika. — Mutta jos saisimme
köyden maihin ja sitoisimme sen kallioon. Silloin voisimme ehkä
hinata itsemme maihin."

"Se on helpommin sanottu kuin tehty", arveli Gordon. "Kuka


sen…?"
Henri keskeytti hänet. "Kuka veisi köyden? Minä itse tietysti."

Gordon katseli ihaillen reipasta ystäväänsä. Hän tiesi, että oli


mahdotonta saada Henriä luopumaan tästä ajatuksesta, kun hän
kerran oli saanut sen päähänsä. Sen vuoksi hän ehdotti, että Henri
käyttäisi venettä. Mutta siitäkään ei nuori uskalikko tahtonut kuulla
puhuttavan: hän tahtoi uida.

Ensin Henri valitsi itselleen paksun ja lujan köyden, sitten hän


riisuutui ja sitoi köyden toisen pään vyötäisilleen.

Sillä aikaa Gordon oli kutsunut toiset pojat avukseen laskemaan


köyttä alas. Kaikki muut tulivatkin paitsi Robert ja hänen
liittolaisensa, mutta se ei ollutkaan kumma, jokainen saattoi hyvin
ymmärtää, mitä Henrin yrityksen onnistuminen merkitsisi.

Juuri kun hän oli syöksymäisillään pää edellä mereen, juoksi


hänen veljensä Paul itkien hänen luokseen. Mutta Henri käski hänen
vain kiltisti pyyhkiä silmänsä ja säästää kyynelet kunnes oikein
todella oli jotain itkemisen syytä. Ja sitten hän hyppäsi veteen.

Köysi päästettiin nyt hänelle alas, ja näyttikin siltä kuin hän


onnistuisi. Silloin tällöin jokin pyörre kyllä koetti nielaista hänet, ja
hänen täytyi lakkaamatta taistella voimainsa takaa kuohuja vastaan,
mutta hän läheni kuitenkin rantaa… Ei, nyt hän ei enää jaksanut.
Äkkiä hänen kuultiin huutavan apua ja samassa hän katosi veden
alle.

"Vetäkää köyttä! Vetäkää köyttä!" huusi Gordon. Niin tapahtuikin,


ja muutaman hetken kuluttua rohkea uimari makasi pitkin pituuttaan
kuunarin kannella.
Pikku Paul oli epätoivoissaan ja vaikeroi että hänen veljensä oli
kuollut. Niin pahasti ei kuitenkaan ollut, Henri oli vain tiedoton ja tuli
pian jälleen tajuihinsa.

Aika kului. Kello oli kohta kaksitoista. Vesi alkoi vähitellen taas
kohota ja aallokko yltyi yltymistään.

Mihin nyt ryhtyä?

Kaikki pojat, sekä suuret että pienet, olivat kokoontuneet keulan


puolelle. Siinä he istuivat tai seisoivat katsellen avuttomina rantaa,
joka oli niin lähellä ja kuitenkin niin kaukana.

Tuuli kiihtyi veden noustessa; se vinkui korvissa ja puhalsi maata


kohti. "Eteenpäin", joka oli noussut pystyasentoon heti kun laineet
taas olivat sitä työntämässä, hakkasi niin kovasti keulaansa, että
poikien täytyi puristautua kiinni laivaan, jotteivät putoaisi pää edellä
mereen.

Ja hyökyaalto toisensa jälkeen vyöryi yli kannen.

Yhtäkkiä lähestyi kauhean suuri aalto. Se syöksyi pauhaten ja


kohisten vasten tuhansia kallioita, joita meri oli täynnä, ja samassa
silmänräpäyksessä kun pojat odottivat kannella henki kurkussa
loppua, juuri sillä hetkellä tunsivat kaikki, kuinka kuunari ikään kuin
kohosi heidän allaan kevyenä ja vapaana, ja meren voimakas
käsivarsi kantoi sen aivan rantaäyräälle.

Kevyesti, kareja hipaisemattakaan se liukui eteenpäin.


KOLMAS LUKU

Carrin koulu

Uuden Seelannin pääkaupungissa Aucklandissa on monta koulua.


Muutamia oli perustettu alkuasukkaiden, maorilaisten lapsia varten,
toisissa opiskelivat valkoihoisten pojat ja tyttäret.

Carrin koulussa, joka oli kaupungin parhaita oppilaitoksia, kävi


vain valkoihoisia poikia. Kaikkiaan koulussa oli satakunta oppilasta.
Siinä oli englantilaisten, saksalaisten, ranskalaisten, amerikkalaisten,
skandinaavisten ym. perheiden poikia. Uuden Seelannin rikkaudet ja
hedelmällisyys olivat jo vuosikausia houkutelleet miehiä ja naisia
mitä erilaisimmista säädyistä jättämään isänmaansa, ja joka viikko
tulvi uusia asukkaita kukoistavaan pääkaupunkiin. Saapui virkamiehiä
ja käsityöläisiä, kauppiaita ja työväkeä, ihmisiä, joiden kehto oli
liekkunut jossain muualla maailmassa.

Carrin koulussa siirtolaisten pojat saivat huolellisen ja


monipuolisen opetuksen.

Uuden Seelannin muodostaa kaksi suurta saarta: Pohjoissaari,


jolle alkuasukkaat ovat antaneet nimen Ika-na-mavi, ja Eteläsaari,
jonka maorilainen nimi on Tavajponamu. Näiden välillä on Cookin
salmi. Pohjoissaari näyttää vinolta säännöttömältä nelikulmiolta, sen
yhdestä kolkasta pistää kapea maakaistale kuin aallonmurtaja kauas
luoteeseen. Tällä niemekkeellä sijaitsee Auckland. Se on saanut
nimen "Etelän Korintti", koska se on rakennettu kapealle kannakselle
kuten Kreikan Korintti. Kaupungilla on kaksi satamaa, toinen itää,
toinen länttä kohti. Itäinen ei ole kovin syvä, mutta siihen on
rakennettu kaksi aallonmurtajaa, jotka pistävät pitkälle mereen, ja
niiden luo laskevat laivat maihin. Toinen näistä aallonmurtajista,
"Kauppa-aallonmurtaja", kulkee Kuningattarenkadun suunnassa, joka
on Aucklandin tärkeimpiä katuja.

Carrin koulu on tämän kadun varrella.

Iltapuolella helmikuun 15. päivänä 1860 tulivat pojat


vanhempineen ulos koulun portista. Harvoin näkee yhtaikaa niin
monia säteileviä kasvoja; kaikki sekä suuret että pienet, olivat iloisia
ja reippaita ja muistuttivat häkistä päästettyä lintuparvea.

Ja häkistähän he oikeastaan olivatkin päässeet. Oli näet heidän


ensimmäinen lomapäivänsä. Kirjoille ja koulunpenkille oli jätetty
hyvästi kahden kuukauden ajaksi. Huhtikuun puoliväliin asti he saivat
nauttia vapaasta, kahleettomasta elämästä, saivat mellastaa
väsyksiin asti niityillä ja vainioilla, metsissä ja avoimella, raikkaalla
rannikolla.

Olipa muutamilla pojilla vielä aivan erityinen ilon aihe: He aikoivat


näet viettää lomansa "Eteenpäin"-nimisessä kuunarissa, jolla heidän
piti kiertää koko Uusi Seelanti.

"Eteenpäin" oli mainio laiva. Sen omisti vanha kokenut


merikapteeni herra Garnett, jonka poika kävi myös Carrin koulua.
Kapteeni oli vuokrannut aluksen nuorille huviretkeilijöille
rahasummasta, jonka onnellisten poikien vanhemmat olivat
koonneet.

Englantilaisissa kouluissa, olivatpa ne sitten emämaassa tai


imperiumin alusmaissa ympäri maailmaa, on kaiken opetuksen ja
kasvatuksen tunnussana vapaus. Englantilaiset opettajat panevat
aina pääpainon sille, että saavat pojista vapaita miehiä, jotka tietävät
velvollisuutensa ja täyttävät sen pakotta ja vapaaehtoisesti.

Englantilaisia koulupoikia opetetaan jo nuorella iällä


vastuuntuntoon, heitä totutetaan kantamaan elämän taakat omilla
voimillaan. Sen vuoksi he jo varhain kehittyvät miehiksi, joilla on
järki päässä ja sydän paikallaan.

Carrin koulussa oli varsinkin ylemmillä luokilla monta poikaa, jotka


kaikissa suhteissa olivat kuin aikuisia ihmisiä. He olivat raitista ja
reipasta nuorisoa, jota ei tarvinnut pampulla pakottaa lukemaan
läksyjään, poikia, jotka eivät käyneet veltoiksi eikä vallattomiksi,
vaikka silloin tällöin saivatkin odottamattoman lupapäivän, lyhyesti
sanoen heidät oli leivottu juuri sellaisesta taikinasta, josta poikien
pitää olla.

Koulun alemmilla luokilla kuri oli ankarampi. Pienemmät pojat


eivät vielä olleet niin ymmärtäväisiä, että opettajat olisivat voineet
hellittää ohjaksia. Mutta paitsi opettajia täytyi pikkupoikien
napisematta totella muutamia muitakin, nimittäin ylimmän luokan
poikia.

Kaikkialla Englannissa vallitsee vielä tänä päivänä vanha tapa, että


pienempien koulupoikien täytyy olla isommille jonkinlaisina
palvelijoina. Kouluissa, joissa kaikki pojat asuvat saman katon alla ja
syövät yhdessä, täytyy pikkupoikien käydä isompien asioilla, harjata
heidän saappaansa ja siivota heidän huoneensa, sanalla sanoen olla
heidän apunaan monella tavoin. Palkinnoksi näistä palveluksista isot
pojat puolestaan auttavat pieniä, kun nämä joutuvat johonkin
pulaan, ja pitävät ylipäänsä heistä huolta kaikin tavoin.

Niiden neljäntoista joukossa, joiden piti purjehtia "Eteenpäin"-


laivalla loma-aikanaan, oli poikia koulun kaikilta luokilta. Muutamat
olivat vain kahdeksan vuoden ikäisiä, toiset olivat jo täyttäneet
neljätoista, niin suuri ero oli nuorten merimiesten iässä.

Tarkastakaamme nyt hiukan kutakin erikseen.

Ensiksi englantilaisia. Robert ja Cross olivat serkuksia. Robertin isä


oli Aucklandin poliisimestari, hänen veljensä, Crossin isä, oli
maanviljelijä ja omisti suuren maatilan muutaman mailin päässä
kaupungista. Molemmat pojat olivat melkein samanikäiset, kolme-
neljätoistavuotiaat, ja olivat ylimmällä luokalla. Cross oli sellainen
kuin pojat ylipäänsä ovat. Hänessä ei ollut muuta huomiota
herättävää kuin hänen rajaton ihailunsa Robertia kohtaan. Kaikki
mitä Robert sanoi, mitä Robert ajatteli ja mitä Robert teki, oli Crossin
silmissä korkeinta viisautta.

Oliko Robert sitten niin erinomainen? Niin, Robertia ei tosiaankaan


ollut helppo ymmärtää. Hänessä oli monta hyvää puolta, hän oli
hyväpäinen ja tavattoman ahkera, joten hän oli koko joukon
etevämpi muita poikia. Robert oli aina koulun ensimmäinen. Mutta
hänen vikansa olivat myös silmiinpistävät. Hän tahtoi aina olla muita
hienompi ja närkästyi heti, elleivät kaikki toverit seuranneet hänen
neuvoansa, ja hän tahtoi olla ensimmäinen koulutuntien ja
koulunseinien ulkopuolellakin. Sen vuoksi Robert ei voinut sietää
Henriä, sillä häntä harmitti, että toverit rakastivat kymmenen kertaa
enemmän "ranskalaista" kuin häntä, joka kuitenkin joka päivä
helposti voitti Henrin läksyissä. Erittäinkin pikkupojat rakastivat
Henriä ja olisivat mielellään menneet vaikka tuleen hänen
puolestaan. Mutta Robertia he eivät voineet kärsiä, he pilkkasivat
hänen hienoa, ylpeilevää käytöstapaansa ja olivat antaneet hänelle
pilkkanimen "paroni".

Baxter, joka hänkin oli viidennellä luokalla, oli kolmetoistavuotias.


Hän oli ahkera ja miettiväinen poika, kenties liiankin miettiväinen
istuessaan kirjojen ääressä, mutta sen ohella kätevä, terve ja reipas.
Oikea miehenalku. Hänen isällään oli pienenlainen kauppa
Aucklandissa.

Neljännen luokan pojista olivat William ja Webb päässeet mukaan


merimatkalle. Nämä molemmat "kaksinkertaiset W:t", kuten muuan
kekseliäs kolmasluokkalainen oli heidät ristinyt, olivat melkein aina
yhdessä sekä koulussa että koulun ulkopuolella. Heidän
vanhempansa seurustelivat keskenään, ja molemmat kaksi-
kolmetoistavuotiaat pojat muuttuivat päivä päivältä yhä enemmän
toistensa kaltaisiksi, jollei ehkä piirteiltään, niin ainakin luonteiltaan.
Eikä tämä ystävyys ollut erikoisen terveellistä heille, se näet vain yhä
enemmän kehitti heidän vikojaan. Webb lellitteli Williamin
itsepintaisuutta ja William kehitti Webbin riidanhalua, lyhyesti
sanoen, molemmille olisi ollut varsin hyödyllistä joutua ajattelemaan
vakavampia asioita.

Sitten seurasi kolmas luokka. Siinä olivat ensiksikin Garnett ja


Jack, molemmat kahdentoista vuoden ikäiset. Garnettin isä omisti
"Eteenpäin"-kuunarin, Jackin isä oli rikas maanviljelijä ja kapteeni
Garnettin hyvä ystävä. Garnett ja Jack olivat melkein yhtä
erottamattomat kuin William ja Webb. Olisi voinut lyödä vetoa siitä,
että Jack oli Garnettin luona, ellei Garnett ollut Jackin luona. Ja
kuitenkin he olivat aivan erilaiset, yhteistä heissä oli vain erityinen
halu kepposten tekoon, ja kumpaisellakin oli oma keppihevosensa.
Garnett oli kiihkeä hanurinsoittaja, eipä hän suotta ollut merimiehen
poika. Jack sitä vastoin ahmi huvittavia kirjoja, missä niitä vain
käsiinsä sai. Hänen lempikirjansa oli Robinson Crusoe — kuten kaikki
lukuhaluiset lapset kautta koko maailman hänkin rakasti eniten tätä
kirjaa. Hän oli lukenut sen ainakin kaksikymmentä kertaa, ja osasi
sen melkein ulkoa.

Yhdeksänvuotiaita oli kaksi: Tom, etevän aucklandilaisen


luonnontieteilijän poika, ja Edvard, jonka isä oli pappina kaupungin
suurimmassa, Pyhän Paavalin kirkossa. Molemmat pojat olivat
ahkeria ja vilkkaita ja saivat opettajiltaan yleensä kiitosta. Tom oli
kolmannella, Edvard vasta toisella luokalla.

Sitten olivat vielä kaikkein pienimmät: John (8,5 vuotta) ja Costar


(8 vuotta). Kummankin isä oli upseerina englantilais-seelantilaisessa
sotaväessä. Pojista ei ole paljon kerrottavaa — ei mitään muuta kuin
että John oli pieni itsepintainen herrasmies ja Costar aimo
herkkusuu, Aucklandin leivosputiikkien paras asiakas. He kävivät
ensimmäistä luokkaa ja ylpeilivät kovin siitä, että osasivat lukea ja
kirjoittaa, aivan kuin moisesta kannattaisi kahdeksan-
yhdeksänvuotiaan pojanvekkulin nostaa nenäänsä.

Aluksessa oli siis yksitoista poikaa, kaikki uusseelantilaisia,


englantilaista syntyperää. Ja vielä yksi amerikkalainen ja kaksi
ranskalaista.

Amerikkalaisen nimi oli Gordon. Hän oli vakava ja miettiväinen


poika, vain neljätoistavuotias, mutta monessa suhteessa kuin
aikuinen mies. Hiukan kömpelö hän oli ja rahtusen raskasmielinen,
mutta luotettava kuin kulta. Minkä hän otti tehdäkseen, sen hän
myöskin toimitti. Hänen mielilauseensa oli: "Joka asia ajallaan, ja
kaikki oikealle paikalleen", eikä suotta sanottu, että hänen
ajatuksensa olivat yhtä hyvässä järjestyksessä hänen aivoissaan kuin
tavarat hänen kaapissaan. Hänen hyllynsä olivat nimittäin
erinomaisen huolellisesti järjestetyt, esineet numeroitu ja merkitty
luetteloon. Toiset pojat kunnioittivat häntä suuresti, ja hän oli
hyvissä väleissä melkein kaikkien kanssa. Boston oli hänen
kotikaupunkinsa. Hänen vanhempansa olivat kuolleet, ja hänen
holhoojansa, vanha kauppias, oli jo monta vuotta sitten matkustanut
Gordonin kanssa Uuteen Seelantiin.

Molemmat nuoret ranskalaiset olemme jättäneet viimeisiksi. Henri


Martinet ja hänen veljensä Paul olivat ranskalaisen insinöörin poikia.
Tämä oli pari-kolme vuotta sitten siirtynyt isänmaastaan Ika-
namaviin ottaakseen osaa suureen kuivatustyöhön, johon oli
ryhdytty saaren sisäosassa. Henri, joka kuten tiedämme oli jo
täyttänyt kolmetoista vuotta, oli älykäs, teräväpäinen poika, mutta
ahkera hän ei ollut. Sen vuoksi hänen enimmäkseen täytyikin tyytyä
istumaan luokan alimmilla paikoilla, ja tästä syystä hän sai kestää
yhtä ja toista opettajien puolelta. Mutta siinä suhteessa Henri oli
ihmeellinen, että hän silloin tällöin, juuri kun oli painumaisillaan
luokan "viimeiseksi", saattoi yhtäkkiä ponnistautua ja yhdellä
tempauksella ponnahtaa aivan "ensimmäisen" naapuristoon, Robert-
"paronin" suureksi kiusaksi.

Yhdessä suhteessa Henri kuitenkin oli kaikkia muita oppilaita


etevämpi, nimittäin urheilussa. Hän oli komea ilmestys
temmeltäessään reippaana ja notkeana pallokentällä tai
uimarannalla. Ja olemmehan jo nähneet, kuinka hän melkein
onnistui pelastamaan sekä itsensä että kaikki toverinsa
haaksirikkoutuneesta laivasta.

Tiedämme myös, että useimmat pojat olivat lujasti kiintyneet


Henriin ja että hän oli melkein kuin heidän päällikkönsä. Mutta hänen
kekseliäisyyttäänhän he etupäässä saivatkin kiittää siitä, että he vielä
olivat hengissä.

Paul ei juuri missään ollut veljensä kaltainen. Hän istui ahkerasti


kirjojensa ääressä ja oli luokan etevimpiä. Siitä huolimatta sekä
koulun johtaja että opettajat olivat aina hänen kimpussaan, ja häntä
kyllä sietikin hiukan kovistaa. Paul Martinet oli näet koulun
vallattomin poika; joka päivä hän keksi jotain kujeita, teki kepposia
milloin opettajille, milloin pojille, ja tunneilla hänen oli miltei
mahdotonta istua minuuttiakaan hiljaa; melkeinpä saattoi uskoa
todeksi johtajan sanat, että Paulilla oli elohopeaa siinä
ruumiinosassa, millä istutaan.

Ihme kyllä oli Paul muuttunut kokonaan matkan aikana. Tuntuipa


kuin hän olisi unohtanut kaikki kepposensa maalle. Kukaan ei
tietänyt mistä se johtui.

Nyt tiedämme yhtä ja toista nuorista merenkulkijoistamme. Entä


laivamiehistö? Paitsi kapteeni Garnettia, jonka piti itse ohjata alusta,
kuului miehistöön perämies, kuusi merimiestä, kokki ja neekeripoika
Moko. Älkäämme myöskään unohtako Pania, Gordonin sievää
lintukoiraa, joka ei koskaan jättänyt isäntäänsä.

Helmikuun 15 päivänä aluksen piti lähteä liikkeelle. Toistaiseksi se


oli kiinnitettynä Kauppa-aallonmurtajan kärkeen.

Helmikuun 14:nnen iltana Carrin koulun pojat astuivat laivaan.


Laivaväkeä ei ollut saapunut vielä muita kuin perämies ja Moko.
Miehistö ja kokki olivat niitä ihmisiä, jotka eivät voineet tempautua
irti ravintolasta ennen kuin aivan viime hetkellä. Valitettavasti ei
perämies ollut juuri heitä parempi. Heti kun pojat olivat menneet
levolle, hän puikahti maihin saadakseen lasin sitä ainetta, joka vain
lisää janoa.

Ja sitten… niin, mitä sitten tapahtui?

Tuskinpa milloinkaan saadaan selville, kuinka kaikki oikein kävi.


Mutta niin vain tapahtui, että "Eteenpäin" irtautui rannasta ja joutui
tuuliajolle.

Laivassa ei kukaan huomannut sitä.

Satama ja lahti olivat pimeän peitossa. Maatuuli ja pakovesi


kiidättivät yhteisin voimin laivaa aavalle merelle.

Moko oli ensimmäinen, jolle selvisi, mitä oli tapahtunut. Hänen


huutonsa herätti Gordonin, Henrin, Robertin ja monen muun, ja pian
oli avuttomien poikien taistelu myrskyä ja aaltoja vastaan täydessä
käynnissä.

Tiedämme jo, miten kuunarin sittemmin kävi. Olemme kuulleet,


kuin "Eteenpäin" keinuttuaan viikkokausia merellä viimein ajautui
autiolle, tuntemattomalle rannikolle.

Mutta siitä eivät ihmiset Aucklandissa tietäneet mitään. Tiedettiin


vain, että "Eteenpäin" oli poissa. Mutta minne se oli joutunut? Oliko
se uponnut ja vienyt pojat mukanaan syvyyteen? Vai oliko ehkä joku
toinen laiva korjannut pojat? Kulovalkean tavoin levisi sanoma
kauheasta onnettomuudesta ympäri Uuden Seelannin, ja moni koti
oli surun vallassa.

Satamahallinto teki heti kaiken voitavansa joutuakseen kuunarille


avuksi. Kaksi pientä höyryalusta lähetettiin etsimään kadonneita,
kumpikin eri taholle. Ne palasivat kuitenkin takaisin löytämättä
aluksesta vähäisintäkään jälkeä.

Mutta jonkin päivän kuluttua saapui muuan ulkomaalainen laiva


Aucklandin satamaan, ja tämän laivan miehistö toi aucklandilaisille
lahjan, joka sammutti viimeisenkin toivonkipinän. Kukaan ei enää
uskonut kadonneen laivan palaavan, sillä ulkomaalaisen laivan lahja
oli laudanpätkä, josta selvästi erotti kirjaimet ETEENPÄIN.

Kadonneen kuunarin nimikilpi!

Kapteeni Garnett tiesi nyt laivan joutuneen haaksirikkoon. Pojat


eivät enää koskaan palaa.
NELJÄS LUKU

Pojat suunnittelevat

Henri ja Gordon olivat heti samaa mieltä siitä, että maissa on heti
etsittävä paikka, jossa kaikki, varsinkin pienet, voisivat olla
tuulensuojassa.

"Mehän voisimme löytää jonkin luolan", sanoi Henri.

"Niin, tuossa jyrkässä töyräässä voisi olla sellainen."

Ja molemmat pojat riensivät töyrästä kohti. Sen juurella kasvoi


metsää. Ihmisasuntoja ei näkynyt sen enempää kuin tietäkään. Siellä
täällä heidän täytyi kiivetä valtavan suurten puunrunkojen yli, jotka
vanhuuttaan olivat kaatuneet ja makasivat maassa peittonaan paksu
kerros lakastuneita lehtiä, jotka kattoivat maankamaran. Eräästä
seikasta saattoi kuitenkin olettaa, ettei rannikko ollut aina ollut
asumaton: linnut lehahtivat pelästyneinä lentoon nähtyään vain
vilauksenkin Henristä tai Gordonista.

Vihdoin viimein he olivat kahlanneet kahisevien lehtikasojen lävitse


ja saapuivat nyt jyrkän töyrään juurelle. He huomasivat pian, ettei
siellä ollut ainoatakaan luolaa. Pienintäkään repeämää ei ollut
töyräässä, se oli sileä ja tasainen.

He kulkivat eteenpäin, kunnes saapuivat virralle, joka jo kaukaa oli


kimmeltänyt heidän silmiinsä. Se virtasi idästä länteen, ja he
joutuivat sen oikealle partaalle. Vastapäinen ranta oli laakea ja
alaston. Seutu näytti olevan mahdottoman suurta suomaata.

Henri ja Gordon eivät paljon hyötyneet matkastaan. He kääntyivät


nyt takaisin ja kiirehtivät toisten luo. "Eteenpäin" seisoi tai
oikeammin lojui vielä tukevasti siinä, minne laineet olivat sen
heittäneet, ja rannalla kuljeksi Robert ja pari pienempää poikaa
kiihkeästi keskustellen. Pikkupojat kokoilivat ahkerasti näkinkenkiä.

Kun Gordon oli kertonut, etteivät hän ja Henri ikävä kyllä olleet
löytäneet mitään paikkaa, johon olisi voinut asettua asumaan,
päätettiin lyhyen keskustelun ja pohtimisen jälkeen toistaiseksi jäädä
kuunariin. Köli oli kyllä saanut aimo kolauksen ja kannessa ammotti
suuri halkeama juuri skanssin yläpuolella, mutta alhaalla kajuutoissa
oli vielä turvallinen ja hyvä olla, ja kapyysi — tällä nimellä kulki
laivakeittiö merimieskielellä — ei ollut kärsinyt mitään vahinkoa. Siinä
voitiin vielä keittää, ja sehän oli tärkeätä.

Oli onni, että "Eteenpäin" oli ajautunut aivan rantaäyräälle.


Muuten pojilla olisi ollut paljon vaivaa ja puuhaa saada maihin
ruokavaroja, työkaluja, vaatteita ja muuta. Nyt kaikki kävi aivan
helposti. Ja tuskinpa kovin monta päivää kestäisikään, ennen kuin
heidän oli pakko kimpsuineen kampsuineen muuttaa
haaksirikkoutuneesta laivasta. Mutta niin kauan kuin runko piti
ryhtinsä, "Eteenpäin" oli mainio asuinpaikka.
"Jos saisimme yhtä mukavat olot tulevassa asunnossamme", sanoi
Henri, "niin voisimme olla iloisia. Mutta se ei käy niinkään helposti!
Täällä ei näytä olevan yhtään ainoata paikkaa, missä voisi saada
katon päänsä päälle."

Moko oli mestari ruoanlaitossa, ja Jackissa oli hiukan kokkipojan


vikaa. Yks kaks he olivat paistaneet vähän kinkkua, kymmenkunta
munaa, ja kohta viisitoista haaksirikkoista poikaa ja koira istuivat
pitkän pöydän ääreen kajuutassa ja kävivät täysinäisten vatien
kimppuun.

Ja luuletteko heidän istuneen alla päin ja masentuneena


suremassa onnettomuuttaan. Päinvastoin. He rohkaisivat toinen
toistaan, ja pian matala kajuutta kaikui heidän iloisesta naurustaan
ja leikkipuheistaan. Koko joukossa oli vain yksi, joka istui hiljaisena
ja alakuloisena, nimittäin Paul Martinet. Mikähän häntä vaivasi?

Aterioinnin jälkeen kaikkia rupesi nukuttamaan; eikä kummakaan


että he olivat väsyneitä kaiken sen jälkeen, mitä he viime
vuorokausien kuluessa olivat kestäneet. Ensin menivät pikkupojat
levolle ja pian isommat seurasivat heitä, paitsi Henri, Gordon ja
Robert, jotka olivat päättäneet olla vartiossa koko yön. Ei voitu olla
aivan huolettomia; olisivathan heidän kimppuunsa voineet hyökätä
vaikka petoeläimet tai alkuasukkaat.

Yö kului kuitenkin rauhallisesti. Niin pian kuin aurinko lähetti


ensimmäiset säteensä, heräsivät pojat ja valmistuivat heti päivän
töihin. Ensin tarkastettiin ruoka-aitta perinpohjaisesti. Tärkein
kysymys oli, riittääkö ruokaa ainakin aluksi. Muuten poikien täytyy
heti lähteä hankkimaan ruokavaroja, ja se saattaa olla hankalaa.
Robert, joka koko lailla ymmärsi metsästysasioita, väitti että
ympäristössä tuskin oli muuta metsästyskelpoista kuin merilinnut,
jotka kaartelivat rannoilla, mutta niistä he eivät muka suuria
kostuneet.

Kuitenkin kävi ilmi, että ruokavarastot olivat hyvin runsaat. Kaksi


ensimmäistä kuukautta he saattoivat hyvin tulla toimeen, jos
tyytyivät vain kaikkein välttämättömimpään. Ja vähän muutakin kuin
merilintuja oli ehkä kuitenkin saatavissa, nimittäin munia. Sen
keksinnön teki William, ja Costar ja John olivat heti samaa mieltä.

"Niin", he huusivat. "Munia! Kootaan vain iso kasa niitä. Se on


hauskaa ja sitä paitsi ne maistuvat hyviltä".

"Ja ne ovat ravitsevia", lisäsi siihen Henri. "Olipa hyvä, että tulit
ajatelleeksi munia".

Webbillä oli myös jotain sanottavaa. "Mehän voimme kalastaakin",


hän sanoi.

Sekä Henri että Gordon olivat jo ajatelleet, kuinka suurta hyötyä


heillä tulee olemaan siimoista, mutta he antoivat mielellään Webbille
kunnian tästä ehdotuksesta; he tiesivät, että oli tärkeätä rohkaista
poikien toimeliaisuutta, silloin syntyy kilpailu siitä, kuka voi antaa
parhaan neuvon.

Koko joukko otti kalastusehdotuksen iloiten vastaan, ja kun Webb


kysyi, kuka tahtoo tulla mukaan, kaikki kohottivat kätensä ja
huusivat:

"Minä! — Ja minä! — Ja minä! —"

Henrin täytyi huomauttaa heille, ettei ollut kysymyksessä mikään


huvikalastus, vaan täysi tosi.
Tietysti, kaikki lupasivat että he kyllä käyttäytyvät järkevästi. Ja
Jack ehdotti, että jotkut heti menisivät kokoamaan näkinkenkiä ja
ostereita. "Eikö niin, Gordon? Saamme välipalaa täksi päiväksi."

Gordon nyökkäsi. "Niin, menkää te vain. Mutta ottakaa Moko


mukaanne. Hän ymmärtää parhaiten sellaisia asioita. Etkö sinäkin
Paul seuraa toisia?"

Paul pudisti päätään, hän tahtoi mieluimmin olla vapaana, hän


sanoi.

Niinpä Jack, John, Costar ja Edvard lähtivät yhdessä laivapojan


kanssa rannalle. Ja pian he olivat kokonaan intoutuneet
kuoriniekkojen kokoamiseen rantaäyräältä.

Sillä aikaa oli laivassa ankaraa puuhaa. Cross, William, Robert ja


Webb tarkastivat koko varaston, joka sisälsi aseita, panoksia,
vaatteita, makuuvaatteita ja työkaluja. Henri ja pari kolme muuta
poikaa tarkastivat laivan juomavaraston, ja jokaisen oluttynnyrin,
jokaisen viini- ja mehupullon Gordon merkitsi tarkoin taskukirjaansa.
Kirjoitettiin muistiin myös, paljonko väkeviä viinoja laivassa oli. Henri
ja Gordon olivat kuitenkin ennakolta päättäneet kätkeä kaikki nämä
väkevät niin hyvin, ettei kukaan pääsisi niihin käsiksi. He arvelivat,
että olisi vain pahaksi, jos ruvettaisiin rohkaisemaan mieltä
paloviinalla, konjakilla ja muilla senlaatuisilla aineilla.

Kaikkien suureksi iloksi laiva sisälsi koko joukon tavaroita, joista


heillä aikaa myöten olisi paljon hyötyä. Niinpä he löysivät
purjekangasta, köysiä, yllin kyllin siimaa, verkkoja sekä selkänuottia.
Asevarastossa oli kymmenen kivääriä ja yhtä monta revolveria.
Panoksista ja ruudista ei myöskään tulisi pitkiin aikoihin olemaan
puutetta. Aluksen rakettivarasto saattoi myös olla heille hyödyksi. Ja
päälle päätteeksi oli kaksi pientä laivatykkiä luoteineen. Aika sai
näyttää, tulisiko järeämmälle kalustolle käyttöä taistelussa vihollisia
vastaan.

"Hei, tässäpä on jotain, johon Jack mielistyy!" Huudahti Henri, kun


hän tovereineen oli tutkimassa keittiökaluja.

"Jack! Missä olet? Niin, hänhän on ostereita hakemassa. Meidän


pitää muistaa kertoa hänelle, että keittiö on täynnä patoja, kattiloita
ja vateja. Siinäpä jotain hänelle, kokkipojalle."

Mutta vielä tärkeämmän aarteen sisälsi muuan lukittu huone; niin


suuren varaston valmiita verka-, puuvilla- ja liinavaatteita että se oli
kuin pieni vaatekauppa. Koulun johtaja oli näet kehottanut lasten
vanhempia varustamaan huviretkeilijöille runsaat vaatevarastot
mukaan. Silloin ei kukaan arvannut, kuinka suurta hyötyä pojille
tulee olemaan näistä vaatteista. Jos he olivat ajautuneet autiolle
rannalle, saattoi kulua aikoja ennen kuin he pääsevät pois. Ei ollut
vaikea laskea, että he yhä vielä olivat jotakuinkin samoilla
leveysasteilla kuin Uusi Seelanti, toisin sanoen heillä oli tiedossa
ankarat talvet ja hyvin lämpöiset kesät. Ja silloinhan runsas
vaatevarasto oli erinomaisen tarpeen että voi pukeutua sään
mukaan.

Vielä paljon muuta merkittiin Gordonin taskukirjaan. Siinä oli


ilmapuntari, lämpömittari, kaksi hyvää kelloa, kolme
laivakaukoputkea, kolme kompassia ja joukko kirjavia lippuja ja
viirejä, sellaisia joilla merimiehet kaikkialla maailmassa antavat
toisilleen merkkejä laivasta toiseen. Tällaisten lippujen avulla voi
kaksi alusta mainiosti puhua keskenään ja kaikessa hiljaisuudessa
pitää pitkiä keskusteluja.
Ompelutarpeita, nappeja, silmäneuloja ja lankaa, niin, helpompi
olisi luetella mitä aluksessa ei ollut, kuin kirjoittaa muistiin, mitä
kaikkea laivan monet komerot sisälsivät. Gordonin paksu taskukirja
oli kirjoitettu melkein täyteen.

"Eläköön!"

Mitähän Henri nyt oli saanut käsiinsä? Se mahtoi olla jotain aivan
erinomaista, koska hän noin riemuitsi löydöstään. Ja se oli todellakin
jotain, mille kyllä sieti huutaa eläköötä: hän oli löytänyt kumiveneen,
joka oli suunniteltu niin, että sen saattoi panna kokoon ja kantaa
mukanaan kuin matkalaukun.

Laivassa oli myös koko joukko merikortteja, mutta ne esittivät


yksinomaan Uutta Seelantia ja läheisiä saaria. Gordonilla oli
kuitenkin oikein hyvä karttakirja omien tavaroittensa joukossa, ja se
oli kyllä tarpeen myöhemmin, kun pojat alkoivat lukea kaikkia niitä
matkakuvauksia, joita oli laivan kirjastossa. Paperia, lyijy- ja
teräskyniä sekä mustetta oli yllin kyllin. Löytyipä muun hyvän ohessa
vuoden 1890 almanakkakin, tuli vain muistaa merkitä siihen jokainen
kuluva päivä. Tämä jäi Baxterin tehtäväksi.

Kirjoista puhuttaessa voimme mainita, että Jack suureksi


lohdutuksekseen oli saanut pelastetuksi rakkaan "Robinson
Crusoensa". Kun vain aika salli, saattoi hän ruveta lukemaan sitä
kahdettakymmenettä ensimmäistä kertaa.

Myös Garnettin aarre, hanuri, näkyi olevan hyvässä kunnossa.

"Tässä on kyllä laivan hyödyttömin kapine", sanoi Henri koputtaen


suuren kassakaapin oveen kapteenin kajuutassa. "Sillä vaikka se
sisältäisi tuhansia, mitäpä me niillä tekisimme?"
"Haa!" arveli Gordon. "Ei ole niinkään varma, että meidän täytyy
istua tällä rannalla aina tuomiopäivään asti. Katsotaan joka
tapauksessa, mitä kaappi sisältää."

Kauan aikaa ponnisteltuaan he saivat oven tiirikalla auki ja laskivat


sitten sisällä olevat rahat. Siinä oli koko läjä kolikoita, pelkkiä
kultarahoja.

"Tiedätkös mitä, Henri, voi koittaa sellainenkin päivä, jolloin


olemme ylen iloiset tästä löydöstä", arveli Gordon. "Ajattelepas, että
meidän esimerkiksi onnistuisi päästä johonkin laivaan, silloin ei olisi
hassumpaa että taskussa olisi rahoja, joilla päästä kotiin."

Siinä Henrin täytyi myöntää ystävänsä olevan oikeassa. Ja


kuitenkin, kävisiköhän koskaan niin onnellisesti kuin Gordon toivoi?
Jos he olivat autiolla saarella, kuluisi varmaan monta, monta vuotta,
ennen kuin joku laiva joutuisi lähelle. Jos ylipäänsä mikään laiva tuli
näille vesille. Jospa he vain olisivat osanneet korjata aluksen vauriot.
Mutta kukaan heistä ei osannut. Ja sitä paitsi olisi voinut käydä
hullusti, jos he olisivat uskaltaneet lähteä merelle, kun laivassa ei
ollut ainoatakaan merimiestä.

Asiat olivat huonosti.

Noin kello kahdentoista ajoissa pienet osterinpoimijat palasivat. He


olivat olleet ahkerassa työssä ja näyttivät ylpeinä, kuinka paljon
näkinkenkiä ja ostereita he olivat koonneet. Moko kiirehti heti
keittiöön niitä valmistamaan, mutta kertoi ensin hiukan Henrille mitä
oli nähnyt. Muun muassa hän oli huomannut, että jyrkällä mereen
viettävällä töyräällä vilisi metsäkyyhkysiä, jotka rakensivat pesiään.
Munia oli siis yllin kyllin, niin että William saattoi helposti tyydyttää
keräilynhaluaan.
Kun Robert kuuli kyyhkysistä, herahti vesi hänen kielelleen. Hän
kuvitteli olevansa erinomainen metsästäjä ja oli perin innostunut
metsästykseen. Metsästys oli hänen mielestään ainoa urheilulaji,
joka soveltuu hienolle miehelle, ja hienohan hän juuri halusi olla.

Henri, joka arvasi Robertin ajatukset, tahtoi olla ystävällinen häntä


kohtaan. "Etkö haluaisi lähteä kyyhkysiä ampumaan huomenna?"
hän kysyi.

"Kyllä, oikein mielelläni. Tuletteko mukaan?" hän huusi Webbille ja


Crossille, jotka eivät suinkaan vastustaneet ehdotusta.

Niinpä päätettiin, että seuraavana päivänä lähdetään suurelle


kyyhkysmetsästykselle, mutta kun Henri pyysi Robertia käyttämään
säästävästi ruutia, tämä loukkaantui heti ja tuli pahalle tuulelle.
Henri oli kuitenkin varoittanut parasta tarkoittaen eikä suinkaan
mestaroidakseen häntä.

Kun Mokon osteriaamiainen oli syöty, alkoivat isommat pojat


jälleen järjestää ja panna tavaroita kokoon. Pienemmät taas
tallustelivat virralle varustettuina ongenvavoilla ja verkoilla. Mutta
heidän saaliinsa ei ollut suuri. He eivät näet olleet vielä oikein
harjaantuneet.

Mutta väsyksissä he olivat palatessaan alukseen, ja niin olivat isot


pojatkin. Kun aurinko laski mailleen ja tuli pimeä, kömpi joka mies
vuoteeseen ja vaipui sikeään uneen. Ainoastaan William ja Baxter
jäivät kannelle, sillä tänä yönä oli heidän vahtivuoronsa.

Molemmat pikkupojat kulkivat edestakaisin aluksen kovasti


kallistuneella kannella ja juttelivat karkottaakseen uneliaisuuden.
Siitä he olivat yhtä mieltä, että päivä oli käytetty reippaasti. Miten
paljon uutta he olivatkaan nähneet! Ja kuinka hauska oli pitää huolta
itsestään!

Mutta kuitenkin: heidän ajatellessaan kotiaan ja vanhempiaan,


jotka nyt kotona Uudessa Seelannissa unettomina surivat kadonneita
poikiaan, viilsi tuska Baxterin ja Williamin sydäntä.

Jospa he olisivat voineet huutaa monen peninkulman päähän yli


meren:
"Me elämme ja voimme hyvin, rakas isä ja äiti!"

Mutta kaikki yhteydet olivat katkenneet. Koti oli aivan liian


kaukana.

Entä tulevaisuus. Sitä he eivät uskaltaneet pitkälle ajatella. Mitä


saattoivat he, viisitoista avutonta poikaa, tehdä voittaakseen
tuhannet vaikeudet, jotka heitä kaikkialla väijyivät?

Niin, kaikki oli todella synkkää ja lohdutonta.

Viimein alkoi taivaanranta valjeta. Ensimmäinen auringonsäde


pilkisti. Oli taaskin päivä.
VIIDES LUKU

Saari vai manner?

Saari vai manner? Se kysymys pyöri päivät päästään kaikkien


poikien aivoissa, sekä suurten että pienten.

Varsinkin Gordon, Henri ja Robert pohtivat tätä asiaa kerran


toisensa jälkeen. Mutta ei ollut niinkään helppo keksiä ratkaisevaa
vastausta, ennen kuin päästiin pitemmälle retkelle sisämaahan.

Eräästä seikasta he kuitenkin olivat selvillä, he eivät olleet


kuumassa vyöhykkeessä. Sen saattoi heti huomata pensaista ja
puista, joita niillä seuduin kasvoi. Puut olivat enimmäkseen tammia,
pyökkejä, honkia, koivuja ja kuusia, lisäksi oli koko joukko eri
myrttilajeja. Sellainen ei kasvullisuus ollut kuumissa maissa, sen he
tiesivät. Pikemminkin tämä maa sijaitsi Uutta Seelantiakin
etelämpänä.

Gordon oli asiaa perin pohjin harkittuaan tullut siihen tulokseen,


että toistaiseksi oli paras jäädä paikoilleen rannikolle. Tästä
kysymyksestä nousi kuitenkin ankara kiista, sillä Robert ja muutamat
muut levottomat halusivat kärsimättömästi lähteä matkaan niin pian
kuin mahdollista. Robert oli saanut päähänsä, että heidän täytyi
keksiä tie ihmisasunnoille, eikä tahtonut kuulla puhuttavankaan siitä,
että he jäisivät rannikolle. Hän oli joutua käsikähmään Henrin
kanssa, joka arveli, että oli turhaa otaksua asuttuja seutuja olevan
lähellä, ja oli sen vuoksi yhtä mieltä Gordonin kanssa siitä, ettei ollut
viisasta jättää laivaa noin vain.

"Parempi pyy pivossa kuin kaksi oksalla", väitti Henri.

"Älä viisastele pyinesi!" tokaisi Robert. "Kuka tietää, kuinka kauan


tämä laiva on tässä asuttavanamme? Kun ensimmäiset talvimyrskyt
puhkeavat…"

"Niin, mutta silloin kai mekin olemme jo poissa täältä", puuttui


Gordon puheeseen "Ja sitä paitsi te olette", hän lisäsi
rauhoittaakseen molempia yltiöpäitä, "minun luullakseni kumpikin on
oikeassa, sekä sinä Robert että Henri. Robert on oikeassa siinä, että
meidän on tehtävä kaikki mitä voimme oppiaksemme tuntemaan
maan, johon olemme näin yhtäkkiä joutuneet. Ja Henri on myös,
paha kyllä, oikeassa arvellessaan että me emme saa apua mistään.
Jos minä saan määrätä, odotamme vielä hetken aikaa ennen kuin
täydellä todella puuhaamme muuttoa. Mutta sillä aikaa voimme
tehdä pieniä retkiä sinne tänne, niin että ainakin vähän tunnemme
ympäristöämme."

"Kunpa vain olisi jokin oikein korkea vuori, jolta olisi laaja
näköala", sanoi Henri. Mutta sellaista ei valitettavasti ollut.
Voidakseen siis tähystellä ympäristöä Henrillä ei ollut muuta neuvoa
kuin kavuta jyrkälle rantatörmälle. Sen korkeimmalta harjalta hän
varmaankin saattoi nuorilla silmillään nähdä kauas, ja kenties hän
saattoi saada vastauksen polttavaan kysymykseen: saari vai manner.
"Mitä sinä Gordon ajattelet?" kysyi Henri. "Pitäisiköhän minun
yrittää kiivetä sinne?"

Gordonista ja kaikista muista tuuma oli hyvä. Mutta Robert oli


toista mieltä, hänen silmissään oli ehdotuksessa suuri vika, nimittäin
se, että se ei ollut hänen keksimänsä.

Mutta valitettavasti säät kävivät sateisiksi ja sumuisiksi, joten


Henrin täytyi toistaiseksi jättää retkensä. Niin kauan kuin kaikki oli
sumuvaipan peitossa, ei olisi ollut mitään hyötyä kiivetä.

Mutta eipä silti ettei hänellä olisi ollut kyllin työtä "päämajassa".
Hän piti huolen siitä, että osterinkalastusta ja oikeata kalanpyyntiä
harjoitettiin järkevien sääntöjen mukaan, niin että jokaisella
pikkupojalla oli oma erityinen tehtävänsä. Oli varottava, ettei koti-
ikävä saisi liian suurta tilaa nuorten haaksirikkoisten mielessä, ja sen
tähden Henri tahtoi aina vain yhtä: työtä.

Itse hän ei suinkaan laiskotellut. Hän ja Gordon olivat aamusta


iltaan työssä pitääkseen "asunnon" laivassa siistinä ja järjestyksessä.
Alkoi jo vähitellen tulla kylmä, minkä vuoksi oli välttämätöntä tukkia
joka halkeama, niin että oli lämmin ja hyvä. Toisellakin tavoin
koetettiin torjua kylmyyttä. Mokon, joka oli oikea tuhattaituri, Henri
määräsi vaatturiksi, hänen oli ommeltava pikkupojille vaatteita
merimiesten paksuista nutuista. Pikku neekeripoika panikin kaiken
taitonsa liikkeelle ja käytti ahkerasti neulaa, lankaa, saksia ja
sormustinta. Hänen uutteruutensa nähtiinkin selvästi eräänä
päivänä, kun Costar, John, Tom ja Edvard ilmestyivät pukeutuneina
kummallisiin kömpelöihin tamineihin, joista ei tietänyt olivatko ne
housuja vai hameita, mutta joka tapauksessa ne olivat lämpimiä.
Yhä lujemmin pikkupojat kiintyivät Henriin, he ymmärsivät kaikki,
etteivät he voineet saada parempaa ystävää. Varsinkin Jack,
Robinsonin harrastaja, auttoi väsymättä Henriä työssä sekä sisällä
että ulkona. Ja Henri sai monet kerrat nauraa oikein sydämensä
pohjasta ystävälleen, jonka suu kävi lakkaamatta. Jack piti näet
pitkiä esitelmiä siitä, mitä Robinson heidän sijassaan olisi tehnyt ja
kuinka hänen kallisarvoisesta kirjastaan saattoi löytää monta hyvää
neuvoa erilaisiin tilanteihin.

Paul auttoi myös uskollisesti veljeään. Mutta pieni poika oli


kokonaan kadottanut iloisen mielensä, ja se huolestutti Henriä.
Paulista saattoi usein huomata, että hän oli itkenyt, mutta jos joku
kysyi, mikä häntä vaivasi, häneltä sai aina saman vastauksen: ei
mikään!

Ei Henrikään saanut veljeltään muuta vastausta, ja kuitenkin


heidän välillään oli ennen vallinnut täysi luottamus.

Näinä sadepäivinä viettivät Robert, William, Webb ja Cross melkein


kaiken aikansa metsästysretkillä. He vainosivat töyrään lintuvilinää.
Ja tietysti heidän metsästysintonsa oli hyödyllinen: mitä enemmän
ruokaa tuotiin Mokon kojuun, sen parempi! Mutta paha kyllä, nuo
neljä metsästäjää kävivät päivä päivältä yhä omapäisemmiksi ja
itserakkaammiksi. Robert pani heidän päänsä pyörälle ja kiihotti
heitä yhä enemmän Gordonia ja Henriä vastaan.

Paha kyllä, sille ei voinut mitään. Molemmat järkevät pojat, joukon


itseoikeutetut päälliköt, saattoivat vain toivoa, että yksimielisyys
vähitellen itsestään palaisi ja että Robert huomaisi paremmaksi
pysyä sovussa kuin riidalla lisätä onnettomuutta.
Muuten Robert oli ollut aivan oikeassa kerskuessaan
metsästystaidostaan. Hän ampui vähintään yhtä monta lintua kuin
William, Cross ja Webb yhteensä. Mutta kylläpä hän siitä ylvästelikin.
Panilla, joka myös oli metsästysretkillä mukana, oli täysi työ hakea
ammutut linnut, jotka viruivat pitkin rantaäyrästä.

Kun metsämiehet sitten palasivat, tarkasti Moko saaliin kappale


kappaleelta, ja varsinkin alussa hän sai tarkoin valikoida mitä ottaa
talouteen, mitä hylätä. Pikku metsästäjät eivät näet ymmärtäneet
vielä, mitkä linnut maistuivat hyvälle, ja sen vuoksi he toivat lokkeja
ja tiiroja ja muita sellaisia lintuja, joita Moko ei voinut ollenkaan
käyttää.

Muuten Gordon oli kieltänyt Mokoa pitämästä heitä liioilla


herkuilla. Heidän oli nyt jokaisen, vieläpä herkkusuisen Costarinkin,
aikaa myöten totuttava kehnoon ravintoon. Eihän sitä tiennyt vaikka
he joutuisivat vielä näkemään nälkääkin.

Maaliskuun puolivälissä ilma muuttui vihdoinkin. Ikäviä sadepäiviä


seurasi säteilevä auringonpaiste. Kaikesta päättäen töyräältä oli nyt
mainio näköala itään päin iltapuolella, kunhan vain ensin pääsisi sen
laelle.

15. maaliskuuta osoitti ilmapuntari illalla "kaunista säätä". Tämän


huomatessaan Henri päätti lähteä päämääräänsä kohti varhain
seuraavana aamuna ennättääkseen takaisin ennen pimeää.

Hän tahtoi toteuttaa aikeensa aivan yksin. Gordon olisi kyllä


mielellään seurannut ystäväänsä, mutta hän ei uskaltanut jättää
pienimpiä yksin kotiin Robertin kanssa, joka helposti olisi voinut
keksiä hullutuksia.
Ennen päivänkoittoa Henri oli jalkeilla, ja samaan aikaan kun
ensimmäinen päivänsäde välkkyi meren nyt rauhallisilla laineilla, hän
lähti matkaan varustuksenaan paksu sauva ja revolveri, jolla hän
hädän tullen saattoi puolustautua. Sitä paitsi hänellä oli laivan paras
kaukoputki, ja hänen laukkunsa Moko oli ahtanut täyteen evästä,
jolla hän saattoi virkistää itseään retkellä. Vesipullokaan ei ollut
unohtunut.

Henri astui ripein askelin eteenpäin pitkin rantaa. Hän oli arvioinut
olevansa töyrään huipulla kahdeksan aikaan.

Niin nopeasti ei matka kuitenkaan käynyt. Mitä kauemmaksi hän


joutui siltä paikalta, minne "Eteenpäin" oli ajautunut, sitä
kapeammaksi ja kivisemmäksi kävi rantaäyräs. Viimein hänen täytyi
vaivalloisesti kavuta yli limaisten merikasvien ja suurten, sileiden
kivien. Hän ei kuitenkaan menettänyt rohkeuttaan, harppoi vain
eteenpäin niin nopeasti kuin pääsi, mutta pian hänelle selvisi, ettei
hän ainakaan kello 8:ksi saavu perille.

Jospa hän vain pääsisi sinne ennen nousuvettä. Mutta se saattoi


kyllä ottaa tiukalle. Pian oli tie niin vaikeakulkuista, että hänen täytyi
riisua sekä saappaat että sukat ja kahlata eteenpäin polvia myöten
vedessä.

Kulkiessaan hän piti silmänsä valppaasti auki. Muun muassa hän


huomasi, että näillä seuduin oikein vilisi riistaa. Minne hän
katsoikaan, hän näki aina metsäkyyhkysiä ja sorsia, vieläpä
merileijoniakin. Ne lekottivat kareilla auringonpaisteessa ja tirkistivät
kummissaan kutsumatonta vierasta, joka harppoi eteenpäin
rantaäyräällä. Henri ymmärsi kaikesta, etteivät nämä pulskat eläimet
tietäneet ihmisistä eivätkä metsästyksestä mitään. Niin, tietysti
"Eteenpäin" oli ajautunut saareen. Valitettavasti.
Vihdoinkin hän seisoi sillä paikalla, missä jyrkkä rannikko pisti
pitkälle mereen muodostaen korkean niemekkeen. Täällä hän näki
koko joukon lintuja, joita hän ei koskaan ennen ollut nähnyt Hän
tunsi ne kuitenkin heti luonnonopista, ne olivat pingviinejä. Henri
mietti. Mitenkä olikaan, eikö näiden kummallisten kömpelöiden
olentojen kotipaikka ollut kaukana etelässä? Oli. Mutta ehkä ne olivat
vain poikenneet hiukan pohjoiseen päin? Ei, ei suinkaan, tiesihän
Henri kirjoistaan, etteivät pingviinit lähteneet lennoille, ja sen hän
itsekin saattoi käsittää katsellessaan niiden pieniä lyhyitä siipiä, joita
ne istuessaan räpyttelivät. Mutta silloinhan tämä maa ehkä ei
ollutkaan niin pohjoisessa kuin hän ja hänen toverinsa olivat
ajatelleet. Siinä kai oli arvoituksen ratkaisu. Myrsky oli ajanut laivan
kauemmaksi etelään kuin he olivat luulleet.

"Niin, niin", tuumi Henri. "Kerran kai koittaa sekin päivä, jolloin
meille selviää, minne päin maailmaa oikeastaan olemme joutuneet.
Mutta nyt minun täytyy koettaa pyrkiä vähän korkeammalle."

Ja niin Henri alkoi kiivetä, mutta ei hän ollut kauankaan noussut,


kun jo huomasi olevansa liian väsynyt kiivetäkseen jyrkkää tietöntä
töyrästä heti ylös asti. Sen vuoksi hän istahti lepäämään ja haukkasi
hiukan eväistään.

Kun hän oli syönyt ja levähtänyt kyllikseen, hän ryhtyi uudella


innolla kapuamaan. Monta kertaa oli hyvin vaikea saada jalansijaa,
mutta hän tahtoi päästä ylös, ja vähitellen hänen onnistuikin
saavuttaa töyrään harja.

"Ohhoh! Sepä oli kova urakka", tuumi Henri ja vaipui väsyneenä


maahan. "Mutta enpä sittenkään taittanut niskaani."
Ensi työkseen hän asetti kaukoputken siimalleen ja tähysteli
ympäri kaikille ilmansuunnille, eniten kuitenkin itään. Siintäisiköhän
vesi silläkin suunnalla?

Mutta oli jotenkin vaikea nähdä itään. Niin kauas kuin silmä kantoi,
oli maa laakeata. Töyräs, jolla hän seisoi, vietti tasaisesti maan
puolelle ja siellä täällä kohosi suuria, tummia metsiä. Henri tähysteli,
tähysteli, mutta tasangot ja metsät ulottuivat aina näköpiiriin asti.
Olisikohan tämä mannerta?

Pohjoisessa Henri näki korkean niemekkeen, jonka juurella


rantaäyräs välkkyi valkoisena ja laajana kuin hieta-aavikko.

Etelässä ei ollut muuta nähtävissä kuin ääretön jono soita toinen


toisensa vieressä.

Henri oli puoleksi äkeissään, puoleksi iloissaan. Tavallaan hän oli


mielissään siitä, ettei idän puolella todellakaan näkynyt vettä. Mutta
samassa hän pahoitteli sitä, ettei voinut viedä täyttä varmuutta
tovereilleen. Sillä hän tiesi, että kun hän palaa, olisi toverien
ensimmäinen kysymys:

"Saari vai manner?"

Ja nyt hän ei voinut kiertelemättä vastata: "Manner!" Hän saattoi


vain sanoa, että oli otaksuttavaa, että näytti siltä jne.

Hän loi katseensa länteen päin; sinisenä ja mahtavana lepäsi meri


laskevan auringon hohteessa. Yhtäkkiä hän nosti kaukoputken
silmälleen.

Tuolla kaukana näkyi laivoja! Huolellisesti hän kuivasi kaukoputken


lasit ja tuijotti taas kaukaisuuteen. Mutta mitä tämä oli — laivat eivät
liikkuneet paikaltaan! Ei, nyt hänelle selvisi kaikki, hänen näkönsä oli
pettänyt. Mustat pilkut, joita hän ensin oli luullut laivoiksi, olivat
kolme pikkusaarta joiden ohi "Eteenpäin" muutamia päiviä sitten oli
kulkenut kenenkään niitä huomaamatta. Siis taaskin uusi pettymys!

Kello kävi kolmea. Oli jälleen pakoveden aika, ja Henrin täytyi


lähteä "kotiin" päin; muuten saattoi pimeä hänet yllättää.

Mutta ennen kuin hän alkoi laskeutua töyrästä alaspäin, hän loi
vielä kerran ympäristöön tarkan silmäyksen kaukoputkella.

Ja mitä hän näkikään silloin! Nyt, kun aurinko oli menossa


mailleen, näkyi idässä sininen, välkkyvä juova, josta ei voinut
erehtyä.

Se oli meri!

Tämä kauhistava huomio pani Henrin kädet vapisemaan niin


ankarasti, että hän oli pudottaa kaukoputken. Nyt hänellä vihdoinkin
oli varma tieto. Nyt hän tiesi niin varmaan kuin kaksi kertaa kaksi on
neljä, että "Eteenpäin" oli ajautunut autioon saareen Tyynessä
meressä. Mistä oli nyt apua odotettavissa? Hän ja hänen toverinsa
eivät koskaan pääse pois tältä maailman kulmalta.

Henri ei vielä milloinkaan ollut kadottanut rohkeuttaan siinä


määrin kuin tällä hetkellä, mutta hänen täytyi kuin täytyikin purra
hammasta ja pitää pää pystyssä.

Sitten hän lähti astumaan rantaan päin raskain askelin,


masentuneena. Viiden tunnin kuluttua hän oli aluksessa, missä
neljätoista hartaasti odottavaa poikaa heti kerääntyi hänen
ympärilleen kuulemaan uutisia.
KUUDES LUKU

Neuvottelu

Niin saivat nyt kaikki kuulla sen surullisen tosiasian, että he olivat
ajautuneet saareen. Ja samalla he ymmärsivät, että pelastuksen
toivo oli nyt hälvennyt melkein olemattomiin. Salamana valtasi
kaikki, sekä suuret että pienet, sama ajatus: nyt oli tosi edessä, nyt
sai jokainen näyttää, mihin kykeni.

Joukossa oli kuitenkin muuan, johon Henrin uutiset vaikuttivat


aivan toisin kuin muihin. Robert oli koko päivän ollut sysimustalla
tuulella siitä syystä, ettei häntä Henrin sijasta ollut lähetetty
tähystysretkelle. Nytkin hän mukisi jotain siihen suuntaan, että
"Henrikin saattoi erehtyä, joku toinen olisi saattanut tuoda aivan
päinvastaisia tietoja".

Mutta Henri tiesi kyllä käyttäneensä silmiään ja kaukoputkeaan


taitavasti. Hän oli varma siitä, ettei ollut erehtynyt — he olivat
ajautuneet saareen. Ja idässä välkkyvän veden takaa ei näkynyt
merkkiäkään maasta. Kaikki oli yhtenä taivaana ja merenä.

You might also like