Cayley surface;
3rd form from http://www.mathcurve.com/surfaces/cayley/cayley.shtml

(%i1) cayley: (x^2 + y^2 + z^2) + 2 * x * y * z - 1 = 0;
Result

Ray intersection:

(%i2) eqn:expand(cayley), x = o[0] + t * d[0], y = o[1] + t * d[1], z = o[2] + t * d[2];
Result

(%i3) expand(coeff(lhs(eqn), t, 3));
Result

(%i4) expand(coeff(lhs(eqn), t, 2));
Result

(%i5) expand(coeff(lhs(eqn), t, 1));
Result

(%i6) expand(coeff(lhs(eqn), t, 0));
Result

Gradient (normal vector):

(%i7) diff(lhs(cayley), x, 1);
Result

(%i8) diff(lhs(cayley), y, 1);
Result

(%i9) diff(lhs(cayley), z, 1);
Result


Created with wxMaxima.