for(int index = 0;
index < pModel->numOfObjects; index++)
/* mengambil semua objek yang terlibat
*/
{
t3DObject *pObject = &(pModel->pObject[index]);
//dapatkan objeck
//
disinilah tempat dimana anda meletakkan semua memory yang dikehendaki
untuk mengira normal
Vec3f *pNormals = new Vec3f [pObject->numOfFaces];
Vec3f *pTempNormals = new Vec3f [pObject->numOfFaces];
pObject->pNormals = new Vec3f [pObject->numOfVerts];
for(int i=0; i < pObject->numOfFaces;
i++)// mengambil semua permukaan
objek yang terlibat
{
//Untuk membuang
code yang besar dan mewujudkawe extract the 3 points of this face
vPoly[0] = pObject->pVerts[pObject->pFaces[i].vertIndex[0]];
vPoly[1] = pObject->pVerts[pObject->pFaces[i].vertIndex[1]];
vPoly[2] = pObject->pVerts[pObject->pFaces[i].vertIndex[2]];
/*Sekarang
mari kita mengira permukaan normal (dengan mendapatkan 2 vektor
and mencari titik persilangan nya)*/
/*
Dapatkan vertor bagi poligon(anda hanya perlu 2 bahagian yang
normal) */
vVector1 = Vector(vPoly[0],
vPoly[2]);
vVector2 = Vector(vPoly[2], vPoly[1]); //
Dapatkan vertor yang kedua
/*
Pulangan nilai 2 vektor produk yang bersilang antara satu sama
lain(vektor normal, dan bukan verkor unit) */
vNormal = (vVector1^vVector2).Normalize();
pTempNormals[i] = vNormal; /* simpan
dan umpukkan nilai yang dikir di baris diatas dengan menggunakan
array untuk vertex normal */
pNormals[i] = vNormal;
// Umpukkan normal diatas kepada
List normal
}