Я пишу программу, которая может нарисовать линию между двумя точками с закрашенными кружками. Круги:
- не должны перекрывать друг друга
- быть как можно ближе друг к другу
- и центр каждого круга должен быть на линии.
Я написал функцию для создания кругов, но у меня проблемы с вычислением положения каждого круга, чтобы они правильно выстроились
void addCircles(scrPt endPt1, scrPt endPt2)
{
float xLength, yLength, length, cSquare, slope;
int numberOfCircles;
// Get the x distance between the two points
xLength = abs(endPt1.x - endPt2.x);
// Get the y distance between the two points
yLength = abs(endPt1.y - endPt2.y);
// Get the length between the points
cSquare = pow(xLength, 2) + pow(yLength, 2);
length = sqrt(cSquare);
// calculate the slope
slope = (endPt2.y - endPt1.y) / (endPt2.x - endPt1.x);
// Find how many circles fit inside the length
numberOfCircles = round(length / (radius * 2) - 1);
// set the position of each circle
for (int i = 0; i < numberOfCircles; i++)
{
scrPt circPt;
circPt.x = endPt1.x + ((radius * 2) * i);
circPt.y = endPt1.y + (((radius * 2) * i) * slope);
changeColor();
drawCircle (circPt.x, circPt.y);
}
Вот что выдает приведенный выше код:
Я совершенно уверен, что проблема заключается в этой строке, которая задает значение у круга:
circPt.y = endPt1.y + (((radius * 2) * i) * slope);
Любая помощь будет принята с благодарностью