C ++:混沌游戏:金字塔对齐点可以正确绘制

时间:2012-11-11 23:39:47

标签: c++ algorithm

所以我遇到了一些麻烦 - 我理解混沌游戏的算法,得到3分,以金字塔形式设置。其余的很简单,只需取当前点和1-3的随机滚动,然后从当前点移动到a,b或c,取决于滚动。但是我很难(正如你在红色中所示的图片中看到的那样)点正确绘制,但只是直接向上。如何让它与金字塔顶部对齐?

使用一个有四个参数的GLine(x,y,x,y)可能更容易吗?

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;

}

1 个答案:

答案 0 :(得分:1)

您没有更改x位置。您可以通过计算起点和终点(金字塔顶部)之间的直线的反斜率来实现此目的。

只需使用:

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

然后你对x位置的计算将是:

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

这当然没有你的变数,但我希望你能得到这个想法。