Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Latest commit

History

History
871 lines (558 loc) * 28 KB

[10]Matrix_Method.md

File metadata and controls

871 lines (558 loc) * 28 KB

MatrixXiang Jie

Zuo Zhe Wei Bo : @GcsSloop

Xiang Guan Wen Zhang : Zi Ding Yi ViewMu Lu

Zai Shang Yi Pian Wen Zhang Zhong ,Wo Men Dui MatrixZuo Liao Yi Ge Jian Dan De Liao Jie ,Pian Xiang Li Lun ,Zai Ben Wen Zhong Ze Hui Xiang Xi De Jiang Jie MatrixDe Ju Ti Yong Fa ,Yi Ji MatrixDe Yi Xie Shi Yong Ji Qiao .

MatrixFang Fa Biao

An Zhao Guan Li ,Xian Fang Fang Fa Biao Zuo Gai Lan .

Fang Fa Lei Bie Xiang Guan API Zhai Yao
Ji Ben Fang Fa equals hashCode toString toShortString Bi Jiao , Huo Qu Ha Xi Zhi , Zhuan Huan Wei Zi Fu Chuan
Shu Zhi Cao Zuo set reset setValues getValues She Zhi , Zhong Zhi , She Zhi Shu Zhi , Huo Qu Shu Zhi
Shu Zhi Ji Suan mapPoints mapRadius mapRect mapVectors Ji Suan Bian Huan Hou De Shu Zhi
She Zhi (set) setConcat setRotate setScale setSkew setTranslate She Zhi Bian Huan
Qian Cheng (pre) preConcat preRotate preScale preSkew preTranslate Qian Cheng Bian Huan
Hou Cheng (post) postConcat postRotate postScale postSkew postTranslate Hou Cheng Bian Huan
Te Shu Fang Fa setPolyToPoly setRectToRect rectStaysRect setSinCos Yi Xie Te Shu Cao Zuo
Ju Zhen Xiang Guan invert isAffine(API21) isIdentity Qiu Ni Ju Zhen , Shi Fou Wei Fang She Ju Zhen , Shi Fou Wei Dan Wei Ju Zhen ...

MatrixFang Fa Xiang Jie

Gou Zao Fang Fa

Gou Zao Fang Fa Mei You Zai Shang Mian Biao Ge Zhong Lie Chu .

Wu Can Gou Zao

Matrix ()

Chuang Jian Yi Ge Quan Xin De Matrix,Shi Yong Ge Shi Ru Xia :

Matrix matrix = new Matrix();

Tong Guo Zhe Chong Fang Shi Chuang Jian Chu Lai De Bing Bu Shi Yi Ge Shu Zhi Quan Bu Wei Kong De Ju Zhen ,Er Shi Yi Ge Dan Wei Ju Zhen ,Ru Xia :

You Can Gou Zao

Matrix (Matrix src)

Zhe Chong Fang Fa Ze Xu Yao Yi Ge Yi Jing Cun Zai De Ju Zhen Zuo Wei Can Shu ,Shi Yong Ge Shi Ru Xia :

Matrix matrix = new Matrix(src);

Chuang Jian Yi Ge Matrix,Bing Dui srcShen Kao Bei (Li Jie Wei Xin De matrixHe srcShi Liang Ge Dui Xiang ,Dan Nei Bu Shu Zhi Xiang Tong Ji Ke ).

Ji Ben Fang Fa

Ji Ben Fang Fa Nei Rong Bi Jiao Jian Dan ,Zai Ci Chu Jian Yao Jie Shao Yi Xia .

1.equals

Bi Jiao Liang Ge MatrixDe Shu Zhi Shi Fou Xiang Tong .

2.hashCode

Huo Qu MatrixDe Ha Xi Zhi .

3.toString

Jiang MatrixZhuan Huan Wei Zi Fu Chuan : Matrix{[1.0, 0.0, 0.0][0.0, 1.0, 0.0][0.0, 0.0, 1.0]}

4.toShortString

Jiang MatrixZhuan Huan Wei Duan Zi Fu Chuan : [1.0, 0.0, 0.0][0.0, 1.0, 0.0][0.0, 0.0, 1.0]

Shu Zhi Cao Zuo

Shu Zhi Cao Zuo Zhe Yi Zu Fang Fa Ke Yi Bang Zhu Wo Men Zhi Jie Kong Zhi MatrixLi Mian De Shu Zhi .

1.set

void set (Matrix src)

Mei You Fan Hui Zhi ,You Yi Ge Can Shu ,Zuo Yong Shi Jiang Can Shu MatrixDe Shu Zhi Fu Zhi Dao Dang Qian MatrixZhong . Ru Guo Can Shu Wei Kong ,Ze Zhong Zhi Dang Qian Matrix,Xiang Dang Yu reset().

2.reset

void reset ()

Zhong Zhi Dang Qian Matrix(Jiang Dang Qian MatrixZhong Zhi Wei Dan Wei Ju Zhen ).

3.setValues

void setValues (float[] values)

setValuesDe Can Shu Shi Fu Dian Xing De Yi Wei Shu Zu ,Chang Du Xu Yao Da Yu 9,Kao Bei Shu Zu Zhong De Qian 9Wei Shu Zhi Fu Zhi Gei Dang Qian Matrix.

4.getValues

void getValues (float[] values)

Hen Xian Ran ,getValuesHe setValuesShi Yi Dui Fang Fa ,Can Shu Ye Shi Fu Dian Xing De Yi Wei Shu Zu ,Chang Du Xu Yao Da Yu 9,Jiang MatrixZhong De Shu Zhi Kao Bei Jin Can Shu De Qian 9Wei Zhong .

Shu Zhi Ji Suan

1.mapPoints

void mapPoints (float[] pts)

void mapPoints (float[] dst, float[] src)

void mapPoints (float[] dst, int dstIndex,float[] src, int srcIndex, int pointCount)

Ji Suan Yi Zu Dian Ji Yu Dang Qian MatrixBian Huan Hou De Wei Zhi ,(You Yu Shi Ji Suan Dian ,Suo Yi Can Shu Zhong De floatShu Zu Chang Du Yi Ban Du Shi Ou Shu De ,Ruo Wei Qi Shu ,Ze Zui Hou Yi Ge Shu Zhi Bu Can Yu Ji Suan ).

Ta You San Ge Zhong Zai Fang Fa :

(1) void mapPoints (float[] pts) Fang Fa Jin You Yi Ge Can Shu ,ptsShu Zu Zuo Wei Can Shu Chuan Di Yuan Shi Shu Zhi ,Ji Suan Jie Guo Reng Cun Fang Zai ptsZhong .

Shi Li :

// Chu Shi Shu Ju Wei San Ge Dian (0, 0) (80, 100) (400, 300)
float[] pts = new float[]{0, 0, 80, 100, 400, 300};

// Gou Zao Yi Ge matrix,xZuo Biao Suo Fang 0.5
Matrix matrix = new Matrix();
matrix.setScale(0.5f, 1f);

// Shu Chu ptsJi Suan Zhi Qian Shu Ju
Log.i(TAG, "before: "+ Arrays.toString(pts));

// Diao Yong mapFang Fa Ji Suan
matrix.mapPoints(pts);

// Shu Chu ptsJi Suan Zhi Hou Shu Ju
Log.i(TAG, "after : "+ Arrays.toString(pts));

Jie Guo :

before: [0.0, 0.0, 80.0, 100.0, 400.0, 300.0]
after : [0.0, 0.0, 40.0, 100.0, 200.0, 300.0]

(2) void mapPoints (float[] dst, float[] src) ,srcZuo Wei Can Shu Chuan Di Yuan Shi Shu Zhi ,Ji Suan Jie Guo Cun Fang Zai dstZhong ,srcBu Bian .

Ru Guo Yuan Shi Shu Ju Xu Yao Bao Liu Ze Yi Ban Shi Yong Zhe Chong Fang Fa .

Shi Li :

// Chu Shi Shu Ju Wei San Ge Dian (0, 0) (80, 100) (400, 300)
float[] src = new float[]{0, 0, 80, 100, 400, 300};
float[] dst = new float[6];

// Gou Zao Yi Ge matrix,xZuo Biao Suo Fang 0.5
Matrix matrix = new Matrix();
matrix.setScale(0.5f, 1f);

// Shu Chu Ji Suan Zhi Qian Shu Ju
Log.i(TAG, "before: src="+ Arrays.toString(src));
Log.i(TAG, "before: dst="+ Arrays.toString(dst));

// Diao Yong mapFang Fa Ji Suan
matrix.mapPoints(dst,src);

// Shu Chu Ji Suan Zhi Hou Shu Ju
Log.i(TAG, "after : src="+ Arrays.toString(src));
Log.i(TAG, "after : dst="+ Arrays.toString(dst));

Jie Guo :

before: src=[0.0, 0.0, 80.0, 100.0, 400.0, 300.0]
before: dst=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
after : src=[0.0, 0.0, 80.0, 100.0, 400.0, 300.0]
after : dst=[0.0, 0.0, 40.0, 100.0, 200.0, 300.0]

(3) void mapPoints (float[] dst, int dstIndex,float[] src, int srcIndex, int pointCount) Ke Yi Zhi Ding Zhi Ji Suan Yi Bu Fen Shu Zhi .

Can Shu Zhai Yao
dst Mu Biao Shu Ju
dstIndex Mu Biao Shu Ju Cun Chu Wei Zhi Qi Shi Xia Biao
src Yuan Shu Ju
srcIndex Yuan Shu Ju Cun Chu Wei Zhi Qi Shi Xia Biao
pointCount Ji Suan De Dian Ge Shu

Shi Li :

Jiang Di Er , San Ge Dian Ji Suan Hou Cun Chu Jin dstZui Kai Shi Wei Zhi .

// Chu Shi Shu Ju Wei San Ge Dian (0, 0) (80, 100) (400, 300)
float[] src = new float[]{0, 0, 80, 100, 400, 300};
float[] dst = new float[6];

// Gou Zao Yi Ge matrix,xZuo Biao Suo Fang 0.5
Matrix matrix = new Matrix();
matrix.setScale(0.5f, 1f);

// Shu Chu Ji Suan Zhi Qian Shu Ju
Log.i(TAG, "before: src="+ Arrays.toString(src));
Log.i(TAG, "before: dst="+ Arrays.toString(dst));

// Diao Yong mapFang Fa Ji Suan (Zui Hou Yi Ge 2Biao Shi Liang Ge Dian ,Ji Si Ge Shu Zhi ,Bing Fei Liang Ge Shu Zhi )
matrix.mapPoints(dst, 0, src, 2, 2);

// Shu Chu Ji Suan Zhi Hou Shu Ju
Log.i(TAG, "after : src="+ Arrays.toString(src));
Log.i(TAG, "after : dst="+ Arrays.toString(dst));

Jie Guo :

before: src=[0.0, 0.0, 80.0, 100.0, 400.0, 300.0]
before: dst=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
after : src=[0.0, 0.0, 80.0, 100.0, 400.0, 300.0]
after : dst=[40.0, 100.0, 200.0, 300.0, 0.0, 0.0]

2.mapRadius

float mapRadius (float radius)

Ce Liang Ban Jing ,You Yu Yuan Ke Neng Hui Yin Wei Hua Bu Bian Huan Bian Cheng Tuo Yuan ,Suo Yi Ci Chu Ce Liang De Shi Ping Jun Ban Jing .

Shi Li :

float radius = 100;
float result = 0;

// Gou Zao Yi Ge matrix,xZuo Biao Suo Fang 0.5
Matrix matrix = new Matrix();
matrix.setScale(0.5f, 1f);

Log.i(TAG, "mapRadius: "+radius);

result = matrix.mapRadius(radius);

Log.i(TAG, "mapRadius: "+result);

Jie Guo :

mapRadius: 100.0
mapRadius: 70.71068

3.mapRect

boolean mapRect (RectF rect)

boolean mapRect (RectF dst, RectF src)

Ce Liang Ju Xing Bian Huan Hou Wei Zhi .

(1) boolean mapRect (RectF rect) Ce Liang rectBing Jiang Ce Liang Jie Guo Fang Ru rectZhong ,Fan Hui Zhi Shi Pan Duan Ju Xing Jing Guo Bian Huan Hou Shi Fou Reng Wei Ju Xing .

Shi Li :

RectF rect = new RectF(400, 400, 1000, 800);

// Gou Zao Yi Ge matrix
Matrix matrix = new Matrix();
matrix.setScale(0.5f, 1f);
matrix.postSkew(1,0);

Log.i(TAG, "mapRadius: "+rect.toString());

boolean result = matrix.mapRect(rect);

Log.i(TAG, "mapRadius: "+rect.toString());
Log.e(TAG, "isRect: "+ result);

Jie Guo :

mapRadius: RectF(400.0, 400.0, 1000.0, 800.0)
mapRadius: RectF(600.0, 400.0, 1300.0, 800.0)
isRect: false

You Yu Shi Yong Liao Cuo Qie ,Suo Yi Fan Hui Jie Guo Wei false.

(2) boolean mapRect (RectF dst, RectF src) Ce Liang srcBing Jiang Ce Liang Jie Guo Fang Ru dstZhong ,Fan Hui Zhi Shi Pan Duan Ju Xing Jing Guo Bian Huan Hou Shi Fou Reng Wei Ju Xing ,He Zhi Qian Mei You Shi Yao Tai Da Qu Bie ,Ci Chu Jiu Bu Luo Suo Liao .

4.mapVectors

Ce Liang Xiang Liang .

void mapVectors (float[] vecs)

void mapVectors (float[] dst, float[] src)

void mapVectors (float[] dst, int dstIndex, float[] src, int srcIndex, int vectorCount)

mapVectors Yu mapPoints Ji Ben Shang Shi Xiang Tong De ,Ke Yi Zhi Jie Can Zhao Shang Mian De mapPointsShi Yong Fang Fa .

Er Liang Zhe Wei Yi De Qu Bie Jiu Shi mapVectorsBu Hui Shou Dao Wei Yi De Ying Xiang ,Zhe Fu He Xiang Liang De Ding Lu ,Ru Guo Ni Bu Liao Jie De Hua ,Qing Zhao Dao Yi Qian Jiao Guo Ni De Lao Shi Ran Hou Ba Xue Fei Yao Hui Lai .

Qu Bie :

float[] src = new float[]{1000, 800};
float[] dst = new float[2];

// Gou Zao Yi Ge matrix
Matrix matrix = new Matrix();
matrix.setScale(0.5f, 1f);
matrix.postTranslate(100,100);

// Ji Suan Xiang Liang , Bu Shou Wei Yi Ying Xiang
matrix.mapVectors(dst, src);
Log.i(TAG, "mapVectors: "+Arrays.toString(dst));

// Ji Suan Dian
matrix.mapPoints(dst, src);
Log.i(TAG, "mapPoints: "+Arrays.toString(dst));

Jie Guo :

mapVectors: [500.0, 800.0]
mapPoints: [600.0, 900.0]

set, pre Yu post

Dui Yu Si Chong Ji Ben Bian Huan Ping Yi (translate), Suo Fang (scale), Xuan Zhuan (rotate), Cuo Qie (skew) Ta Men Mei Yi Chong Du San Chong Cao Zuo Fang Fa ,Fen Bie Wei She Zhi (set), Qian Cheng (pre) He Hou Cheng (post). Er Ta Men De Ji Chu Shi Concat,Tong Guo Xian Gou Zao Chu Te Shu Ju Zhen Ran Hou Yong Yuan Shi Ju Zhen ConcatTe Shu Ju Zhen ,Da Dao Bian Huan De Jie Guo .

Guan Yu Si Chong Ji Ben Bian Huan De Zhi Shi He San Chong Dui Ying Cao Zuo De Qu Bie ,Xiang Xi Ke Yi Can Kao CanvasZhi Hua Bu Cao Zuo He MatrixYuan Li Zhe Liang Pian Wen Zhang De Nei Rong .

You Yu Zhi Qian De Wen Zhang Yi Jing Xiang Xi De Jiang Jie Guo Liao Ta Men De Yuan Li Yu Yong Fa ,Suo Yi Ci Chu Jiu Jian Yao De Jie Shao Yi Xia :

Fang Fa Jian Jie
set She Zhi ,Hui Fu Gai Diao Zhi Qian De Shu Zhi ,Dao Zhi Zhi Qian De Cao Zuo Shi Xiao .
pre Qian Cheng ,Xiang Dang Yu Ju Zhen De You Cheng , M' = M * S (SZhi Wei Te Shu Ju Zhen )
post Hou Cheng ,Xiang Dang Yu Ju Zhen De Zuo Cheng ,M' = S * M (SZhi Wei Te Shu Ju Zhen )

Matrix Xiang Guan De Zhong Yao Zhi Shi :

  • 1.Yi Kai Shi Cong CanvasZhong Huo Qu Dao Dao MatrixBing Bu Shi Chu Shi Ju Zhen ,Er Shi Jing Guo Pian Yi Hou Dao Ju Zhen ,Qie Pian Yi Ju Chi Jiu Shi Ju Chi Ping Mu Zuo Shang Jiao De Wei Zhi .

  • Zhe Ge Ke Yi Yong Yu Pan Ding ViewZai Ping Mu Shang De Jue Dui Wei Zhi ,ViewKe Yi Gen Ju Suo Chu Wei Zhi Zuo Chu Diao Zheng .

  • 2.Gou Zao MatrixShi Shi Yong De Shi Ju Zhen Cheng Fa ,Qian Cheng (pre)Yu Hou Cheng (post)Jie Guo Chai Bie Hen Da .

  • Zhe Ge Zhi Jie Can Jian Shang Yi Pian Wen Zhang MatrixYuan Li Ji Ke .

  • 3.Shou Ju Zhen Cheng Fa Ying Xiang ,Hou Mian De Zhi Xing De Cao Zuo Ke Neng Hui Ying Xiang Dao Zhi Qian De Cao Zuo .

  • Shi Yong Shi Xu Yao Zhu Yi Gou Zao Shun Xu .

Te Shu Fang Fa

Zhe Yi Lei Fang Fa Kan Si Bu Qi Yan ,Dan Na Lai Shao Wei Jia Gong Yi Xia Jiu Ke Neng Zhi Zuo Yi Xiang Bu Dao De Xiao Guo .

1.setPolyToPoly

boolean setPolyToPoly (
float[] src, // Yuan Shi Shu Zu src [x,y],Cun Chu Nei Rong Wei Yi Zu Dian
int srcIndex, // Yuan Shi Shu Zu Kai Shi Wei Zhi
float[] dst, // Mu Biao Shu Zu dst [x,y],Cun Chu Nei Rong Wei Yi Zu Dian
int dstIndex, // Mu Biao Shu Zu Kai Shi Wei Zhi
int pointCount) // Ce Kong Dian De Shu Liang Qu Zhi Fan Wei Shi : 0Dao 4

PolyQuan Cheng Shi Polygon,Duo Bian Xing De Yi Si ,Liao Jie Liao Yi Si Da Zhi Jiu Neng Zhi Dao Zhe Ge Fang Fa Shi Zuo Shi Yao Yong De Liao ,Ying Gai Yu PSZhong Zi You Bian Huan Zhong De Niu Qu You Dian Lei Si .

Cong Can Shu Wo Men Ke Yi Liao Jie Dao setPolyToPolyZui Duo Ke Yi Zhi Chi 4Ge Dian ,Zhe Si Ge Dian Tong Chang Wei Tu Xing De Si Ge Jiao ,Ke Yi Tong Guo Zhe Si Ge Jiao Jiang Shi Tu Cong Ju Xing Bian Huan Cheng Qi Ta Xing Zhuang .

Jian Dan Shi Li :

public class MatrixSetPolyToPolyTest extends View {

private Bitmap mBitmap; // Yao Hui Zhi De Tu Pian
private Matrix mPolyMatrix; // Ce Shi setPolyToPolyYong De Matrix

public MatrixSetPolyToPolyTest(Context context) {
super(context);

initBitmapAndMatrix();
}

private void initBitmapAndMatrix() {
mBitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.poly_test);

mPolyMatrix = new Matrix();


float[] src = {0, 0, // Zuo Shang
mBitmap.getWidth(), 0, // You Shang
mBitmap.getWidth(), mBitmap.getHeight(), // You Xia
0, mBitmap.getHeight()}; // Zuo Xia

float[] dst = {0, 0, // Zuo Shang
mBitmap.getWidth(), 400, // You Shang
mBitmap.getWidth(), mBitmap.getHeight() - 200, // You Xia
0, mBitmap.getHeight()}; // Zuo Xia

// He Xin Yao Dian
mPolyMatrix.setPolyToPoly(src, 0, dst, 0, src.length >> 1); // src.length >> 1 Wei Wei Yi Yun Suan Xiang Dang Yu Chu Yi 2

// Ci Chu Wei Liao Geng Hao De Xian Shi Dui Tu Pian Jin Xing Liao Deng Bi Suo Fang He Ping Yi (Tu Pian Ben Shen You Dian Da )
mPolyMatrix.postScale(0.26f, 0.26f);
mPolyMatrix.postTranslate(0,200);
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

// Gen Ju MatrixHui Zhi Yi Ge Bian Huan Hou De Tu Pian
canvas.drawBitmap(mBitmap, mPolyMatrix, null);
}
}

Wen Zhang Fa Chu Hou You Xiao Huo Ban Zai GitHubShang Ti Chu Yi Wen ,Shuo Ci Chu Jiang Jie Dao Bing Bu Qing Chu ,You Qi Shi Zui Hou De Yi Ge Can Shu ,Suo Yi Te Ci Bu Chong Yi Xia Nei Rong .

Wo Men Zhi Dao pointCountZhi Chi Dian De Ge Shu Wei 0Dao 4Ge ,Si Ge Yi Ban Zhi Tu Xing De Si Ge Jiao ,Shu Yu Zui Chang Yong De Yi Chong Qing Xing ,Dan Qian Mian Ji Chong Shi Shi Yao Qing Kuang Ni ?

Fa Bu Ci Wen De Shi Hou Zhi Suo Yi Mei You Jiang Jie 0Dao 3De Qing Kuang ,Shi Yin Wei Qian Mian De Ji Chong Qing Kuang Zai Shi Ji Kai Fa Zhong Hen Shao Hui Chu Xian , Cai Bu Shi Yin Wei Tou Lan Ni ,Heng .

pointCount Zhai Yao
0 Xiang Dang Yu reset
1 Xiang Dang Yu translate
2 Ke Yi Jin Xing Suo Fang , Xuan Zhuan , Ping Yi Bian Huan
3 Ke Yi Jin Xing Suo Fang , Xuan Zhuan , Ping Yi , Cuo Qie Bian Huan
4 Ke Yi Jin Xing Suo Fang , Xuan Zhuan , Ping Yi , Cuo Qie Yi Ji Ren He Xing Bian

Cong Shang Biao Wo Men Ke Yi Guan Cha Chu Yi Ge Gui Lu , Sui Zhao pointCountShu Zhi Zeng Da setPolyToPolyDe Ke Yi Cao Zuo Xing Ye Yue Lai Yue Qiang ,Zhe Bu Shi Fei Hua Yao ,Ke Diao Zheng Dian Shu Duo Liao Neng Gan De Shi Qing Zi Ran Ye Duo Liao .

Zhi Lie Yi Ge Biao Ge Jiu Suan Jiao Dai Wan Bi Liao Xian De Cheng Yi Bu Zu ,Wei Liao Zhang Xian Cheng Yi ,Jie Xia Lai Xiang Xi De Jiang Jie Yi Xia .

Wei Shi Yao Shuo Qian Mian Ji Chong Qing Kuang Zai Shi Ji Kai Fa Zhong Hen Shao Chu Xian ?

Zuo Wei Kai Fa Ren Yuan ,Xie Chu Lai De Dai Ma Chu Liao Yao Rang Ji Qi "Kan Dong ",Mei You Qi Yi Zhi Wai ,Zui Zhong Yao De Huan Shi Rang Ren Kan Dong ,Yi Fang Bian Hou Qi De Wei Hu Xiu Gai ,Cong Shang Bian De Biao Ge Zhong Ke Yi Kan Chu ,Qian Mian De Ji Chong Chong Qing Kuang Du Ke Yi You Geng Zhi Guan De Ti Dai Fang Fa ,Zhi You Si Ge Can Shu De Qing Kuang Xia De Te Shu Xing Bian Shi Mei You Ti Dai Fang Fa De .

Ce Kong Dian Xuan Qu Wei Zhi ?

Ce Kong Dian Ke Yi Xuan Ze Ren He Ni Ren Wei Fang Bian De Wei Zhi ,Zhi Yao srcYu dstYi Yi Dui Ying Ji Ke . Bu Guo Wei Liao Fang Bian ,Tong Chang Hui Xuan Ze Yi Xie Te Shu De Dian : Tu Xing De Si Ge Jiao ,Bian Xian De Zhong Xin Dian Yi Ji Tu Xing De Zhong Xin Dian Deng . Bu Guo You Yi Dian Xu Yao Zhu Yi ,Ce Kong Dian Xuan Qu Du Ying Dang Shi Bu Zhong Fu De (srcYu dstJun Shi Ru Ci ),Ru Guo Xuan Qu Liao Zhong Fu De Dian Hui Zhi Jie Dao Zhi Ce Liang Shi Xiao ,Zhe Ye Yi Wei Zhao ,Ni Bu Yun Xu Jiang Yi Ge Fang Xing (Si Ge Dian )Ying She Wei San Jiao Xing (Si Ge Dian ,Dan Qi Zhong Liang Ge Wei Zhi Zhong Die ),Dan Ke Yi Jie Jin Yu San Jiao Xing . .

Zuo Yong Fan Wei ?

Zuo Yong Fan Wei Dang Ran Shi She Zhi Liao MatrixDe Quan Bu Qu Yu ,Ru Guo Ni Jiang Zhe Ge MatrixFu Zhi Gei Liao Canvas,Ta De Zuo Yong Fan Wei Jiu Shi Zheng Ge Hua Bu ,Ru Guo Ni Fu Zhi Gei Liao Bitmap,Ta De Zuo Yong Fan Wei Jiu Shi Zheng Zhang Tu Pian .


Jie Xia Lai Yong Shi Li Yan Shi Yi Xia ,Suo You Shi Li De srcJun Wei Tu Pian Da Xiao ,dstGen Ju Shou Shi Bian Hua .

pointCountWei 0

pointCountWei 0He resetShi Deng Jie De ,Er Bu Shi Bao Chi matrixBu Bian ,Zai Zui Di Ceng De Shi Xian Zhong Ke Yi Kan Dao Zhe Yang De Dai Ma :

if (0 == count) {
this->reset();
return true;
}

pointCountWei 1

pointCountWei 0He translateShi Deng Jie De ,Zai Zui Di Ceng De Shi Xian Zhong Ke Yi Kan Dao Zhe Yang De Dai Ma :

if (1 == count) {
this->setTranslate(dst[0].fX - src[0].fX, dst[0].fY - src[0].fY);
return true;
}

Ping Yi De Ju Chi Shi dst - src.

Dang Ce Kong Dian Wei 1De Shi Hou ,You Yu Ni Zhi You Yi Ge Dian Ke Yi Kong Zhi ,Suo Yi Ni Zhi Neng Tuo Zhuai Zhao Ta Zai 2DPing Mian Shang Hua Dong .

pointCountWei 2

Dang pointCountWei 2De Shi Hou ,Ke Yi Zuo Suo Fang , Ping Yi He Xuan Zhuan .

pointCountWei 3

Dang pointCountWei 3De Shi Hou ,Ke Yi Zuo Suo Fang , Ping Yi , Xuan Zhuan He Cuo Qie .

pointCountWei 4

Dang pointCountWei 4De Shi Hou ,Ni Ke Yi Jiang Tu Xiang La Shen Wei Ren Yi Si Bian Xing .

Shang Mian Yi Jing Yong Tu Li Bi Jiao Xiang Xi De Zhan Shi Liao Bu Tong Cao Kong Dian Ge Shu De Qing Kuang ,Ru Guo Ni Yi Jiu Cun Zai Yi Wen ,Ke Yi Huo Qu Dai Ma Zi Ji Shi Yi Xia .

2.setRectToRect

boolean setRectToRect (RectF src, // Yuan Qu Yu
RectF dst, // Mu Biao Qu Yu
Matrix.ScaleToFit stf) // Suo Fang Gua Pei Mo Shi

Jian Dan Lai Shuo Jiu Shi Jiang Yuan Ju Xing De Nei Rong Tian Chong Dao Mu Biao Ju Xing Zhong ,Ran Er Zai Da Duo Shu De Qing Kuang Xia ,Yuan Ju Xing He Mu Biao Ju Xing De Chang Kuan Bi Shi Bu Yi Zhi De ,Dao Di Gai Ru He Tian Chong Ni ,Zhe Ge Tian Chong De Mo Shi Jiu You Di San Ge Can Shu stf Lai Que Ding .

ScaleToFit Shi Yi Ge Mei Ju Lei Xing ,Gong Bao Han Liao Si Chong Mo Shi :

Mo Shi Zhai Yao
CENTER Ju Zhong ,Dui srcDeng Bi Li Suo Fang ,Jiang Qi Ju Zhong Fang Zhi Zai dstZhong .
START Ding Bu ,Dui srcDeng Bi Li Suo Fang ,Jiang Qi Fang Zhi Zai dstDe Zuo Shang Jiao .
END Di Bu ,Dui srcDeng Bi Li Suo Fang ,Jiang Qi Fang Zhi Zai dstDe You Xia Jiao .
FILL Chong Man ,La Shen srcDe Kuan He Gao ,Shi Qi Wan Quan Tian Chong Man dst.

Xia Mian Wo Men Kan Yi Xia Bu Tong Kuan Gao Bi De srcYu dstZai Bu Tong Mo Shi Xia Shi Zen Yang De .

Jia She Hui Se Bu Fen Shi dst,Cheng Se Bu Fen Shi src,You Yu Shi Ce Shi Bu Tong Kuan Gao Bi ,Shi Li Zhong Rang dstBao Chi Bu Bian ,Kan Liang Chong Kuan Gao Bi De srcZai Bu Tong Mo Shi Xia Tian Chong De Wei Zhi .

src(Yuan Shi Zhuang Tai )
CENTER
START
END
FILL

Xia Mian Yong Dai Ma Yan Shi Yi Xia Ju Zhong De Shi Li :

public class MatrixSetRectToRectTest extends View {

private static final String TAG = "MatrixSetRectToRectTest";

private int mViewWidth, mViewHeight;

private Bitmap mBitmap; // Yao Hui Zhi De Tu Pian
private Matrix mRectMatrix; // Ce Shi etRectToRectYong De Matrix

public MatrixSetRectToRectTest(Context context) {
super(context);

mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.rect_test);
mRectMatrix = new Matrix();
}

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
mViewWidth = w;
mViewHeight = h;

}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

RectF src= new RectF(0, 0, mBitmap.getWidth(), mBitmap.getHeight() );
RectF dst = new RectF(0, 0, mViewWidth, mViewHeight );

// He Xin Yao Dian
mRectMatrix.setRectToRect(src,dst, Matrix.ScaleToFit.CENTER);

// Gen Ju MatrixHui Zhi Yi Ge Bian Huan Hou De Tu Pian
canvas.drawBitmap(mBitmap, mRectMatrix, new Paint());
}
}

3.rectStaysRect

Pan Duan Ju Xing Jing Guo Bian Huan Hou Shi Fou Reng Wei Ju Xing ,Jia Ru MatrixJin Xing Liao Ping Yi , Suo Fang Ze Hua Bu Jin Jin Shi Wei Zhi He Da Xiao Gai Bian ,Ju Xing Bian Huan Hou Reng Ran Wei Ju Xing ,Dan MatrixJin Xing Liao Fei 90Du Bei Shu De Xuan Zhuan Huo Zhe Cuo Qie ,Ze Ju Xing Bian Huan Hou Jiu Bu Zai Shi Ju Xing Liao ,Zhe Ge Hen Hao Li Jie ,Bu Guo Duo Zhui Shu ,Shun Bian Shuo Yi Xia ,Qian Mian De mapRectFang Fa De Fan Hui Zhi Jiu Shi Gen Ju rectStaysRectLai Pan Duan De .

4.setSinCos

She Zhi sinCosZhi ,Zhe Ge Shi Kong Zhi MatrixXuan Zhuan De ,You Yu MatrixYi Jing Feng Zhuang Hao Liao RotateFang Fa ,Suo Yi Zhe Ge Bing Bu Chang Yong ,Zai Ci Jin Zuo Gai Shu .

// Fang Fa Yi
void setSinCos (float sinValue, // Xuan Zhuan Jiao Du De sinZhi
float cosValue) // Xuan Zhuan Jiao Du De cosZhi

// Fang Fa Er
void setSinCos (float sinValue, // Xuan Zhuan Jiao Du De sinZhi
float cosValue, // Xuan Zhuan Jiao Du De cosZhi
float px, // Zhong Xin Wei Zhi xZuo Biao
float py) // Zhong Xin Wei Zhi yZuo Biao

Jian Dan Ce Shi :

Matrix matrix = new Matrix();
// Xuan Zhuan 90Du
// sin90=1
// cos90=0
matrix.setSinCos(1f, 0f);

Log.i(TAG, "setSinCos:"+matrix.toShortString());

// Zhong Zhi
matrix.reset();

// Xuan Zhuan 90Du
matrix.setRotate(90);

Log.i(TAG, "setRotate:"+matrix.toShortString());

Jie Guo :

setSinCos:[0.0, -1.0, 0.0][1.0, 0.0, 0.0][0.0, 0.0, 1.0]
setRotate:[0.0, -1.0, 0.0][1.0, 0.0, 0.0][0.0, 0.0, 1.0]

Ju Zhen Xiang Guan

Ju Zhen Xiang Guan De Han Shu Jiu Shu Yu Na Yi Chong Fei Chang Kao Jin Di Ceng De Dong Xi Liao ,Da Bu Fen Kai Fa Zhe Hen Shao Zhi Jie Jie Hong Zhe Xie Dong Xi ,Xiang Yao Nong Ming Bai Zhe Ge Ke Yi Hui Qu Qing Jiao Ni Men De Xian Xing Dai Shu Lao Shi ,Zhe Li Ye Jin Zuo Gai Shu .

Fang Fa Zhai Yao
invert Qiu Ju Zhen De Ni Ju Zhen
isAffine Pan Duan Dang Qian Ju Zhen Shi Fou Wei Fang She Ju Zhen ,API21(5.0)Cai Tian Jia De Fang Fa .
isIdentity Pan Duan Dang Qian Ju Zhen Shi Fou Wei Dan Wei Ju Zhen .

1.invert

Qiu Ju Zhen De Ni Ju Zhen ,Jian Er Yan Zhi Jiu Shi Ji Suan Yu Zhi Qian Xiang Fan De Ju Zhen ,Ru Guo Zhi Qian Shi Ping Yi 200px,Ze Qiu De Ju Zhen Wei Fan Xiang Ping Yi 200px,Ru Guo Zhi Qian Shi Suo Xiao Dao 0.5f,Ze Jie Guo Shi Fang Da Dao 2Bei .

boolean invert (Matrix inverse)

Jian Dan Ce Shi :

Matrix matrix = new Matrix();
Matrix invert = new Matrix();
matrix.setTranslate(200,500);

Log.e(TAG, "before - matrix "+matrix.toShortString() );

Boolean result = matrix.invert(invert);

Log.e(TAG, "after - result "+result );
Log.e(TAG, "after - matrix "+matrix.toShortString() );
Log.e(TAG, "after - invert "+invert.toShortString() );

Jie Guo :

before - matrix [1.0, 0.0, 200.0][0.0, 1.0, 500.0][0.0, 0.0, 1.0]
after - result true
after - matrix [1.0, 0.0, 200.0][0.0, 1.0, 500.0][0.0, 0.0, 1.0]
after - invert [1.0, 0.0, -200.0][0.0, 1.0, -500.0][0.0, 0.0, 1.0]

2.isAffine

Pan Duan Ju Zhen Shi Fou Shi Fang She Ju Zhen , Mao Si Bing Mei You Tai Da Luan Yong ,Yin Wei Ni Wu Lun Ru He Cao Zuo Jie Guo Shi Zhong Du Wei true.

Zhe Shi Wei Shi Yao Ni ?Yin Wei Qi Jin Wei Zhi Wo Men Shi Yong De Suo You Bian Huan Du Shi Fang She Bian Huan ,Na Bian Huan Chu Lai De Ju Zhen Zi Ran Shi Fang She Ju Zhen Lou .

Pan Duan Shi Fou Shi Fang She Ju Zhen Zui Zhong Yao De Yi Dian Jiu Shi ,Zhi Xian Shi Fou Reng Wei Zhi Xian ,Jian Dan Xiang Yi Xia Jiu Zhi Dao ,Bu Lun Ping Yi ,Xuan Zhuan ,Cuo Qie ,Suo Fang ,Zhi Xian Bian Huan Hou Zui Zhong Reng Wei Zhi Xian ,Yao Xiang Rang isAffineDe Jie Guo Bian Wei false,Chu Fei Ni Neng Ba Zhi Xian Bai Wan ,Wo Mu Qian Huan Mei You Zhao Dao Neng Gou Bai Wan De Fang Fa ,Suo Yi Wo Reng Shi Zhi Nan (Jiu Suan Zhao Dao Liao ,Wo Yi Jiu Shi Zhi Nan ).

Jian Dan Ce Shi :

Matrix matrix = new Matrix();
Log.i(TAG,"isAffine="+matrix.isAffine());

matrix.postTranslate(200,0);
matrix.postScale(0.5f, 1);
matrix.postSkew(0,1);
matrix.postRotate(56);

Log.i(TAG,"isAffine="+matrix.isAffine());

Jie Guo :

isAffine=true
isAffine=true

3.isIdentity

Pan Duan Shi Fou Wei Dan Wei Ju Zhen ,Shi Yao Shi Dan Wei Ju Zhen Ni ,Jiu Shi Wen Zhang Yi Kai Shi De Na Ge :

![](http://latex.codecogs.com/png.latex?$$ \left [ \begin{matrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{1} \right ] $$)

Xin Chuang Jian De MatrixHe Zhong Zhi Hou De MatrixDu Shi Dan Wei Ju Zhen ,Bu Guo ,Zhi Yao Sui Yi Cao Zuo Yi Bu ,Jiu Bu Zai Shi Dan Wei Ju Zhen Liao .

Jian Dan Ce Shi :

Matrix matrix = new Matrix();
Log.i(TAG,"isIdentity="+matrix.isIdentity());

matrix.postTranslate(200,0);

Log.i(TAG,"isIdentity="+matrix.isIdentity());

Jie Guo :

isIdentity=true
isIdentity=false

MatrixShi Yong Ji Qiao

Tong Guo Qian Mian De Dai Ma He Shi Li ,Wo Men Yi Jing Liao Jie Liao MatrixDa Bu Fen Fang Fa Shi Ru He Shi Yong De ,Zhe Xie Ji Ben De Yuan Li He Fang Fa Tong Guo Zu He Ke Neng Hui Chuang Zao Chu Shen Qi De Dong Xi ,Wang Shang You Hen Duo Jiao Cheng Jiang BitmapLi Yong MatrixBian Huan Lai Zhi Zuo Jing Xiang Dao Ying Deng ,Zhe Du Shu Yu MatrixDe Ji Ben Ying Yong ,Wo Jiu Bu Zai Zhui Shu Liao ,Xia Mian Wo Jian Yao Jie Shao Ji Chong Ran Bing Luan De Xiao Ji Qiao ,Geng Duo De Da Jia Ke Yi Kai Qi Zi Ji De Nao Dong Lai Fa Hui .

1.Huo Qu ViewZai Ping Mu Shang De Jue Dui Wei Zhi

Zai Zhi Qian De Wen Zhang MatrixYuan Li Zhong Wo Men Ti Dao Guo MatrixZui Gen Ben De Zuo Yong Jiu Shi Zuo Biao Ying She ,Jiang ViewDe Xiang Dui Zuo Biao Ying She Wei Ping Mu De Jue Dui Zuo Biao ,Ye Ti Dao Guo Wo Men Zai onDrawHan Shu De canvasZhong Huo Qu Dao Dao MatrixBing Bu Shi Dan Wei Ju Zhen ,Jie He Zhe Liang Dian ,Cong Ming De Ni Ken Ding Xiang Dao Liao Wo Men Ke Yi Cong canvasDe MatrixRu Shou Qu De ViewZai Ping Mu Shang De Jue Dui Wei Zhi .

Bu Guo ,Zhe Ye Jin Jin Shi Yi Ge Ran Bing Luan De Xiao Ji Qiao Er Yi ,Shi Yong getLocationOnScreenTong Yang Ke Yi Huo Qu ViewZai Ping Mu De Wei Zhi ,Dan Ru Guo Ni Shi Xiang Rang Xia Yi Ren Jie Pan Xia Nong Bu Ming Bai Ni Zai Zuo Shi Yao Huo Zhe Shi Bei Tong Shi Da Si De Hua ,Jin Guan Zhe Yao Zuo .

Jian Dan Shi Li :

@Override
protected void onDraw(Canvas canvas) {
float[] values = new float[9];
int[] location1 = new int[2];

Matrix matrix = canvas.getMatrix();
matrix.getValues(values);

location1[0] = (int) values[2];
location1[1] = (int) values[5];
Log.i(TAG, "location1 = " + Arrays.toString(location1));

int[] location2 = new int[2];
this.getLocationOnScreen(location2);
Log.i(TAG, "location2 = " + Arrays.toString(location2));
}

Jie Guo :

location1 = [0, 243]
location2 = [0, 243]

2.Li Yong setPolyToPolyZhi Zao 3DXiao Guo

Zhe Ge Quan Ping Da Jia Xiang Xiang Li La ,Bu Guo Wo Sou Liao Yi Xia Huan Zhen Sou Dao Liao Hao Dong Xi ,Zhi Qian Hong Yang Da Da Fa Guo Yi Pian Bo Wen Xiang Xi Jiang Jie Liao Li Yong setPolyToPolyZhi Zao De Zhe Die Xiao Guo Bu Ju ,Da Jia Zhi Jie Dao Ta De Bo Ke Qu Kan Ba ,Wo Jiu Bu Xie Liao .

Tu Pian Yin Yong Zi Hong Yang Da Da De Bo Ke ,Shao Zuo Liao Yi Xia Chu Li .

Bo Wen Lian Jie :

Android FoldingLayout Zhe Die Bu Ju Yuan Li Ji Shi Xian (Yi )

Android FoldingLayout Zhe Die Bu Ju Yuan Li Ji Shi Xian (Er )

Zong Jie

Ben Pian Ji Ben Jiang Jie Liao MatrixXiang Guan De Suo You Fang Fa ,Ying Gai Shi Mu Qian Dui MatrixJiang Jie Zui Quan Mian De Yi Pian Zhong Wen Wen Zhang Liao ,Jian Yi Pei He Shang Yi Pian MatrixYuan Li Shi Yong Xiao Guo Geng Jia .

You Yu Ben Ren Shui Ping You Xian ,Ke Neng Chu Yu Wu Jie Huo Zhe Bi Wu Nan Mian Chu Cuo ,Ru Guo Fa Xian You Wen Ti Huo Zhe Dui Wen Zhong Nei Rong Cun Zai Yi Wen Huan Ying Zai Xia Mian Ping Lun Qu Gao Su Wo ,Qing Dui Wen Ti Miao Shu Jin Liang Xiang Xi ,Yi Bang Zhu Wo Ke Yi Kuai Su Zhao Dao Wen Ti Gen Yuan .

About Me

Zuo Zhe Wei Bo : @GcsSloop

Can Kao Zi Liao

Matrix

Matrix.ScaleToFit

AndroidZhong Tu Xiang Bian Huan MatrixDe Yuan Li , Dai Ma Yan Zheng He Ying Yong

Understanding Affine Transformations With Matrix Mathematics