[C++] using "stb_image_write.h" to save RGB math[C++] using "stb_image_write.h" to save RGB math
📉
Collatz Conjecture
Week 16, 2026
#include "allheaders.hpp"
#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"
#define STB_IMAGE_WRITE_IMPLEMENTATION
#include "stb_image_write.h"
using namespace std;
void save_frame(int frame, uint8_t * data); // Saves image
bool compare(int a, int b);//function to sort sequence vector (decending)
int iRed, iGreen, iBlue, iSeq = 0;//iterators
int iRow, iCol = 1;//height,width
int iPixal = 0;//pixel number
int iSeed = 1;//pixal manipulator
vector Sequence;//stores largest number in Sequence
vector vRed;//store iRed
vector vGreen;//store iGreen
vector vBlue;//store iBlue
int main()
{
iRow = 0;
iCol = 0;
int b;
for(int a = 1; a <= 1000; ++a)
{
++iRow;
iCol = 0;
iRed, iGreen, iBlue = 0;
for(int b = 1; b <= 1000; ++b)
{
iPixal++;
iCol++;
iRed, iGreen, iBlue = 0;
iSeed = iPixal;
iSeq = 0;
while(iSeed > 1)
{
if((iSeed % 2) == 0)
{
Sequence.push_back(iSeed);
++iRed;
iSeed /= 2;
}
else
{
Sequence.push_back(iSeed);
++iGreen;
iSeed *= 3;
++iSeed;
}
sort(Sequence.begin(), Sequence.end(), compare);
iSeq = Sequence[0];
iBlue = iSeq / iPixal;
if(iSeed == 1)
{
iGreen += 1;
}
}
if(iRed > 255){iRed = 255;}
if(iGreen > 255){iGreen = 255;}
if(iBlue > 255){iBlue = 255;}
vRed.push_back(iRed);
vGreen.push_back(iGreen);
vBlue.push_back(iBlue);
Sequence.clear();
iRed = 0; iGreen = 0; iBlue = 0;
}
}
vRed[0] = 2;
vGreen[0] = 2;
vBlue[0] = 4;
cout << '\007';
cout << "size of vRed: " << vRed.size() << "\n";
uint8_t image_data[1000 * 1000 * 3];
iPixal = 0;
for (int y = 0; y < 1000; y++)
{
for (int x = 0; x < 1000; x++)
{
iPixal++;
image_data[3 * (y * 1000 + x)] = vRed[iPixal] ;
image_data[3 * (y * 1000 + x) + 1] = vGreen[iPixal] ;
image_data[3 * (y * 1000 + x) + 2] = vBlue[iPixal];
}
}
save_frame(1, image_data);
return 0;
}
bool compare(int a, int b)//sort for largest number in Sequence (decending)
{
return a > b;
}
void save_frame(int frame, uint8_t * data) // Saves image to file
{
string fileZ = "week16result.png";
stbi_write_png(fileZ.c_str(), 1000, 1000, 3, data, 1000 * 3);
return;
}