GithubHelp home page GithubHelp logo

joseluis / bitmappers-companion Goto Github PK

View Code? Open in Web Editor NEW

This project forked from epilys/bitmappers-companion

0.0 2.0 0.0 25.7 MB

zine/book about bitmap drawing algorithms and math with code examples in Rust

License: GNU General Public License v3.0

Makefile 0.46% TeX 35.24% Rust 64.27% Shell 0.03%

bitmappers-companion's Introduction

A Bitmapper's Companion - zine/book about bitmap drawing algorithms and math with code examples in Rust

A small zine/book written in LaTeX. In progress. See Building section below for how to build.

View current PDF build here

Click to show planned contents
  1. Introduction
  • Data representation
  • Displaying pixels to your screen
  • Bits to byte pixels
  • Loading graphics files in Rust
  • Including xbm files in Rust
  1. Points And Lines
  • Distance between two points
  • Equations of a line
    • Line through a point 𝑃 = (π‘₯𝑝, 𝑦𝑝) and a slope π‘š
    • Line through two points
  • Distance from a point to a line
    • Using the implicit equation form
    • Using an 𝐿 defined by two points 𝑃1, 𝑃2
    • Using an 𝐿 defined by a point 𝑃𝑙 and angle Μ‚πœƒ
    • Find perpendicular to line that passes through given point
  • Angle between two lines
    • Intersection of two lines
    • Line equidistant from two points
    • Normal to a line through a point
  1. Points And Line Segments
  • Drawing a line segment from its two endpoints
  • Drawing line segments with width
  • Intersection of two line segments
    • Fast intersection of two line segments
  • Points, Lines and Circles
  • Equations of a circle
  • Bounding circle
  1. Curves other than circles
  • Parametric elliptical arcs
  • BΓ©zier curves
  1. Points, Lines and Shapes
  • Union, intersection and difference of polygons
  • Centroid of polygon
  • Polygon clipping
  • Triangle filling
  • Flood filling
  1. Vectors, matrices and transformations
  • Rotation of a bitmap
    • Fast 2D Rotation
  • 90Β° Rotation of a bitmap by parallel recursive subdivision
  • Magnification/Scaling
    • Smoothing enlarged bitmaps
    • Stretching lines of bitmaps
  • Mirroring
  • Shearing
    • The relationship between shearing factor and angle
  • Projections
  1. Addendum
  • Faster Drawing a line segment from its two endpoints using Sym- metry
  • Joining the ends of two wide line segments together
  • Composing monochrome bitmaps with separate alpha channel data
  • Orthogonal connection of two points
  • Join segments with round corners
  • Faster line clipping
  • Space-filling Curves
    • Hilbert curve
    • SierpiΕ„ski curve
    • Peano curve
    • Z-order curve
    • flowsnake curve
  • Dithering
    • Floyd-Steinberg
    • Atkinson dithering
  • Marching squares

Samples

cover_sample

thumb_sample

Cover

Thumb index overview

frontmatter_sample

frontmatter_sample2

Frontmattercontents

page_sample

bezier interactive demo

Page spreadBezier interactive demo

Building

Run make, output will be in the ./build directory.

To run the rust example binaries, first you can inspect them with ls ./src/bin/, for example:

$ ls ./src/bin
atkinsondither.rs
beams.rs
bezierglyph.rs
bezier.rs
boundingcircle.rs
bresenham.rs
distance_between_two_points.rs
floyddither.rs
fonts.rs
hilbert.rs
introduction.rs
rotation.rs
scale.rs
shearing.rs
smooth_scale.rs
xbmtors.rs
zcurve.rs

Then execute one with cargo run --bin for example cargo run --bin atkinsondither.

bitmappers-companion's People

Contributors

epilys avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.