алгоритм — C ++: Chaos Game: правильная отрисовка точек на пирамиде

Так что у меня возникли небольшие проблемы — я понимаю алгоритм игры хаос, получил 3 очка, настроенный в форме пирамиды. Все остальное легко, просто возьмите текущую точку и случайный бросок 1-3 и переместитесь на полпути от текущей точки к a, b или c, в зависимости от броска. Но я испытываю затруднения с (как вы можете видеть на рисунке, обведенном красным) точками, которые изображены правильно, но просто идут прямо вверх. Как мне заставить его выровняться к вершине пирамиды?

Может быть, проще использовать GLine, который получил четыре параметра для этого (x, y, x, y)?

введите описание изображения здесь

введите описание изображения здесь

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

Решение

Вы не меняете свою позицию х. Вы можете сделать это, рассчитав обратный наклон линии между начальной точкой и конечной точкой (вершиной пирамиды).

Просто используйте что-то вроде:

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

Тогда ваш расчет для позиции х будет:

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

Конечно, это без ваших переменных, но я надеюсь, что вы поняли идею.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector