як зцегокати результати двох функцій?
от є одна функція, котра малює перший квадрат, є друга, котра малює другий. І на картинці сказано. що якщо об'єднати їх, то вийде те, що намальоване на третьому квадраті, але як то треба об'єднувати?
озьдо мій код
void drawNoise()
{
loadPixels();
for(int i =0; i<width; i++)
{
int c=0;
for(int j =0; j<height; j++)
{
c = (int)(cosine(0,1, -1+(i/(float)width)*2f)*255f);
pixels[i*width+j] = color(c,c,c,255);
}
}
updatePixels();
}
float cosine(float from, float to, float m)
{
float m2 = (1f-cos(m*PI-PI))/2f;
return from + (to-from)*m2;
}
він малює отаке
якщо всередині другого циклу замінити i на j, то воно буде малювати це ж саме, тільки в горизонтальному напрямку.
І ось я спробував "об'єднати" ці дві картинку в одну
спочатку перемноживши
for(int i =0; i<width; i++)
{
int c=0,c1=0;
for(int j =0; j<height; j++)
{
c = (int)(cosine(0,1, -1+(i/(float)width)*2f)*255f);
c1 = (int)(cosine(0,1, -1+(j/(float)width)*2f)*255f);
c*=c1;
pixels[i*width+j] = color(c,c,c,255);
}
}
і отримав ось таке
потім беручи мінімальне значення, як основне
for(int i =0; i<width; i++)
{
int c=0,c1=0;
for(int j =0; j<height; j++)
{
c = (int)(cosine(0,1, -1+(i/(float)width)*2f)*255f);
c1 = (int)(cosine(0,1, -1+(j/(float)width)*2f)*255f);
c=min(c, c1);
pixels[i*width+j] = color(c,c,c,255);
}
}
і отримав ось таке
а потім беручи середнє значення
for(int i =0; i<width; i++)
{
int c=0,c1=0;
for(int j =0; j<height; j++)
{
c = (int)(cosine(0,1, -1+(i/(float)width)*2f)*255f);
c1 = (int)(cosine(0,1, -1+(j/(float)width)*2f)*255f);
c=(int)((c+c1)/2f);
pixels[i*width+j] = color(c,c,c,255);
}
}
і отримав ось таке
А потрібного результату так і не домігся.