2012-04-18 22 views
0

私は、3つの浮動小数点x、y、z(3次元空間座標)を取るpoint3構造体を持っています。C++の点リストを反復する

私は、ポイントのリスト内の各要素のx、y、z値を変換する関数を記述しようとしています。

私はイテレータを正しく書いたとは思わないので、誰でもリストを反復してリストの各要素のコンポーネントを変更する方法を明確にすることができますか?

私はこのポストC++ How to loop through a list of structs and access their propertiesを見て、これは私の問題に答えたと思ったが、解決策は機能しませんでした。

//Translates the face by dx, dy, dz coordinates 
list<point3> translateFace(list<point3> lop, float dx, float dy, float dz) 
{ 
    list<point3>::iterator iter; 

    for (iter = lop.begin() ; iter != lop.end(); iter++){ 
     iter->x - dx; 
     iter->y - dy; 
     iter->z - dz; 
    } 
    return lop; 
} 

私も上記のリンクで提案された解決策を試してみましたが、まだ動作しませんでした:

は、ここに私のコードです。 リターンロープはforループの内側か外側か?私は縄跳び以外のものを返すべきですか?

for (iter = lop.begin() ; iter != lop.end(); iter++){ 
    (*iter).x - dx; 
    (*iter).y - dy; 
    (*iter).z - dz; 
    } 
return lop; 
+1

"私はC++を初めました"あなたがC++を初めてお使いの場合は、グラフィックスプログラミングはどこから始めるべきではありません。 –

+1

私はグラフィクスプログラミングの初心者だとは言わなかった。 – Murkantilism

+0

あなたが他の言語のグラフィックをうまく使っていても、C++の学習を始めるにはまだまだ良い場所ではありません。 –

答えて

2

あなたの計算の結果格納し、実際にじゃないように私には見える:私はほとんどのコンパイラは投げるだろう望んでいるだろう

for (iter = lop.begin() ; iter != lop.end(); iter++){ 
    iter->x -= dx; 
    iter->y -= dy; 
    iter->z -= dz; 
} 

:これを試してみてください

for (iter = lop.begin() ; iter != lop.end(); iter++){ 
    iter->x - dx; 
    iter->y - dy; 
    iter->z - dz; 
} 

をこのような未使用の計算についての警告 - 可能であれば、コンパイラの警告レベルを上げてください。

+0

あなたは正しいです、ありがとう!なぜ私のコンパイラが何も言わなかったのか分かりませんが、私は設定を調整します! – Murkantilism

1

見てみましょう:

list<point3> translateFace(list<point3> lop, float dx, float dy, float dz) 
{ 
    list<point3>::iterator iter; 

    for (iter = lop.begin() ; iter != lop.end(); iter++){ 
     (*iter).x -= dx; 
     (*iter).y -= dy; 
     (*iter).z -= dz; 
    } 

    return lop; 
} 

はあなたがこれを行うと、あなたはその後、(C +返され、移動されLOPパラメータのローカルコピーを作成していることを知っていると仮定すると、正しいオプションであるべき+ 0x)またはコピーする変数(C++ 03)を設定します。例えば、(POINT3を構築するために3台のフロートをとると仮定):

point3 point(0.0, 0.3, 0.5); 
list<point3> face; 

face = translateFace(list<point3>(point), -0.5, -3.32, -7.5); 

座標±5、-3.02と-7.0と、点のみを保持するリストを含む面をもたらすはずです。

関連する問題