十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
A(ax, ay) B(bx, by) C(cx, cy) 移動(dòng)后A(ax0, ay0)... 1)ax = r*cosα ay = r*sinα ax0 = r*cos(α+90) ay0=r*sin(α+90) 用三角函數(shù)展開就ok了 2)旋轉(zhuǎn)90度就是坐標(biāo)點(diǎn)從一個(gè)象限旋轉(zhuǎn)到另一個(gè)象限,先判斷正負(fù),再將橫縱坐標(biāo)交換并根據(jù)正負(fù)情況乘以-1或者1 這個(gè)問題就是高中解析幾何的旋轉(zhuǎn)問題?;蛘邎D形學(xué)里的二維圖形旋轉(zhuǎn)問題

成都創(chuàng)新互聯(lián)專業(yè)提供綿陽機(jī)房托管服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購買綿陽機(jī)房托管服務(wù),并享受7*24小時(shí)金牌售后服務(wù)。
怎樣用C語言實(shí)現(xiàn)旋轉(zhuǎn)
#include stdio.h
void main()
{
int M;
int N;
int flag=0;
int num1=0;
int num2=1;
int i=0;
int j=0;
char str='A';
char Array[31][31];
printf("請(qǐng)輸入矩陣的行M和矩陣的列N:");
scanf("%d%d",M,N);
Array[0][0]=str;
while(flag M*N-1)
{
switch(num2%4)
{
case 1:
++j;
if(j == N-num1-1)
{
num2++;
}
break;
case 2:
++i;
if(i == M-num1-1)
{
num2++;
}
break;
case 3:
--j;
if(j == num1)
{
num2++;
}
break;
case 0:
--i;
if(i == num1+1)
{
num2++;
num1++;
}
break;
}
if(++str == 'Z'+1)
str='A';
Array[i][j]=str;
flag++;
}
for(i=0;iM;i++)
{
for(j=0;jN;j++)
{
printf("%c ",Array[i][j]);
}
printf("\n");
}
}
1.圖像平移
圖像平移只是改變圖像在屏幕上的位置,圖像本身并不發(fā)生變化。
假設(shè)原圖像區(qū)域左上角坐標(biāo)為(x0,y0),右下角坐標(biāo)為(x1,y1),將圖像分別沿x和y軸平移dx和dy,則新圖像的左上角坐標(biāo)為(x0+dx,y0+dy),右下角坐標(biāo)為(x1+dx,y1+dy)。
在屏幕上實(shí)現(xiàn)圖像的移動(dòng)分為四個(gè)步驟:
⑴保存原圖像到緩沖區(qū)。
⑵擦除原圖像。
⑶計(jì)算平移后的新坐標(biāo)。
⑷在新的坐標(biāo)位置重新顯示原圖像。
2.圖像顛倒
圖像顛倒是指把定義好的圖像區(qū)域上下翻轉(zhuǎn)地顯示在屏幕上。分析圖像顛倒的過程,可發(fā)現(xiàn)每行的圖像信息都保持不變,而只是改變了行的順序,將第一行與最后的第n行相互交換,第二行與第n-1行交換??,依此類推,從而實(shí)現(xiàn)了圖像的顛倒。只需采用按行交換的方式,即可方便地修改緩沖區(qū)內(nèi)容,實(shí)現(xiàn)圖像的顛倒。
3.圖像鏡像變換
鏡像變換是指將指定區(qū)域的圖像左右翻轉(zhuǎn)地顯示在屏幕。分析鏡像變換過程可以發(fā)現(xiàn):每行圖像信息的處理方式是相同的,而且行順序不發(fā)生變化,只是每一行的像素信息按從左到右的順序進(jìn)行了左右顛倒,從而實(shí)現(xiàn)了鏡像變換。因此,采用按行逐點(diǎn)變換的方式實(shí)現(xiàn)圖像的鏡像。
4.圖像旋轉(zhuǎn)
圖像旋轉(zhuǎn)是指把定義的圖像繞某一點(diǎn)以逆時(shí)針或順時(shí)針方向旋轉(zhuǎn)一定的角度,云南電腦培訓(xùn)認(rèn)為通常是指繞圖像的中心以逆時(shí)針方向旋轉(zhuǎn)。
#includestdio.h
main()
{
int a[100][100],i,j,n,m,t,s,k;
scanf("%d %d %d",m,n,t);//M為行 N為列 T為翻轉(zhuǎn)的方式
for(i=0;im;i++)
{ for(j=0;jn;j++)
scanf("%d",a[i][j]);
}
if(t==1)
{
for(s=0;si/2;s++)
for(j=0;jn;j++)
{
k=a[i-s-1][j];
a[i-s-1][j]=a[s][j];
a[s][j]=k;
}
}
if(t==-1)
{for(s=0;sj/2;s++)
for(i=0;im;i++)
{
k=a[i][j-s-1];
a[i][j-s-1]=a[i][s];
a[i][s]=k;
}
}
for(i=0;im;i++)
{ for(j=0;jn;j++)
printf(" %d",a[i][j]);
printf("\n");
}
}