2016-10-19 11 views
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<<" "; 
     } 
    } 
} 

私はそれのように見えるようにしようとしています何:

enter image description here

+0

あなたの問題がより具体的になりますか?どのようにして正確な色勾配を知ることができますか? – amanuel2

+0

申し訳ありませんが、あなたはこれを試すことができます: 左カラー:255 255 0 右カラー:200 0 125 身長:100 幅:500 ファイル名:黄色から赤にグラデーションを返す必要がありexample.ppm –

+0

。 –

答えて

0

[OK]を、問題は単にforループから "=" を取り除く解決しました。ありがとう

関連する問題