babylon.sphericalpolynomial.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /// <reference path="../../../dist/preview release/babylon.d.ts"/>
  2. module BABYLON {
  3. export class SphericalPolynomial {
  4. public x: Vector3 = Vector3.Zero();
  5. public y: Vector3 = Vector3.Zero();
  6. public z: Vector3 = Vector3.Zero();
  7. public xx: Vector3 = Vector3.Zero();
  8. public yy: Vector3 = Vector3.Zero();
  9. public zz: Vector3 = Vector3.Zero();
  10. public xy: Vector3 = Vector3.Zero();
  11. public yz: Vector3 = Vector3.Zero();
  12. public zx: Vector3 = Vector3.Zero();
  13. public addAmbient(color: Color3): void
  14. {
  15. var colorVector = new Vector3(color.r, color.g, color.b);
  16. this.xx = this.xx.add(colorVector);
  17. this.yy = this.yy.add(colorVector);
  18. this.zz = this.zz.add(colorVector);
  19. }
  20. public static getSphericalPolynomialFromHarmonics(harmonics: SphericalHarmonics): SphericalPolynomial
  21. {
  22. var result = new SphericalPolynomial();
  23. result.x = harmonics.L11.scale(1.02333);
  24. result.y = harmonics.L1_1.scale(1.02333);
  25. result.z = harmonics.L10.scale(1.02333);
  26. result.xx = harmonics.L00.scale(0.886277).subtract(harmonics.L20.scale(0.247708)).add(harmonics.L22.scale(0.429043));
  27. result.yy = harmonics.L00.scale(0.886277).subtract(harmonics.L20.scale(0.247708)).subtract(harmonics.L22.scale(0.429043));
  28. result.zz = harmonics.L00.scale(0.886277).add(harmonics.L20.scale(0.495417));
  29. result.yz = harmonics.L2_1.scale(0.858086);
  30. result.zx = harmonics.L21.scale(0.858086);
  31. result.xy = harmonics.L2_2.scale(0.858086);
  32. return result;
  33. }
  34. }
  35. }