二维图形变换矩阵_简_百度空间
#include "math.h"
double xmax=639,ymax=479;
double f[3][3],xx,yy;
/*转换为屏幕坐标*/
int scx(double xj){
int x;
x=(int)(xj+xmax/2);
return x;
}

int scy(double yi){
int y;
y=ymax-(int)(yi+ymax/2);
return y;
}
/*平移*/
void parallel(double dx,double dy){
f[0][0]=1.0;f[0][1]=0.0;f[0][2]=0.0;
f[1][0]=0.0;f[1][1]=1.0;f[1][2]=0.0;
f[2][0]=dx;f[2][1]=dy;f[2][2]=1;
}
/*旋转*/
void rotate(double theta){
double th;
th=theta/180*3.1415926;
f[0][0]=cos(th);f[0][1]=sin(th);f[0][2]=0;
f[1][0]=-sin(th);f[1][1]=cos(th);f[1][2]=0;
f[2][0]=0;f[2][1]=0;f[2][2]=1;
}
/*关于X轴对称*/
void taisho_x(){
f[0][0]=1;f[0][1]=0;f[0][2]=0;
f[1][0]=0;f[1][1]=-1;f[1][2]=0;
f[2][0]=0;f[2][1]=0;f[2][2]=1;
}
/*关于Y轴对称*/
void taisho_y(){
f[0][0]=-1;f[0][1]=0;f[0][2]=0;
f[1][0]=0;f[1][1]=1;f[1][2]=0;
f[2][0]=0;f[2][1]=0;f[2][2]=1;
}
/*关于原点轴对称*/
void taisho_o(){
f[0][0]=-1;f[0][1]=0;f[0][2]=0;
f[1][0]=0;f[1][1]=-1;f[1][2]=0;
f[2][0]=0;f[2][1]=0;f[2][2]=1;
}
/*关于X=Y轴对称*/
void taisho_xy(){
f[0][0]=0;f[0][1]=1;f[0][2]=0;
f[1][0]=1;f[1][1]=0;f[1][2]=0;
f[2][0]=0;f[2][1]=0;f[2][2]=1;
}
/*关于X=-Y轴对称*/
void taisho_fxy(){
f[0][0]=0;f[0][1]=-1;f[0][2]=0;
f[1][0]=-1;f[1][1]=0;f[1][2]=0;
f[2][0]=0;f[2][1]=0;f[2][2]=1;
}
/*比例*/
void scale(double a,double b){
f[0][0]=a;f[0][1]=0.0;f[0][2]=0.0;
f[1][0]=0.0;f[1][1]=b;f[1][2]=0.0;
f[2][0]=0.0;f[2][1]=0.0;f[2][2]=1.0;
}
/*错切*/
void tuoq(double a, double b){
f[0][0]=1;f[0][1]=b;f[0][2]=0;
f[1][0]=a;f[1][1]=1;f[1][2]=0;
f[2][0]=0;f[2][1]=0;f[2][2]=1;
}
/*画坐标轴*/
void axis(){
line(scx(0),scy(-ymax/2),scx(0),scy(ymax/2));
line(scx(-xmax/2),scy(0),scx(xmax/2),scy(0));
}
/*矩阵相乘*/
double affinex(double x,double y,double d){
xx=x*f[0][0]+y*f[1][0]+d*f[2][0];
return xx;
}

double affiney(double x  ,double y,double d){
yy=x*f[0][1]+y*f[1][1]+d*f[2][1];
return yy;
}


郑重声明:资讯 【二维图形变换矩阵_简_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——