【发布时间】:2017-01-11 04:15:08
【问题描述】:
我想在 C++ 中围绕它的中心旋转一个多边形。
我想要一个围绕其中心旋转的多边形,而不是旋转的结果。
但结果是旋转的多边形。
我的代码如下:
double pi = atan(1) * 4;
double radian = 180 / pi;
int N = 1;
double angle = radian * (N % 10);
double Sin = sin(angle);
double Cos = cos(angle);
int Radius = 60;
int xC = 256;
int yC = 256;
for (int i = 0; i < 10; i++) {
for (int k = 0; k < 10; k++) {
Draw1Dot(256+i, 256+k, 0.2f, 0.7f, 0.7f);
}
}
time_t start, end;
DrawCircle(Radius, xC, yC, Sin, Cos);
do {
time(&start);
end = start;
while (end - start != 3) {
void clear();
N++;
time(&end);
DrawCircle(Radius, xC, yC, Sin, Cos);
}
} while (N == 10);
我的目标是随着 N 的增加,圆围绕其中心旋转。
我使用 Sleep() 函数来获得平滑的移动效果。
-编辑-
有人想看 DrawCircle() 函数。
那个函数只是画圆,我就不写了。
绘图代码如下:
int Check = 1 - Radius;
int x = 0;
int y = Radius;
//circle edge drawing code
Draw1Dot(xC + x + (Radius * Cos), yC + y + (Radius * Sin), 1.f, 1.f, 1.f); //1
Draw1Dot(yC + y + (Radius * Cos), xC + x + (Radius * Sin), 1.f, 1.f, 1.f); //2
Draw1Dot(yC + y + (Radius * Cos), xC - x + (Radius * Sin), 1.f, 1.f, 1.f); //3
Draw1Dot(xC + x + (Radius * Cos), yC - y + (Radius * Sin), 1.f, 1.f, 1.f); //4
Draw1Dot(xC - x + (Radius * Cos), yC - y + (Radius * Sin), 1.f, 1.f, 1.f); //5
Draw1Dot(yC - y + (Radius * Cos), xC - x + (Radius * Sin), 1.f, 1.f, 1.f); //6
Draw1Dot(yC - y + (Radius * Cos), xC + x + (Radius * Sin), 1.f, 1.f, 1.f); //7
Draw1Dot(xC - x + (Radius * Cos), yC + y + (Radius * Sin), 1.f, 1.f, 1.f); //8
while (x <= y) {
x++;
if (Check < 0)
Check += (2 * x) + 1;
else {
Check += 2 * (x - y) + 1;
y--;
}
Draw1Dot(xC + x + (Radius * Cos), yC + y + (Radius * Sin), 1.f, 1.f, 1.f); //1
Draw1Dot(yC + y + (Radius * Cos), xC + x + (Radius * Sin), 1.f, 1.f, 1.f); //2
Draw1Dot(yC + y + (Radius * Cos), xC - x + (Radius * Sin), 1.f, 1.f, 1.f); //3
Draw1Dot(xC + x + (Radius * Cos), yC - y + (Radius * Sin), 1.f, 1.f, 1.f); //4
Draw1Dot(xC - x + (Radius * Cos), yC - y + (Radius * Sin), 1.f, 1.f, 1.f); //5
Draw1Dot(yC - y + (Radius * Cos), xC - x + (Radius * Sin), 1.f, 1.f, 1.f); //6
Draw1Dot(yC - y + (Radius * Cos), xC + x + (Radius * Sin), 1.f, 1.f, 1.f); //7
Draw1Dot(xC - x + (Radius * Cos), yC + y + (Radius * Sin), 1.f, 1.f, 1.f); //8
}
//Circle filling code
for (int y = -Radius; y <= Radius; y++) {
for (int x = -Radius; x <= Radius; x++) {
if (x*x + y*y <= Radius*Radius)
Draw1Dot(xC + x + Radius*Cos, yC + y + Radius*Sin, 1.f, 1.f, 1.f);
}
}
【问题讨论】:
-
DrawCircle()在哪里定义?请上传完整代码,以便我们自己尝试。 -
@AnmolSinghJaggi 编辑完成 :)
-
你在旋转一个圆圈吗?你不画任何多边形
-
围绕其中心旋转的圆圈..hmm,您希望看到什么? :)
-
Draw1Dot()定义在哪里?
标签: c++ image-rotation