- Llenar estructuras - Centrar Objeto Vector3D CentroG = (Max(M) - Min(M))/2; for each v in M.Vertexes v = v - CentroG; ------------------------------------ zMean = (t.v0.z + t.v1.z + t.v2.z)/3 ------------------------------------- // Cuando hice +con la ruedita Matrix m = new MatrixScale(3,3,3) |3 0 0 0 |0 3 0 0 |0 0 3 0 |0 0 0 1 MatrizAcumulada = MatrizAcumulada * m ---------------------------- -- PAINT for each v in M.Vertexes v = vOrig * MatrizAcumulada ; Collection.sort(M.Triangles, zMean); for each T in M.Triangles { Vector3D n = Normal(T.v0, T.v1,T.v2); mV0 = Mapear(T.v0 , AnchoP, AltoP, Ancho3D,Alto3D) mV1 = Mapear(T.v1 , ....) mV2 = Mapear(T.v2 , ....) // LightPos = Vector3D // dot [-1 .. 1] Vector3D CT = (T.v0 + T.v1 + T.v2)/3; // El producto escalar, tiene que estar normalizado float intens =max(0, dot(n , LightPos - CT)) ; Color color = new Color(colorMesh.R*intens*colorLuz.R + luzAmbiente.R , colorMesh.G*intens*colorLuz.G + luzAmbiente.G, colorMesh.B*intens*colorLuz.B + luzAmbiente.B); Graphics.draw(mV0, mV1, mV2 , Color) }