numFaces - (numValsU - 1) * (numValsV - 1): // #of faces // количество граней

numNorms - numVerts: // for smooth shading -one normal per vertex // для гладкого закрашивания - одна нормаль на вершину

pt - new Point3[numVerts]: assert(pt !- NULL): // make space // выделяем пространство

face -new Face[numFaces]: assert(face !- NULL):
norm -new Vector3[numNorms]: assert(norm !- NULL):

6.7. Тематические задания

ford - 0. u - uMin; 1 < numValsU; u +- delU)
for(j - 0. v - vMiri; j < numValsV: v +- delV) {

int whichVert - 1 * numValsV + j: // index of the vertex and normal // индекс вершины и нормали // set this vertex: use functions X.Y.and Z // устанавливаем эту вершину: используем функции X, Y. Z

pt[whichVert].set(X(u. v). Y(u. v). Z(u. v)): // set the normal at this vertex: use functions nx.ny.nz // задаем нормаль в этой вершине: используем функции X. Y. Z

norm[whichVert].set(nx(u. v). ny(u. v). nz(u. v)):
norma1i ze(norm[wh i chVert]):
// make quadrilateral

// создаем четырехугольник

if(i > 0 && j > 0) // when to compute next face // когда вычислять следующую грань

{
int whichFace - (i - 1) * (numValsV - 1) + (j - 1): face[whichFace].vert - new VertexID[4]; assert(face[whichFace].vert !- NULL); face[whichFace].nVerts - 4; facefwhichFace].vert[0].vertlndex -
// same as norm index

// тот же самый индекс, что и у нормали

face[whichFace],vert[0].normIndex - whichVert:

fасе[wh i ch Face].ve rt[1].vertlndex -

face[whichFace].vert[l].normIndex - whichVert - 1:
face[whichFace].vert[2].vertlndex -
face[whichFace].vert[2].normIndex - whichVert - numValsV - 1: face[whichFace].vert[3].vertlndex -face[whichFace].vert[3].normIndex - whichVert - numValsV:
}
}
}

Примените полученную вами функцию к задаче построения какой-либо интересной поверхности вращения и поля высот.

Тематическое задание 6.14. Сузить, закрутить, изогнуть и расплющить

Уровень сложности III.

Полезно иметь метод управляемого деформирования (deforming) трехмерного объекта. Например, при анимации видно, как прыгающий резиновый мячик деформируется при ударе об пол и затем восстанавливает свою сферическую форму, когда подпрыгивает вновь. Или кусочек желе изгибается и дрожит, или флаг развевается от ветра. В таких случаях важно, чтобы эти деформации выглядели естественно, то есть подчинялись законам физики: закону сохранения массы, закону упругости и т. д. Моделирование, базирующееся на физике (physically based modeling), которое пытается воспроизвести поведение реальных объектов под действием различных сил, является необозримым и завораживающим предметом, которому посвящены многие книги и статьи, например, [Watt, 138, Bloomenthal, 33].


⇐ Предыдущая| |Следующая ⇒