graphics.h库用于在程序中包含并促进图形操作。 graphics.h函数可用于绘制不同的形状,以不同的字体显示文本,更改颜色等等。使用graphics.h的功能,您可以制作图形程序,动画,项目和游戏。您可以绘制圆,线,矩形,条形图和许多其他几何图形。您可以使用可用功能更改其颜色并填充它们。
方法:
想法是将角度(椭圆要滑动通过的角度)减小一个整数值,并使用它们的周长之比来计算圆的半径所扫过的相应角度。
如何在屏幕上显示幻灯片:
- 在白色的计算点上绘制椭圆。
- 引入一些函数延迟(以毫秒为单位)。
- 通过使用黑色在同一点绘制椭圆来擦除上一个椭圆。
- 从步骤1开始重复。
下面是上述问题的C++表示形式
// C++ program to draw an Ellipse
// rotating over a Circle using graphics
#include
#include
#include
#include
#include
#include
using namespace std;
// Ellipse drawing function
void drawEllipse(int xc, int yc, int a, int b,
float alpha, int color)
{
float t = 3.14 / 180;
alpha = 360 - alpha;
setcolor(color);
int theta;
// Filling each pixel corresponding
// to every angle from 0 to 360
for (int i = 0; i < 360; i += 1) {
theta = i;
int x = a * cos(t * theta) * cos(t * alpha)
+ b * sin(t * theta) * sin(t * alpha);
int y = b * sin(t * theta) * cos(t * alpha)
- a * cos(t * theta) * sin(t * alpha);
putpixel(xc + x, yc - y, color);
}
}
// Function to calculate the position
// of ellipse after each rotation
void slidePattern(int xc, int yc, int r, int a, int b,
int alpha, float p, int color)
{
setcolor(color);
float t = 3.14 / 180;
float t1, t2, d;
float angle = (p * alpha);
// Calculation for center of Ellipse
t1 = cos(t * fmod(angle, 360));
t2 = sin(t * fmod(angle, 360));
t1 *= t1;
t2 *= t2;
t1 = t1 / (a * a);
t2 = t2 / (b * b);
d = sqrt(t1 + t2);
d = 1 / d;
int draw_x = xc + (r + d) * cos(t * alpha);
int draw_y = yc - (r + d) * sin(t * alpha);
int draw_ang = angle + alpha;
drawEllipse(draw_x, draw_y, a,
b, draw_ang, color);
}
// Function to increment the angle
// of rotation
void ellipseovercircle(int xc, int yc,
int r, int a, int b)
{
float theta = 0;
double h, p1;
// Calculating the ratio of
// perimeters of Ellipse and Circle
h = (a * a) + (b * b);
h /= 2;
p1 = sqrt(h);
p1 /= r;
p1 = 1 / (p1);
// by decreasing theta we can
// move Ellipse clockwise
for (;; theta -= 1) {
// Draw Ellipse at new location
// using White color
slidePattern(xc, yc, r, a, b,
theta, p1, WHITE);
circle(xc, yc, r); // Drawing Circle
delay(25); // Introducing delay
// Erase the existing Ellipse
slidePattern(xc, yc, r, a, b,
theta, p1, BLACK);
}
}
// Driver code
int main()
{
// Initialize graphics function
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
// maximum X-coordinate for the window
int maxx = getmaxx();
// maximum Y-coordinate for the window
int maxy = getmaxy();
// Start drawing from the mid of the screen
ellipseovercircle(maxx / 2, maxy / 2,
100, 40, 28);
closegraph();
return 0;
}
输出:
输出视频:
想要从精选的最佳视频中学习并解决问题,请查看有关从基础到高级C++的C++基础课程以及有关语言和STL的C++ STL课程。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。