C++ (Qt)float CalcReflection( const Point3D & pt, const Point3D & reflectionDir, const vector <Point3D> & samples, float minCos, float dropoff ){ float sum = 0.0f; for (size_t i = 0; i < samples.size(); ++i) { Point3D dir = (samples[i] - pt).normalize(); // направление точка - сампл float theCos = dotProduct(reflectionDir, dir); // cos с направлением отражения if (theCos < minCos) continue; theCos = (theCos - minCos) / (1.0f - minCos); // нормировка sum += pow(theCos, dropoff); // интенсивность отражения 1 сампла } return sum / samples.size();}