Your solution works great (of course)!
Generally speaking, when should I be use (and not use) [0], [1], [2]? I thought 3D position was an array.
Also, should I be using degreesToRadians?
In the meantime, I came up with this. But it feels clunky:
x = thisComp.layer("green").transform.position[0];
y = thisComp.layer("green").transform.position[1];
z = thisComp.layer("green").transform.position[2];
input = thisComp.layer("solid").transform.rotation;
inputLow = -45;
inputHigh = 45;
outputLow = -100;
outputHigh = 100;
m = linear(input,inputLow,inputHigh,outputLow,outputHigh);
[x, y+m, z]