#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<process.h>
int drawhouse(float hx[],float hy[])
{ int i;
int cx=getmaxx()/2;
int cy=getmaxy()/2;
for(i=0;i<4;i++)
line(cx+hx[i],cy-hy[i],cx+hx[i+1],cy-hy[i+1]);
line(cx+hx[4],cy-hy[4],cx+hx[0],cy-hy[0]);
}
void initscreen(float hx[],float hy[])
{ line(0,getmaxy()/2,getmaxx(),getmaxy()/2);
line(getmaxx()/2,0,getmaxx()/2,getmaxy());
drawhouse(hx,hy);
}
void main()
{ int gd=DETECT,gm,ch,i,px,py,lx1,lx2,ly1,ly2;
float sx,sy,mx,my,x,y,m,c,thx[5],thy[5];
float hx[]={40.0,10.0,10.0,70.0,70.0};
float hy[]={80.0,50.0,10.0,10.0,50.0};
initgraph(&gd,&gm,"c:\tc");
initscreen(hx,hy);
do
{ printf("\nEnter the choice from below");
printf("\n1.Scale wrt 0,0");
printf("\n2.Scale wrt arb pt");
printf("\n3.reflect abt pt");
printf("\n4.exit");
scanf("%d",&ch);
switch(ch)
{ case 1: cleardevice();
initscreen(hx,hy);
for(i=0;i<=4;i++)
{ thx[i]=hx[i];
thy[i]=hy[i];
}
printf("\nEnter the scale value of x and y axis");
scanf("%f%f",&sx,&sy);
for(i=0;i<=4;i++)
{ thx[i]=thx[i]*sx;
thy[i]=thy[i]*sy;
}
drawhouse(thx,thy);
break;
case 2: cleardevice();
initscreen(hx,hy);
for(i=0;i<=4;i++)
{ thx[i]=hx[i];
thy[i]=hy[i];
}
printf("\nEnter the ref point");
scanf("%d%d",&px,&py);
printf("\nEnter the scale value of x and y axis");
scanf("%f%f",&sx,&sy);
for(i=0;i<=4;i++)
{ thx[i]-=px;
thy[i]-=py;
}
for(i=0;i<=4;i++)
{ thx[i]=thx[i]*sx;
thy[i]=thy[i]*sy;
}
for(i=0;i<=4;i++)
{ thx[i]+=px;
thy[i]+=py;
}
drawhouse(thx,thy);
break;
case 3: cleardevice();
initscreen(hx,hy);
printf("\nEnter the line with m amd c value");
scanf("%f%f",&m,&c);
if(m>0||m<0)
{ lx1=0;
ly1=c;
lx2=(getmaxy()-c)/m;
ly2=getmaxy();
}
if(m==0)
{ lx1=0;
ly1=c;
lx2=getmaxx();
ly2=c;
}
if(m>=9999)
{ lx1=lx2=c;
ly1=0;
ly2=getmaxy();
}
for(i=0;i<=4;i++)
{ thx[i]=hx[i];
thy[i]=hy[i];
}
for(i=0;i<=4;i++)
{ x=thx[i];
y=thy[i];
if(m==0)
{ thx[i]=x;
thy[i]=c+(c-y);
}
if(m>0||m<0)
{ thx[i]=2*((m*m*y+x)-c*m*m)/((1+m*m)*m)-x;
thy[i]=2*(c+m*m*y+x)/(1+m*m)-y;
}
if(m>=9999)
{ thy[i]=y;
thx[i]=c+(c-x);
}
}
drawhouse(thx,thy);
line(getmaxx()/2+lx1,getmaxy()/2-ly1,getmaxx()/2+lx2,getmaxy()/2-ly2);
break;
case 4: exit(1);
}
}while(ch!=4);
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8Y29uaW8uaD4KI2luY2x1ZGU8Z3JhcGhpY3MuaD4KI2luY2x1ZGU8cHJvY2Vzcy5oPgoKaW50IGRyYXdob3VzZShmbG9hdCBoeFtdLGZsb2F0IGh5W10pCnsgIGludCBpOwogICBpbnQgY3g9Z2V0bWF4eCgpLzI7CiAgIGludCBjeT1nZXRtYXh5KCkvMjsKICAgZm9yKGk9MDtpPDQ7aSsrKQogICAgICAgbGluZShjeCtoeFtpXSxjeS1oeVtpXSxjeCtoeFtpKzFdLGN5LWh5W2krMV0pOwogICBsaW5lKGN4K2h4WzRdLGN5LWh5WzRdLGN4K2h4WzBdLGN5LWh5WzBdKTsKfQp2b2lkIGluaXRzY3JlZW4oZmxvYXQgaHhbXSxmbG9hdCBoeVtdKQp7ICBsaW5lKDAsZ2V0bWF4eSgpLzIsZ2V0bWF4eCgpLGdldG1heHkoKS8yKTsKICAgbGluZShnZXRtYXh4KCkvMiwwLGdldG1heHgoKS8yLGdldG1heHkoKSk7CiAgIGRyYXdob3VzZShoeCxoeSk7Cn0KCnZvaWQgbWFpbigpCnsgICAgICAgaW50IGdkPURFVEVDVCxnbSxjaCxpLHB4LHB5LGx4MSxseDIsbHkxLGx5MjsKICAgZmxvYXQgc3gsc3ksbXgsbXkseCx5LG0sYyx0aHhbNV0sdGh5WzVdOwogICBmbG9hdCBoeFtdPXs0MC4wLDEwLjAsMTAuMCw3MC4wLDcwLjB9OwogICBmbG9hdCBoeVtdPXs4MC4wLDUwLjAsMTAuMCwxMC4wLDUwLjB9OwogICBpbml0Z3JhcGgoJmdkLCZnbSwiYzpcdGMiKTsKICAgaW5pdHNjcmVlbihoeCxoeSk7CiAgIGRvCiAgIHsgICAgcHJpbnRmKCJcbkVudGVyIHRoZSBjaG9pY2UgZnJvbSBiZWxvdyIpOwogICAgICAgcHJpbnRmKCJcbjEuU2NhbGUgd3J0IDAsMCIpOwogICAgICAgcHJpbnRmKCJcbjIuU2NhbGUgd3J0IGFyYiBwdCIpOwogICAgICAgcHJpbnRmKCJcbjMucmVmbGVjdCBhYnQgcHQiKTsKICAgICAgIHByaW50ZigiXG40LmV4aXQiKTsKICAgICAgIHNjYW5mKCIlZCIsJmNoKTsKICAgICAgIHN3aXRjaChjaCkKICAgICAgIHsgICAgY2FzZSAxOiBjbGVhcmRldmljZSgpOwogICAgICAgICAgICAgICBpbml0c2NyZWVuKGh4LGh5KTsKICAgICAgICAgICAgICAgZm9yKGk9MDtpPD00O2krKykKICAgICAgICAgICAgICAgeyAgICB0aHhbaV09aHhbaV07CiAgICAgICAgICAgICAgICAgICB0aHlbaV09aHlbaV07CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgcHJpbnRmKCJcbkVudGVyIHRoZSBzY2FsZSB2YWx1ZSBvZiB4IGFuZCB5IGF4aXMiKTsKICAgICAgICAgICAgICAgc2NhbmYoIiVmJWYiLCZzeCwmc3kpOwogICAgICAgICAgICAgICBmb3IoaT0wO2k8PTQ7aSsrKQogICAgICAgICAgICAgICB7ICAgICAgIHRoeFtpXT10aHhbaV0qc3g7CiAgICAgICAgICAgICAgICAgICB0aHlbaV09dGh5W2ldKnN5OwogICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIGRyYXdob3VzZSh0aHgsdGh5KTsKICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgIGNhc2UgMjogY2xlYXJkZXZpY2UoKTsKICAgICAgICAgICAgICAgaW5pdHNjcmVlbihoeCxoeSk7CiAgICAgICAgICAgICAgIGZvcihpPTA7aTw9NDtpKyspCiAgICAgICAgICAgICAgIHsgICAgdGh4W2ldPWh4W2ldOwogICAgICAgICAgICAgICAgICAgdGh5W2ldPWh5W2ldOwogICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIHByaW50ZigiXG5FbnRlciB0aGUgcmVmIHBvaW50Iik7CiAgICAgICAgICAgICAgIHNjYW5mKCIlZCVkIiwmcHgsJnB5KTsKICAgICAgICAgICAgICAgcHJpbnRmKCJcbkVudGVyIHRoZSBzY2FsZSB2YWx1ZSBvZiB4IGFuZCB5IGF4aXMiKTsKICAgICAgICAgICAgICAgc2NhbmYoIiVmJWYiLCZzeCwmc3kpOwogICAgICAgICAgICAgICBmb3IoaT0wO2k8PTQ7aSsrKQogICAgICAgICAgICAgICB7ICAgICAgIHRoeFtpXS09cHg7CiAgICAgICAgICAgICAgICAgICB0aHlbaV0tPXB5OwogICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIGZvcihpPTA7aTw9NDtpKyspCiAgICAgICAgICAgICAgIHsgICAgICAgdGh4W2ldPXRoeFtpXSpzeDsKICAgICAgICAgICAgICAgICAgIHRoeVtpXT10aHlbaV0qc3k7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgZm9yKGk9MDtpPD00O2krKykKICAgICAgICAgICAgICAgeyAgICAgICB0aHhbaV0rPXB4OwogICAgICAgICAgICAgICAgICAgdGh5W2ldKz1weTsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICBkcmF3aG91c2UodGh4LHRoeSk7CiAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICBjYXNlIDM6IGNsZWFyZGV2aWNlKCk7CiAgICAgICAgICAgICAgIGluaXRzY3JlZW4oaHgsaHkpOwogICAgICAgICAgICAgICBwcmludGYoIlxuRW50ZXIgdGhlIGxpbmUgd2l0aCBtIGFtZCBjIHZhbHVlIik7CiAgICAgICAgICAgICAgIHNjYW5mKCIlZiVmIiwmbSwmYyk7CiAgICAgICAgICAgICAgIGlmKG0+MHx8bTwwKQogICAgICAgICAgICAgICB7ICAgIGx4MT0wOwogICAgICAgICAgICAgICAgICAgbHkxPWM7CiAgICAgICAgICAgICAgICAgICBseDI9KGdldG1heHkoKS1jKS9tOwogICAgICAgICAgICAgICAgICAgbHkyPWdldG1heHkoKTsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICBpZihtPT0wKQogICAgICAgICAgICAgICB7ICAgICAgIGx4MT0wOwogICAgICAgICAgICAgICAgICAgbHkxPWM7CiAgICAgICAgICAgICAgICAgICBseDI9Z2V0bWF4eCgpOwogICAgICAgICAgICAgICAgICAgbHkyPWM7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgaWYobT49OTk5OSkKICAgICAgICAgICAgICAgeyAgICAgICBseDE9bHgyPWM7CiAgICAgICAgICAgICAgICAgICBseTE9MDsKICAgICAgICAgICAgICAgICAgIGx5Mj1nZXRtYXh5KCk7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgZm9yKGk9MDtpPD00O2krKykKICAgICAgICAgICAgICAgeyAgICAgICB0aHhbaV09aHhbaV07CiAgICAgICAgICAgICAgICAgICB0aHlbaV09aHlbaV07CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgZm9yKGk9MDtpPD00O2krKykKICAgICAgICAgICAgICAgeyAgICAgICB4PXRoeFtpXTsKICAgICAgICAgICAgICAgICAgIHk9dGh5W2ldOwogICAgICAgICAgICAgICAgICAgaWYobT09MCkKICAgICAgICAgICAgICAgICAgIHsgICAgICAgdGh4W2ldPXg7CiAgICAgICAgICAgICAgICAgICAgICAgdGh5W2ldPWMrKGMteSk7CiAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICBpZihtPjB8fG08MCkKICAgICAgICAgICAgICAgICAgIHsgICAgICAgdGh4W2ldPTIqKChtKm0qeSt4KS1jKm0qbSkvKCgxK20qbSkqbSkteDsKICAgICAgICAgICAgICAgICAgICAgICB0aHlbaV09MiooYyttKm0qeSt4KS8oMSttKm0pLXk7CiAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICBpZihtPj05OTk5KQogICAgICAgICAgICAgICAgICAgeyAgICAgICB0aHlbaV09eTsKICAgICAgICAgICAgICAgICAgICAgICB0aHhbaV09YysoYy14KTsKICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICBkcmF3aG91c2UodGh4LHRoeSk7CgpsaW5lKGdldG1heHgoKS8yK2x4MSxnZXRtYXh5KCkvMi1seTEsZ2V0bWF4eCgpLzIrbHgyLGdldG1heHkoKS8yLWx5Mik7CiAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgY2FzZSA0OiBleGl0KDEpOwogICAgICAgICAgIH0KICAgICAgIH13aGlsZShjaCE9NCk7Cn0K