無限大小矩陣的設計

2021-03-31 19:26:22 字數 2317 閱讀 5923

這一久在學習動力學,遇到乙個很棘手的問題----接觸力的計算,即為當乙個物體的某一點與另乙個問題的相對速度(vr = (v1 - v2) 點積 n)為0 ,或接近0時所受到的力,需要使用隨意行 和 列的矩陣(我稱它為 bigmatrix),而微軟的dxsdk的數學庫並沒有提供大於 4x4的矩陣,所以決定自己寫乙個,經過一番努力,將其完成,現我把源**貼出來,希望對大家以後遇到類似問題時有所幫助!

bigmatrix為乙個類, +=,-=,*=及 /=為bigmatrix的成員函式,並且過載,返回乙個引用!而  +,-,*,/  為非成員函式,這幾個運算子並沒有過載,原因是由於c ++本身的缺陷,在這種情況下,只能返回值,不能是指標或是引用,因為+,-,*,/作為成員函式時返回指標或引用只能是區域性變數的指標或引用,這是嚴重錯誤的(具體為什麼請看有關c++書籍進行更多的了解)而返回值要呼叫拷貝建構函式,這樣的效率是非常低下的,所以我在這裡使用多乙個包含返回值的函式,例如matrixmultiply ,事實上微軟在dxsdk的數學庫中也確實是這樣做的!!

**如下:

兩個檔案,乙個是matrix.cpp,另乙個是matrix.h.

///matrix.cpp

//#include "matrix.h"

bigmatrix::bigmatrix(int irow,int icolumn)

}//現在定義乙個 irow x icolumn 大小的陣列

/*matrix.resize(irow);

for(int i = 0;i 

matrix[i].resize(icolumn);*/

}bigmatrix::~bigmatrix(void)

bigmatrix& bigmatrix::operator += (bigmatrix cm)

}//使主對角線的元為 1;

for(int i = 0;i 

}for(int j = 0;j 

}for(int i =0;i 

}for(int i = 0;i 

delete f_presult[i];

delete f_presult;

return pout;

}bigmatrix* matrixtranspose(bigmatrix* pout,const bigmatrix* pm)

}for(int i = 0;i getrow();i ++)

}return pout;

}bigmatrix *matrixadd(bigmatrix *pout,const bigmatrix *pm1,const bigmatrix *pm2)

}return pout;

}bigmatrix *matrixsubtract(bigmatrix *pout,const bigmatrix *pm1,const bigmatrix *pm2)

}return pout;

}bigmatrix *matrixmultiply(bigmatrix *pout,const bigmatrix *pm1,const bigmatrix *pm2)}}

return pout;}/

//matrix.h

///#pragma once

#include

using namespace std;

class bigmatrix

inline int getcolumn(void) const

private:

int m_irow,m_icolumn;

bigmatrix *matrixinverse(bigmatrix* pout,const bigmatrix* pm);

bigmatrix *matrixtranspose(bigmatrix* pout,const bigmatrix* pm);

bigmatrix *matrixadd(bigmatrix *pout,const bigmatrix *pm1,const bigmatrix *pm2);

bigmatrix *matrixsubtract(bigmatrix *pout,const bigmatrix *pm1,const bigmatrix *pm2);

bigmatrix *matrixmultiply(bigmatrix *pout,const bigmatrix *pm1,const bigmatrix *pm2);

執行演示結果:

基於網格的無限大戰爭迷霧實現方案

戰爭迷霧常見的實現方案是使用一張貼圖儲存地圖上每個格仔有無迷霧,然後對這樣貼圖進行模糊後作為mask,可以實現邊緣柔和漸變的迷霧效果。如果地圖大小是固定的,那麼使用採用固定的一張或多張貼圖的方案,覆蓋整個地圖。但是如果地圖是無限大的,那麼隨著攝像機的移動,這些貼圖必然要比較頻繁地更新,而每次更新都需...

為什麼理想電流源的等效內阻是無限大

電流源和電 壓 源是兩個概念,你可以把電流源想象成乙個只提供電流,不接負載時電壓為0的源.這正好和電源相反,電源是乙個只提供電壓,不接負載的時候電流為0的源.理想的電流源是不管這個電流源接多少負載,電流始終不變.這就和理想的電壓源不管接多少負載電壓始終不變乙個道理.我們知道乙個電池串接乙個燈泡可以發...

m 公升的水倒入 n 個相同的容器 容器無限大

要把 m 公升的水倒入 n 個相同的容器中 假設容器足夠大 允許有的容器是空的,問共有多少種不同的倒法?用k表示 5,1,1和1,5,1和 1,1,5 是同一種倒法。input 第一行是測試資料的數目 x 0 x 20 以下每行均包含二個整數m和n,以空格分開。1 m,n 10。output 對輸入...