Turn up the noise Very few algorithms are award-winning, and even fewer have won an Academy Award. Today’s topic however, can claim this rare honor. In 1982, Ken Perlin developed the Perlin Noise algorithm to generate random procedural textures for Disney’s sci-fi classic Tron. In 1997, Ken won the Academy Award for technical achievement, in large part thanks to his eponymous noise algorithm. In this post, I’ll explore several types of noise, and the modifications we can apply to them.
Since I started learning D3.js as part of the 100 Days of Code project the number one question I’ve gotten is: how are you learning D3? I’ve had lots of people that want to know what learning resources I’m using, what my process is, and what I suggest for how to start on D3. I don’t think I’m any sort of expert, and I certainly don’t claim to have the ultimate learning process, but now that I’m halfway through the project I decided to share what I’ve learned.
I love R and I love ggplot, but there’s always been one thing that’s really irked me: the real lack of support for complex fills, filters, or other graphics effects goodness. In R, there’s basically only support for perfectly rendered shapes and solid fills. If you want something like a gradient fill, blur, or texture, you’re left to your lonesome. I really felt the pain when I discovered the magic of SVG filters and then sadly realized I didn’t have all this awesomeness in R.
How it all started Take me to the project!
I started using Mapbox earlier this year and I was hooked from the start. I’ve dabbled in geospatial analysis and visualization before, but I was always put off by the huge barrier of entry. Most spatial analysis requires massive amounts of domain expertise, knowledge of specialized data sources, and a huge time investment to gather the data, clean it, and harmonize it to all work well together.
This month marks the halfway point of my 12 Months of aRt project, and I want to take the opportunity to reflect on the experience so far and share what I’ve learned with you. This past week I was preparing my lightning talk for useR2019, where I’ll be talking about artistic coding in R, and it gave me a chance to realize how much I’ve learned from this project in such a short time.
This month, I’m picking up where I left off last time. If you haven’t seen my previous work on glyphs, go read part 1 of this story. When we left off, I had written an algorithm that drew two types of glyphs with a lot of randomness such that no two glyphs were the same (ok, technically they could be the same, but the probability is very small). I had some grand plans for those algorithms, some of which I’ve achieved, and others are, shall we say, sidelined.
Graphics devices are weird, and operating systems are even weirder. If you are a Mac of Linux user, lucky you, you can go on your merry way! But if you’re a Windows user and you’ve ever screamed at your computer “Why the #&*$ wont my fonts work!?!?” or “Why are my plots so &#**ing pixelated!?!”, then read on. Note this is accurate as of May 2019. There is a lot of development happening on ggplot and graphics in R, courtesy of Thomas Lin Pederson and the rest of the ggplot team.
Welcome to my latest aRt project, which is very much a work-in-progress. I usually try to wrap things up in a nice bow before posting them, but this one was just too big for that, so I decided to split it over two months. This is part 1, in which I define a base algorithm for drawing various types of glyphs.
I honestly don’t know what to call these, they started out with the idea of “orbits” and then evolved into something more like summoning circles.
The Data Visualization Society recently held their inaugural challenge. My final submission was a switchback style timeline that visualized each member as a watercolor splotch. I made the base graphic in R, and applied stylings to the SVG using manual editing and Inkscape. I got several questions about how I made it, so here’s the story from concept to final design.
Concept From first looking at the DVS challenge data, I knew I would make a timeline.
Pi is an infinite, non-repeating decimal – meaning that every possible number combination exists somewhere in pi. Converted into ASCII text, somewhere in that string of digits is the name of every person you will ever love, the date, time, and manner of your death, and the answers to all the great questions of the universe. Converted into a bitmap, somewhere in that infinite string of digits is a pixel-perfect representation of the first thing you saw on this earth, the last thing you will see before your life leaves you, and all the moments, momentous and mundane, that will occur between those points.