# Javascript

### FABRIK Algorithm (2D)

The FABRIK algorithm is an amazingly clever solution to the Inverse Kinematics problem – how to adjust the joints of an arm to reach a target location.

In this tutorial, I go over how the core algorithm works in 2D, building up from simple concepts.

### Polygon Clipping (Part 2)

My previous polygon clipping tutorial dove into the Greiner-Hormann clipping algorithm. Unfortunately, this algorithm fails at common cases… so let’s revist the problem and try again.

The F. Martinez 2008 algorithm handles coincident edges (unlike Greiner-Hormann), but it still has some minor goofiness. Let’s solve this problem once and for all.

### Polygon Clipping (Part 1)

Polygon clipping is an interesting problem: how do you intersect, union, or diff two polygons?

My first attempt was a failure:

Polygon Clipping - Part 1 (Greiner-Hormann)

So I researched and developed another algorithm, which handles every case:

Polygon Clipping - Part 2 (Modified F. Martinez 2008)

### Shunting Yard (Part 3)

Let’s continue adding to our Shunting Yard code base.

In Part 2, we created operator precedence. This allowed us to delay application of operators indefinitely, using a stack. Next, we’ll focus on adding parentheses, so that the end-user can manually override precedence.

### Shunting Yard (Part 2)

Let’s continue building a general purpose Shunting Yard algorithm.

We left off with bare-bones skeleton that implements a shunt to delay building of the abstract syntax tree (AST). Our skeleton left a lot to be desired. For this article, we’ll implement operator precedence.

Please read Part 1 first, since the code here builds directly on the source from that article.

### Shunting Yard (Part 1)

A magical algorithm for parsing expressions.

- Part 1: Basic Skeleton
- Part 2: Precedence
- Part 3: Parenthesis
- Part 4: Unary Operators (
*not written!*) - …

### Two-Dimensional Bin Packing

Given a collection of different sized images, how can you efficiently pack them into one big image?

Brute-forcing the problem is too expensive - so here we come up with a simple heuristic that works pretty well.

### How to Fix Banding in Gradients

Photoshop’s gradient algorithm can have banding artifacts when drawing subtle gradients. The fix: dithering.