我过早地发布了一个代码高尔夫挑战来使用这个数据集(只是茶壶)绘制犹他茶壶.(经过修订和发布的茶壶挑战)但是当我深入研究数据以便掀起一个小例子时,我意识到我不知道这些数据是怎么回事.我对2D中的Bezier曲线有很好的理解,实现了deCasteljau.但对于3D它的工作原理是否相同?
是! 它确实!
数据包含每个包含16个顶点的补丁.这些是如何布局的标准顺序?如果它们对应于2D曲线,则四个角点实际接触表面,其余12个是控制,对吧?
是!
我的"原始计划"是将形状简化为矩形,将它们投影到画布上,然后绘制灰色的填充形状,通过与光矢量垂直的贴片的点积计算.如果我将它简化到那么远,它甚至会看起来像茶壶吗?是否必须使用光线追踪来获得可识别的图像?
这是主观的.:-(
虽然这可能看起来像几个问题,但它们都是这一个问题的所有方面:"请,请好的Guru,在一些Bezier Patches上学习我?我需要知道什么才能画出茶壶?"
这是我到目前为止编写的代码.(使用此矩阵库:mat.ps)
%!
%%BoundingBox: 115 243 493 487
%-115 -243 translate
(mat.ps)run %include matrix library
/tok{ token pop exch pop }def
/s{(,){search{ tok 3 1 roll }{ tok exit }ifelse }loop }def
/f(teapot)(r)file def
/patch[ f token pop { [ f 100 string readline pop s ] } repeat ]def
/vert[ f token pop { [ f 100 string readline pop s …Run Code Online (Sandbox Code Playgroud)