Skip to content

Commit dfbe39d

Browse files
authored
Merge pull request #7 from Elijah-Mikaelson-dev/master
Add files via upload
2 parents 3619f21 + 6962697 commit dfbe39d

File tree

1 file changed

+188
-0
lines changed

1 file changed

+188
-0
lines changed

Circle.cpp

Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
#include<stdio.h>
2+
#include<graphics.h>
3+
#include<conio.h>
4+
#include<math.h>
5+
#include<dos.h>
6+
7+
8+
int n=0;
9+
int *pixels=NULL;
10+
void Export2Pixels(int *pixels, int n)
11+
{
12+
FILE *fp = fopen("Pixels_mpcircle.txt", "w");
13+
fprintf(fp,"centre= %d ,%d\n",pixels[0], pixels[1]);
14+
fprintf(fp,"radius= %d\n\n",pixels[3]-pixels[2]);
15+
fprintf(fp, " x, y\n");
16+
17+
for(int i=0; i<n; i++)
18+
{
19+
fprintf(fp, "%d, %d\n", pixels[2*i+0], pixels[2*i+1]);
20+
}
21+
22+
fclose(fp);
23+
printf("Pixel coordinates exported to Pixels.txt successfully!\n");
24+
}
25+
26+
27+
void ExportSVG(int *pixels, int n, int width, int height)
28+
{
29+
int scale = 10;
30+
int margin = 100;
31+
int i;
32+
int x1 = pixels[0], x2 = pixels[0];
33+
int y1 = pixels[1], y2 = pixels[1];
34+
for(i=1; i<n; i++){
35+
if(x1>pixels[2*i+0]) x1=pixels[2*i+0];
36+
if(x2<pixels[2*i+0]) x2=pixels[2*i+0];
37+
if(y1>pixels[2*i+1]) y1=pixels[2*i+1];
38+
if(y2<pixels[2*i+1]) y2=pixels[2*i+1];
39+
}
40+
x1 *=scale; x2 *=scale;
41+
y1 *=scale; y2 *=scale;
42+
43+
FILE *fp = fopen("Circle.svg", "w");
44+
45+
fprintf(fp, "<svg width=\"%d\" height=\"%d\" viewBox=\"0 0 %d %d\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">",
46+
width,height,width,height);
47+
for(i=0; i<n; i++)
48+
{
49+
fprintf(fp,"\n<rect x=\"%d\" y=\"%d\" width=\"%d\" height=\"%d\" style=\"fill:blue;stroke:red;stroke-width:.30;fill-opacity:0.76;stroke-opacity:0.90\"/>", scale*pixels[2*i+0]-x1+100, scale*pixels[2*i+1]-y1+100, scale, scale);
50+
}
51+
52+
fprintf(fp, "\n </svg>\n");
53+
fclose(fp);
54+
printf("SVG created successfully!\n");
55+
}
56+
57+
void ExportHTML(int *pixels, int n, int width, int height)
58+
{
59+
int scale = 10;
60+
int margin = 100;
61+
int i;
62+
int x1 = pixels[0], x2 = pixels[0];
63+
int y1 = pixels[1], y2 = pixels[1];
64+
for(i=1; i<n; i++){
65+
if(x1>pixels[2*i+0]) x1=pixels[2*i+0];
66+
if(x2<pixels[2*i+0]) x2=pixels[2*i+0];
67+
if(y1>pixels[2*i+1]) y1=pixels[2*i+1];
68+
if(y2<pixels[2*i+1]) y2=pixels[2*i+1];
69+
}
70+
x1 *=scale; x2 *=scale;
71+
y1 *=scale; y2 *=scale;
72+
73+
FILE *fp = fopen("Circle.html", "w");
74+
fprintf(fp, "<!DOCTYPE html>\n<html>\n<body>\n");
75+
76+
77+
fprintf(fp, "<svg width=\"%d\" height=\"%d\" viewBox=\"0 0 %d %d\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">",
78+
width,height,width,height);
79+
for(i=0; i<n; i++)
80+
{
81+
fprintf(fp,"\n<rect x=\"%d\" y=\"%d\" width=\"%d\" height=\"%d\" style=\"fill:blue;stroke:red;stroke-width:.30;fill-opacity:0.76;stroke-opacity:0.90\"/>", scale*pixels[2*i+0]-x1+100, scale*pixels[2*i+1]-y1+100, scale, scale);
82+
}
83+
84+
fprintf(fp, "\n </svg>\n");
85+
fprintf(fp, "\n</body>\n</html>\n");
86+
fclose(fp);
87+
88+
printf("HTML created successfully!\n");
89+
}
90+
91+
int *midPointCircleDraw(int x_c, int y_c, int r,int *n)
92+
{
93+
int x,y,p;
94+
x=0;y=r;
95+
p=1.25-r;
96+
int *pixels = (int*)malloc(8*(x_c+1)*sizeof(int));
97+
int m=0;
98+
99+
pixels[2*m+0]=x_c;
100+
pixels[2*m+1]=y_c;
101+
m++;
102+
pixels[2*m+0]=x+x_c;
103+
pixels[2*m+1]=y+y_c;
104+
m++;
105+
pixels[2*m+0]=x+x_c;
106+
pixels[2*m+1]=-y+y_c;
107+
m++;
108+
pixels[2*m+0]=y+x_c;
109+
pixels[2*m+1]=x+y_c;
110+
m++;
111+
pixels[2*m+0]=-y+x_c;
112+
pixels[2*m+1]=x+y_c;
113+
m++;
114+
while(x<y)
115+
{
116+
if(p<0)
117+
p=p+2*x+1;
118+
else
119+
{
120+
p=p+2*x-2*y+1;
121+
y=y-1;
122+
}
123+
x=x+1;
124+
125+
pixels[2*m+0]=x+x_c;
126+
pixels[2*m+1]=y+y_c;
127+
m++;
128+
pixels[2*m+0]=x+x_c;
129+
pixels[2*m+1]=-y+y_c;
130+
m++;
131+
pixels[2*m+0]=-x+x_c;
132+
pixels[2*m+1]=y+y_c;
133+
m++;
134+
pixels[2*m+0]=-x+x_c;
135+
pixels[2*m+1]=-y+y_c;
136+
m++;
137+
pixels[2*m+0]=y+x_c;
138+
pixels[2*m+1]=x+y_c;
139+
m++;
140+
pixels[2*m+0]=y+x_c;
141+
pixels[2*m+1]=-x+y_c;
142+
m++;
143+
pixels[2*m+0]=-y+x_c;
144+
pixels[2*m+1]=x+y_c;
145+
m++;
146+
pixels[2*m+0]=-y+x_c;
147+
pixels[2*m+1]=-x+y_c;
148+
m++;
149+
}
150+
*n=m;
151+
printf("\nNumber of pixels = %d\n", *n);
152+
return pixels;
153+
}
154+
void display()
155+
{
156+
for(int i=0;i<n;i++)
157+
{
158+
putpixel(pixels[2*i+0],pixels[2*i+1],7);
159+
}
160+
printf("Waiting for you to close the display-window...\n");
161+
}
162+
163+
int main()
164+
{
165+
int gd=DETECT,gm,r,x_c,y_c;
166+
printf("\nEnter the co-ordinate of Centre of Circle::");
167+
scanf("%d%d",&x_c,&y_c);
168+
printf("\nEnter the radius of the circle::");
169+
scanf("%d",&r);
170+
initgraph(&gd,&gm,NULL);
171+
// To draw a circle of radius r centred at (x_c, y_c) with radius r
172+
pixels=midPointCircleDraw(x_c,y_c,r,&n);
173+
int width=5000;
174+
int height=5000;
175+
ExportSVG(pixels, n, width, height);
176+
ExportHTML(pixels, n, width, height);
177+
Export2Pixels(pixels, n);
178+
179+
display();
180+
while (!kbhit( ))
181+
{
182+
delay(200);
183+
}
184+
return 0;
185+
}
186+
187+
188+

0 commit comments

Comments
 (0)