1
4

3 に答える 3

0

For each cell, you know from which cell you came from. This means you know from which side you came from. Calculating z at the intersection of the green line and a given grid line seems trivial.

于 2012-07-27T23:43:08.383 に答える
0

Bresenham Line Algorithmの 3D 拡張が機能するようです。X を反復処理し、線分の Y コンポーネントと Z コンポーネントのエラーを個別に追跡して、対応する X 値ごとに Y 値と Z 値を決定します。Z の累積エラーが、最小/最大の範囲外であることを示す重大なレベルに達したときに停止します。

于 2012-07-27T21:16:00.183 に答える
0

いい方法を思いつきました。関数の先頭に追加します。

float fzoffset=end.z-start.z;
Point2<float> deltaZ(fzoffset/fabs(end.x-start.x), fzoffset/fabs(end.y-start.y));
Point2<float> currentOffset((step.x>0?start.x:start.x+1)*m_gridresolution-start.x, (step.y>0?start.y:start.y+1)*m_gridresolution-start.y);

currentDistance.x/.y がインクリメントされるループ内に、以下を追加します。

currentOffset.x+=m_gridresolution;  //When stepping in the x axis
currentOffset.y+=m_gridresolution;  //When stepping in the y axis

次に、各ステップで z を計算します。

z=currentOffset.x*deltaZ.x+start.z;  //When stepping in the x axis
z=currentOffset.y*deltaZ.y+start.z;  //When stepping in the y axis
于 2012-07-30T18:24:59.680 に答える