研究了一下代码中实际光线追迹部分:
a = (UD->n) * (UD->n) * FD->k + 1;
b = ((UD->n)/FD->cv) - (UD->x) * (UD->l) - (UD->y) * (UD->m);
c = (UD->x) * (UD->x) + (UD->y) * (UD->y);
rad = b * b - a * c;
if (rad < 0) return(FD->surf); /* ray missed this surface */
if (FD->cv > 0) t = c / (b + sqrt(rad));
else t = c / (b - sqrt(rad));