上图给出了\(xyz\)的取值范围,省了不少事.自己去找边界可就费死劲了.
我尝试通过纯粹的数学手段去计算边界,试了一天,结果屁都没搞出来.原来想的通过法向量的方向确定一个边界,就是下面这个3个方程:
接下来还要算一下曲面的法向量,因为在后期计算亮度时需要用到入射方向与曲面表面法向量的正弦值.实际上,曲面的法向量非常容易计算:
还记得等势面与电场线垂直的性质以及如何通过电势计算电场强度吗,跟上面这个式子是一样的.不过,这里坑也是有的,就像上面那样,有些地方的梯度为零.
着色或者是光照的问题下次再讨论,这里先直接用字符画个平面的心形.逻辑很简单:设定宽和高之后,遍历每个"像素",判断该像素是否在心内,若是,打印字符,若否,打印另一种字符.完整代码路径戳这里,最后再丢张效果图