Nell: An SVG Drawing Language
By Stefan Hollos and J. Richard Hollos
()
About this ebook
Nell is a language for describing two dimensional vector drawings. We have been using versions of the language for several years to create illustrations for books, webpages and various art projects. It can even be used as a tool for physics and math simulations and experiments.
We created the language because of our frustration with how tedious and time consuming it can be to create complex vector drawings. Why sit in front of a screen for hours clicking and dragging with a mouse when you can spend a few minutes thinking about your drawing, solving a few geometry and trigonometry problems and then writing a simple program that will create the drawing for you? It's less tedious and a lot more fun, plus you get to sharpen your math and programming skills.
The book comes with software that translates a drawing definition in the Nell language into an SVG file. The software is open source with a GPL license. It can be downloaded from the book's website.
Stefan Hollos
Stefan Hollos is a physicist and electrical engineer by training, and enjoys anything related to math, physics, engineering and computing. He also enjoys creating music and visual art, and being in the great outdoors. He is the author of 18 books.
Read more from Stefan Hollos
Creating Rhythms Rating: 5 out of 5 stars5/5Information Theory: A Concise Introduction Rating: 0 out of 5 stars0 ratingsCreating Melodies Rating: 0 out of 5 stars0 ratingsCoin Tossing: The Hydrogen Atom of Probability Rating: 0 out of 5 stars0 ratingsThe Enigma of the Crookes Radiometer Rating: 0 out of 5 stars0 ratings
Related to Nell
Related ebooks
Blender Add-on Cookbook Rating: 0 out of 5 stars0 ratingsMapping and Visualization with SuperCollider Rating: 5 out of 5 stars5/5Programming and Customizing the Multicore Propeller Microcontroller: The Official Guide Rating: 4 out of 5 stars4/5Basic Guide to Programming Languages Python, JavaScript, and Ruby Rating: 0 out of 5 stars0 ratingsMastering Erlang Programming: From Basics to Expert Proficiency Rating: 0 out of 5 stars0 ratingsCloning Internet Applications with Ruby Rating: 5 out of 5 stars5/5TypeScript Programming In Action: Code Editing For Software Engineers Rating: 0 out of 5 stars0 ratingsGeometry from Euclid to Knots Rating: 2 out of 5 stars2/5Dynamic Programming in Java: From Basics to Expert Proficiency Rating: 0 out of 5 stars0 ratingsString Theory: Black Holes, Holographic Universe And Mathematical Physics Rating: 0 out of 5 stars0 ratingsThe Eighth Wonder Rating: 0 out of 5 stars0 ratingsRetro Gaming with Raspberry Pi: Nearly 200 Pages of Video Game Projects Rating: 0 out of 5 stars0 ratingsEnquire Within Upon Everything The Great Victorian Domestic Standby Rating: 0 out of 5 stars0 ratingsMastering Functional Reactive Programming: Real-World Applications and Frameworks Rating: 0 out of 5 stars0 ratingsMastering Sublime Text Rating: 0 out of 5 stars0 ratingsAndroids: Build Your Own Lifelike Robots Rating: 0 out of 5 stars0 ratingsThe Encyclopedia of Monograms Rating: 4 out of 5 stars4/5Classical Geometry: Euclidean, Transformational, Inversive, and Projective Rating: 1 out of 5 stars1/5Mastering MySQL Database: From Basics to Expert Proficiency Rating: 0 out of 5 stars0 ratingsSundials: Their Construction and Use Rating: 4 out of 5 stars4/5An Elementary Survey of Celestial Mechanics Rating: 0 out of 5 stars0 ratingsJetpack Compose 1.5 Essentials: Developing Android Apps with Jetpack Compose 1.5, Android Studio, and Kotlin Rating: 0 out of 5 stars0 ratingsLearning Ext JS - Fourth Edition Rating: 0 out of 5 stars0 ratingsThe Android Game Developer's Handbook Rating: 0 out of 5 stars0 ratingsAdvanced Functional Programming: Mastering Concepts and Techniques Rating: 0 out of 5 stars0 ratingsPractical Mechanics for Boys Rating: 0 out of 5 stars0 ratingsAdvanced Julia Programming: Comprehensive Techniques and Best Practices Rating: 0 out of 5 stars0 ratingsMastering Three.js: A Journey Through 3D Web Development Rating: 0 out of 5 stars0 ratingsRacket Unleashed: Building Powerful Programs with Functional and Language-Oriented Programming Rating: 0 out of 5 stars0 ratingsFractal Delight Rating: 0 out of 5 stars0 ratings
Software Development & Engineering For You
Hand Lettering on the iPad with Procreate: Ideas and Lessons for Modern and Vintage Lettering Rating: 4 out of 5 stars4/5PYTHON: Practical Python Programming For Beginners & Experts With Hands-on Project Rating: 5 out of 5 stars5/5Python For Dummies Rating: 4 out of 5 stars4/5Level Up! The Guide to Great Video Game Design Rating: 4 out of 5 stars4/5Learn to Code. Get a Job. The Ultimate Guide to Learning and Getting Hired as a Developer. Rating: 5 out of 5 stars5/5How to Write Effective Emails at Work Rating: 4 out of 5 stars4/5Adobe Illustrator CC For Dummies Rating: 5 out of 5 stars5/5Coding All-in-One For Dummies Rating: 0 out of 5 stars0 ratingsDevOps For Dummies Rating: 4 out of 5 stars4/5Beginning Programming For Dummies Rating: 4 out of 5 stars4/5Python Handbook For Beginners. A Hands-On Crash Course For Kids, Newbies and Everybody Else Rating: 0 out of 5 stars0 ratingsSQL For Dummies Rating: 0 out of 5 stars0 ratingsOneNote: The Ultimate Guide on How to Use Microsoft OneNote for Getting Things Done Rating: 1 out of 5 stars1/5Thinking Beyond Coding Rating: 5 out of 5 stars5/5Git Essentials Rating: 4 out of 5 stars4/5RESTful API Design - Best Practices in API Design with REST: API-University Series, #3 Rating: 5 out of 5 stars5/5Arduino For Dummies Rating: 4 out of 5 stars4/5Agile Project Management: Scrum for Beginners Rating: 4 out of 5 stars4/5Essential Algorithms: A Practical Approach to Computer Algorithms Using Python and C# Rating: 5 out of 5 stars5/5Ry's Git Tutorial Rating: 0 out of 5 stars0 ratingsLearning R Programming Rating: 5 out of 5 stars5/5DevOps and Microservices: Non-Programmer's Guide to DevOps and Microservices Rating: 4 out of 5 stars4/5How to Build and Design a Website using WordPress : A Step-by-Step Guide with Screenshots Rating: 0 out of 5 stars0 ratings3D Printing For Dummies Rating: 4 out of 5 stars4/5
Reviews for Nell
0 ratings0 reviews
Book preview
Nell - Stefan Hollos
Nell: An SVG Drawing Language
by Stefan Hollos and J. Richard Hollos
Copyright © 2020 by Exstrom Laboratories LLC
All rights reserved. No part of this document may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage and retrieval system, without permission in writing from the publisher.
Abrazol Publishing
an imprint of Exstrom Laboratories LLC
662 Nelson Park Drive, Longmont, CO 80503-7674 U.S.A.
Publisher's Cataloging in Publication Data
Hollos, Stefan
Nell: An SVG Drawing Language / by Stefan Hollos and J. Richard Hollos
p. cm.
ISBN: 978-1-887187-40-4
Library of Congress Control Number: 2020932538
1. Computer graphics 2. SVG (Document markup language) 3. Programming languages (Electronic computers)
I. Title. II. Hollos, Stefan.
T385 .H65567 2020
N7433.8 .H65567 2020
006.66 HOL
About the Cover: Images created with NELL.
Table of Contents
Introduction
Drawing Definition File
Polygons
Circles
Ellipses
Arcs
Bezier Curves
Gallery
Useful Identities
Acknowledgments
About the Authors
Thank You
Introduction
Nell is a language for describing two dimensional vector drawings. We have been using versions of the language for several years to create illustrations for books, web pages and various art projects. It can even be used as a tool for physics and math simulations and experiments. You can for instance do optics ray tracing with it. There are a couple of examples later in the documentation that show how to do this.
We created the language because of our frustration with how tedious and time consuming it can be to create complex vector drawings. Why sit in front of a screen for hours clicking and dragging with a mouse when you can spend a few minutes thinking about your drawing, solving a few geometry and trigonometry problems and then writing a simple program that will create the drawing for you. It's less tedious and a lot more fun, plus you get to sharpen your math and programming skills.
A big advantage of using Nell is that you can parameterize the drawing. Lengths, angles, numbers of polygons, circles, ellipses, arcs, and curves can all be parameterized so you can easily experiment with different values and quickly see how the drawing changes. Another advantage is the simplicity of the language itself. It's so simple that it's easy to write programs that create Nell programs. We have used this technique to explore domains of possible drawings and have created thousands of interesting patterns in the process.
We usually use Nell to create just the basic outline of a complex drawing. Then if we want to decorate the drawing with different colors and line styles we use an interactive vector drawing program such as Inkscape. This is because there is currently no way to set stroke width and color for individual elements of a drawing or to set the fill color for individual polygons, circles and ellipses. We have thought about adding colors and styles to Nell but have decided against it to keep the language as simple as possible. Would you like to see colors and styles in the Nell language? Let us know what you think.
To understand how to use Nell it is helpful to be at least vaguely familiar with the rudiments of Cartesian or analytic geometry. This is geometry in which points, lines and curves are defined in a coordinate system. Coordinates are sets of numbers that are used to locate the position of a point in the coordinate system. Equations are often used to relate coordinates thus defining a set of points that make up a curve. Just the basics of high school algebra and geometry is all you need to use Nell. To be a power user you probably also need to know a little basic trigonometry.
Drawings in Nell are defined in a standard two dimensional Cartesian space where the positive x