2012-11-11 79 views
0

所以我有一點麻煩 - 我理解混沌遊戲的算法,得到3分,以金字塔形式設置。剩下的很容易,只要取得當前點和1-3的任意滾動,並根據滾動,從當前點中途移動到a,b或c。但是我遇到了困難(正如你在紅色概述的圖中看到的那樣)點正確繪製,但是直線上升。我如何讓它對準金字塔的頂部?C++:混沌遊戲:金字塔對齊點要正確繪製

也許用這個(x,y,x,y)有四個參數的GLine比較容易嗎?

enter image description here

enter image description here

double playGame(double newPointX, double &newPointY, GWindow &display) 
{ 

int roll = randomInteger(DICE_LOW, DICE_HIGH); 

// WEST 
if (roll == 1) { 

} 

// EAST 
else if (roll == 2) { 


} 
// NORTH 

else if (roll == 3 && newPointY > LIMIT) { 
    display.drawOval(newPointX, 
        POINT_NORTH + (newPointY/2), 
        1, 1); 

    newPointY = (newPointY/2); 
    cout << newPointY << endl; 
    return newPointX; 
} 

return NULL; 

}

+0

你問你如何使它跟隨連接金字塔的左下角和上角點的線? – Richard

+0

並且在這裏無關東西卷的代碼? – Richard

+0

是的,如果它向北滾動,它需要遵循金字塔的點。北,東,西只是意味着它從當前點的任何一點到中途取決於滾動 –

回答

1

你是不是改變你的x位置。您可以通過計算起點和終點(金字塔頂部)之間的直線的反斜率來實現此目的。

只需使用類似:

float inverseSlope = (xTop - xLeft)/(yTop - yLeft); 

然後你計算x位置應該是:

xPosition = (yPosition * inverseSlope) + xLeft; //xLeft being your start position 

這是一個沒有你的課程變量,但我希望你的想法。

+0

該死的!在深入研究算法思想之前,我需要學習代數和微積分課程。 –

+0

對於一些算法理解一些基本的代數概念很重要,但對於許多其他算法而言,只有相當數量的邏輯可以幫助您完成。 –