gpt4 book ai didi

c++ - Julia 设置 C++ 颜色

转载 作者:行者123 更新时间:2023-11-30 03:19:57 26 4
gpt4 key购买 nike

我目前正在处理一项任务,我必须在 C++ 中以顺序、并行和 OpenCL 的方式生成一个 Julia 集。我已经设法生成了一个图像,但是我使用颜色的方式非常无效关于我目前如何改进代码的颜色部分的任何想法?下面是我的代码的顺序部分,如果能帮助我改进颜色设置方式,我们将不胜感激

void sequentialJulia(const complex<float>  C, const UINT size = 1000, 
const UINT MAX_ITERATIONS = 100, const float limit = 1.7f) {
int start_s = clock();// starts the timer
// Setup output image
fipImage outputImage;
outputImage = fipImage(FIT_BITMAP, size, size, 24);
UINT bytesPerElement = 3;
BYTE* outputBuffer = outputImage.accessPixels();
vector<int> colors{ 100, 140, 180, 220, 225 };// this sets the intsity of the image, if i was to remove 225 the image would be darker
//vector<int> colors{9, 19, 29, 39, 49 }; //THIS DOESNT WORK DO NOT UNCOMMENT
//RGBQUAD color;
complex<float> Z;

std::cout << "Processing...\n";
for (UINT y = 0; y < size; y++) {
//tracking progress;
cout << y * 100 / size << "%\r";
cout.flush();
for (UINT x = 0; x < size; x++) {

Z = complex<float>(-limit + 2.0f * limit / size * x, -limit + 2.0f * limit / size * y);
UINT i;
for (i = 0; i < MAX_ITERATIONS; i++) {
Z = Z * Z + C;
if (abs(Z) > 2.0f) break;
}
if (i < MAX_ITERATIONS ) { //only changing red byte
// bytes per element 9 = blue
// bytes per element 2 = red
// bytes per element 7 = green
outputBuffer[( y * size + x) * bytesPerElement + 9] = colors[i % 5];

}


}

}

cout << "Saving image...\n";
ostringstream name;
name << "..\\Images\\" << C << " size=" << size << " mIterations=" << MAX_ITERATIONS << " sequential19.png" ;
cout << "saving in: " << name.str().c_str() << "\n";
outputImage.save(name.str().c_str());

cout << "...done\n\n";
int stop_s = clock();
cout << "time: " << (stop_s - start_s) / double(CLOCKS_PER_SEC) * 1000 << endl;// stops the timer once code has executed
}

最佳答案

据我所知,90 年代初期的分形生成器(例如:Fractint)使用迭代救助索引作为 256 种红-绿-蓝颜色表的索引(这是一个常见的限制,因为无论如何,当时大多数显示器都仅限于这种尺寸的调色板。)

所以也许你可以定义一个 RGB 颜色表,然后在这些表上查找你如何执行 colors[i % 5]; 现在,除了它会输出一个 RGB 三元组颜色[i % TABLE_SIZE].red.green.blue。我认为最好从单独的文件加载调色板。

我一直想知 Prop 有 1000 个条目的调色板的分形会是什么样子。我觉得很漂亮。

编辑:IIRC Fractint 有一个调色板编辑模式,可以将它们保存到文件中。

关于c++ - Julia 设置 C++ 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53270046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com