❶ 一個有關仿射變換的問題
問題1:
首先代入A,B
得到(1)a-b+c=-1;(2)-d+2e+f=2;
然後注意條件上有直線x+2y-1=0.上每個點都不變.
也就是(3)x=ax+by+c;(4)y=dx+ey+f;
又用x+2y-1=0得到x=1-2y代入(3),(4)化簡得到
(5)a+c-1=(2a-b-2)y,(6),省略,自己仿照(5)算下就好;
看5中,注意y的任意性,得到a+c-1=0;2a-b-2=0;解出abc;
注意1,3,5是第一個方程,變形可以解出;
同理2,4,6可以解出def;
問題2和已差不多,不多說了。
話說樓主你給這么麻煩的問題也不多些分....
還好啦,看你是7級的,也幫人不少,也就幫你一次吧
❷ 仿射變換程序(C語言)中出現了一點問題
估計 LZ 標題嚇跑了一堆回答者- -...(說實話,數學學過的都忘記得差不多了...)
不過只是注釋裡面的問題的話,和程序邏輯的實現沒有關系。
關鍵在於,scanf("%d",&choice);這樣用%c以外的方式讀標准輸入流,會把回車丟棄,而回車進入gets中體現為一個空行。
解決方法是:
1.改成scanf("%d\n",&choice);,如果確定用回車/換行符結束的話;
2.在這里的scanf函數調用語句之後緊接一個getchar();,讀入並忽略之後的任一字元;
3.如果gets原本輸入的數據中保證沒有空格、製表符之類的空白符,那麼可以用scanf("%s",str1);,代替gets(str1);。
====
[原創回答團]
❸ 何為仿射變換
問題1:首先代入A,B得到(1)a-b+c=-1;(2)-d+2e+f=2;然後注意條件上有直線x+2y-1=0.上每個點都不變.也就是(3)x=ax+by+c;(4)y=dx+ey+f;又用x+2y-1=0得到x=1-2y代入(3),(4)化簡得到(5)a+c-1=(2a-b-2)y,(6),省略,自己仿照(5)算下就好;看5中,注意y的任意性,得到a+c-1=0;2a-b-2=0;解出abc;注意1,3,5是第一個方程,變形可以解出;同理2,4,6可以解出def;問題2和已差不多,不多說了。話說樓主你給這么麻煩的問題也不多些分.還好啦,看你是7級的,也幫人不少,也就幫你一次吧
❹ 求使三點a(1,1),b(2,0),c(2,2)順次變為三點的仿射變換
滿意
因為這個點位於坐標平面YOZ內
所以設這個點的坐標為(0,y,z)
又因為這個點與A
B
C等距
32+(1-y)2+(2-z)2=42+(-2-y)2+(-2-z)2
①
42+(-2-y)2+(-2-z)2=(5-y)2+(1-z)2
②
(5-y)2+(1-z)2=32+(1-y)2+(2-z)2
③
解得
y=1
z=-2
所以D的坐標為(0,1,-2)
❺ 仿射變換密碼c=(ap+b)mod26,a為什麼與26互素
a與26互素,a模26的逆元才存在,才能解密
❻ 用C\C++語言實現仿射變換(Affine)加/解密演算法
第二題:只統計小寫字母,如果是大寫或者混合的話原理也是一樣#include#includeint main() { char str[99];int i,j,a[26]={0};gets(str); for(i=0;i
❼ 求助!!!解仿射變換方程式 C
fsdf
❽ 誰知道實現多邊形的二維仿射變換如何編程
參考一下吧
http://myrss.easyjf.com/html/20060227/1141053618383115.htm
❾ (1)用C/C++語言實現仿射變換加/解密演算法(2)用C/C++語言實現統計26個英文字母出現的頻率的程序
第二題:只統計小寫字母,如果是大寫或者混合的話原理也是一樣
#include<stdio.h>
#include<string.h>
intmain()
{
charstr[99];
inti,j,a[26]={0};
gets(str);
for(i=0;i<strlen(str);i++)
{
for(j=0;j<26;j++)
if(str[i]==97+j)a[j]++;
}
for(j=0;j<26;j++)
if(a[j]!=0)printf("%c%d ",97+j,a[j]);
printf(" ");
return0;
}
第三題
解密:m=Da,b(c)=a-1(c-d)(mod26)//d是什麼你沒給出,只做了加密部分
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
intmain()
{
unsigneda,b,i;
charstr[99]="asdfABC";
srand(time(0));
b=rand()%26;
loop:
a=rand()%26;
if(a%2==0||a==13)gotoloop;
printf("密匙為:%d,%d ",a,b);
for(i=0;i<strlen(str);i++)
{
if(str[i]>='a'&&str[i]<='z')
str[i]=(str[i]*a+b)%26+97;
if(str[i]>='A'&&str[i]<='Z')
str[i]=(str[i]*a+b)%26+65;
printf("%c",str[i]);
}
printf(" ");
return0;
}
❿ 用C/C++語言實現仿射變換加/解密演算法
可以。