I've been following the excellent Experilous procedural planet generation post, trying to recreate it in Java using libGDX. My planet is simpler, as it lacks any distortion of the mesh. It's just hexagons and 12 pentagons right now. However, I've been running into trouble at the part:
The next step was to take the motion of plates and calculate the type and degree of stress at each point along the boundaries between the plates. For each point, I calculated the movement of each plate at that particular position. Subtracting the two gave me the relative movement. I then determined the component of that movement that exactly perpendicular to the plate boundary at that location. This corresponded to the amount of relative movement that was directly pushing the plates into each other or pulling them directly away. This I classified as pressure, and it could be either positive (collision) or negative (separation). I also determined the relative movement that was parallel to the boundary and stored this as shear. (Only the magnitude of this movement was relevant, so shear was strictly non-negative.)
The picture is the example of each tile's motion following this calculation of drift and spin for the tectonic plates. However, the math to actually calculate this completely escapes me. Given that I have the tiles grouped into tectonic plates, a random center (of a tile) for each plate, the center of every tile, and the normal vector of every tile, how could I achieve the same effect depicted here?