0
私は以下を実行しようとしています: C++でppmファイルを作成する必要があります。このファイルは、(色のグラデーションのような)色をsmooshする必要があります。 これまでのところ、ファイルを作成することができました。それは、私が望むほとんどの色のsmooshでppmを返します。私は問題がforループにあると思う。前もって感謝します。カラースモーク(ppmでC++)
#include <iomanip>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct Color
{
int red;
int green;
int blue;
};
void smoosh(int rows, int cols, Color leftColor, Color rightColor, string filename);
int main()
{
Color leftColor;
Color rightColor;
int rows;
int cols;
cout << "Left Color: " << endl;
cin >> leftColor.red >> leftColor.green >> leftColor.blue;
cout << "Right Color: " << endl;
cin >> rightColor.red >> rightColor.green >> rightColor.blue;
cout << "Height: " << endl;
cin >> rows;
cout << "Width: " << endl;
cin >> cols;
string filename;
cout << "File Name: " << endl;
cin >> filename;
smoosh(rows, cols, leftColor, rightColor, filename);
return 0;
}
void smoosh(int rows, int cols, Color leftColor, Color rightColor, string filename)
{
ofstream fout;
fout.open(filename);
fout << "P3" << endl;
fout << cols << " " << rows << endl;
fout << "255" << endl;
int i;
int j;
for (i = 0; i <= rows; i++)
{
for (j = 0; j <= cols; j++)
{
int r;
int g;
int b;
r=static_cast<float>(leftColor.red)+((static_cast<float>(j)/cols)*(static_cast<float>(rightColor.red)-static_cast<float>(leftColor.red)));
g=static_cast<float>(leftColor.green)+((static_cast<float>(j)/cols)*(static_cast<float>(rightColor.green)-static_cast<float>(leftColor.green)));
b=static_cast<float>(leftColor.blue)+((static_cast<float>(j)/cols)*(static_cast<float>(rightColor.blue)-static_cast<float>(leftColor.blue)));
fout<<r<<" "<<g<<" "<<b<<" ";
}
}
}
私はそれのように見えるようにしようとしています何:
あなたの問題がより具体的になりますか?どのようにして正確な色勾配を知ることができますか? – amanuel2
申し訳ありませんが、あなたはこれを試すことができます: 左カラー:255 255 0 右カラー:200 0 125 身長:100 幅:500 ファイル名:黄色から赤にグラデーションを返す必要がありexample.ppm –
。 –