blobt
4 years ago
commit
1784db117e
10 changed files with 1503 additions and 0 deletions
-
43.gitignore
-
BIN.vs/3dMath/v15/.suo
-
BIN.vs/3dMath/v15/Browse.VC.opendb
-
313dMath.sln
-
1353dMath.vcxproj
-
303dMath.vcxproj.filters
-
43dMath.vcxproj.user
-
1041GMath.cpp
-
202GMath.h
-
17main.cpp
@ -0,0 +1,43 @@ |
|||||
|
# ---> C++ |
||||
|
# Prerequisites |
||||
|
*.d |
||||
|
|
||||
|
# Compiled Object files |
||||
|
*.slo |
||||
|
*.lo |
||||
|
*.o |
||||
|
*.obj |
||||
|
|
||||
|
# Precompiled Headers |
||||
|
*.gch |
||||
|
*.pch |
||||
|
|
||||
|
# Compiled Dynamic libraries |
||||
|
*.so |
||||
|
*.dylib |
||||
|
*.dll |
||||
|
|
||||
|
# Fortran module files |
||||
|
*.mod |
||||
|
*.smod |
||||
|
|
||||
|
# Compiled Static libraries |
||||
|
*.lai |
||||
|
*.la |
||||
|
*.a |
||||
|
*.lib |
||||
|
|
||||
|
# Executables |
||||
|
*.exe |
||||
|
*.out |
||||
|
*.app |
||||
|
|
||||
|
|
||||
|
#vs2015 |
||||
|
Debug |
||||
|
Release |
||||
|
x64 |
||||
|
.git |
||||
|
ipch |
||||
|
*.VC.db |
||||
|
*.VC.VC.opendb |
@ -0,0 +1,31 @@ |
|||||
|
|
||||
|
Microsoft Visual Studio Solution File, Format Version 12.00 |
||||
|
# Visual Studio 15 |
||||
|
VisualStudioVersion = 15.0.28307.1300 |
||||
|
MinimumVisualStudioVersion = 10.0.40219.1 |
||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3dMath", "3dMath.vcxproj", "{BAB2F10C-2B89-463F-B785-9A18937F6238}" |
||||
|
EndProject |
||||
|
Global |
||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
||||
|
Debug|x64 = Debug|x64 |
||||
|
Debug|x86 = Debug|x86 |
||||
|
Release|x64 = Release|x64 |
||||
|
Release|x86 = Release|x86 |
||||
|
EndGlobalSection |
||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution |
||||
|
{BAB2F10C-2B89-463F-B785-9A18937F6238}.Debug|x64.ActiveCfg = Debug|x64 |
||||
|
{BAB2F10C-2B89-463F-B785-9A18937F6238}.Debug|x64.Build.0 = Debug|x64 |
||||
|
{BAB2F10C-2B89-463F-B785-9A18937F6238}.Debug|x86.ActiveCfg = Debug|Win32 |
||||
|
{BAB2F10C-2B89-463F-B785-9A18937F6238}.Debug|x86.Build.0 = Debug|Win32 |
||||
|
{BAB2F10C-2B89-463F-B785-9A18937F6238}.Release|x64.ActiveCfg = Release|x64 |
||||
|
{BAB2F10C-2B89-463F-B785-9A18937F6238}.Release|x64.Build.0 = Release|x64 |
||||
|
{BAB2F10C-2B89-463F-B785-9A18937F6238}.Release|x86.ActiveCfg = Release|Win32 |
||||
|
{BAB2F10C-2B89-463F-B785-9A18937F6238}.Release|x86.Build.0 = Release|Win32 |
||||
|
EndGlobalSection |
||||
|
GlobalSection(SolutionProperties) = preSolution |
||||
|
HideSolutionNode = FALSE |
||||
|
EndGlobalSection |
||||
|
GlobalSection(ExtensibilityGlobals) = postSolution |
||||
|
SolutionGuid = {B523576E-FA21-49B7-90A5-0F9CF9D239BD} |
||||
|
EndGlobalSection |
||||
|
EndGlobal |
@ -0,0 +1,135 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
|
<ItemGroup Label="ProjectConfigurations"> |
||||
|
<ProjectConfiguration Include="Debug|Win32"> |
||||
|
<Configuration>Debug</Configuration> |
||||
|
<Platform>Win32</Platform> |
||||
|
</ProjectConfiguration> |
||||
|
<ProjectConfiguration Include="Release|Win32"> |
||||
|
<Configuration>Release</Configuration> |
||||
|
<Platform>Win32</Platform> |
||||
|
</ProjectConfiguration> |
||||
|
<ProjectConfiguration Include="Debug|x64"> |
||||
|
<Configuration>Debug</Configuration> |
||||
|
<Platform>x64</Platform> |
||||
|
</ProjectConfiguration> |
||||
|
<ProjectConfiguration Include="Release|x64"> |
||||
|
<Configuration>Release</Configuration> |
||||
|
<Platform>x64</Platform> |
||||
|
</ProjectConfiguration> |
||||
|
</ItemGroup> |
||||
|
<PropertyGroup Label="Globals"> |
||||
|
<VCProjectVersion>15.0</VCProjectVersion> |
||||
|
<ProjectGuid>{BAB2F10C-2B89-463F-B785-9A18937F6238}</ProjectGuid> |
||||
|
<RootNamespace>My3dMath</RootNamespace> |
||||
|
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion> |
||||
|
</PropertyGroup> |
||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> |
||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> |
||||
|
<ConfigurationType>Application</ConfigurationType> |
||||
|
<UseDebugLibraries>true</UseDebugLibraries> |
||||
|
<PlatformToolset>v141</PlatformToolset> |
||||
|
<CharacterSet>MultiByte</CharacterSet> |
||||
|
</PropertyGroup> |
||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> |
||||
|
<ConfigurationType>Application</ConfigurationType> |
||||
|
<UseDebugLibraries>false</UseDebugLibraries> |
||||
|
<PlatformToolset>v141</PlatformToolset> |
||||
|
<WholeProgramOptimization>true</WholeProgramOptimization> |
||||
|
<CharacterSet>MultiByte</CharacterSet> |
||||
|
</PropertyGroup> |
||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> |
||||
|
<ConfigurationType>Application</ConfigurationType> |
||||
|
<UseDebugLibraries>true</UseDebugLibraries> |
||||
|
<PlatformToolset>v141</PlatformToolset> |
||||
|
<CharacterSet>MultiByte</CharacterSet> |
||||
|
</PropertyGroup> |
||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> |
||||
|
<ConfigurationType>Application</ConfigurationType> |
||||
|
<UseDebugLibraries>false</UseDebugLibraries> |
||||
|
<PlatformToolset>v141</PlatformToolset> |
||||
|
<WholeProgramOptimization>true</WholeProgramOptimization> |
||||
|
<CharacterSet>MultiByte</CharacterSet> |
||||
|
</PropertyGroup> |
||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> |
||||
|
<ImportGroup Label="ExtensionSettings"> |
||||
|
</ImportGroup> |
||||
|
<ImportGroup Label="Shared"> |
||||
|
</ImportGroup> |
||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
||||
|
</ImportGroup> |
||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
||||
|
</ImportGroup> |
||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> |
||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
||||
|
</ImportGroup> |
||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> |
||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
||||
|
</ImportGroup> |
||||
|
<PropertyGroup Label="UserMacros" /> |
||||
|
<PropertyGroup /> |
||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
||||
|
<ClCompile> |
||||
|
<WarningLevel>Level3</WarningLevel> |
||||
|
<Optimization>Disabled</Optimization> |
||||
|
<SDLCheck>true</SDLCheck> |
||||
|
<ConformanceMode>true</ConformanceMode> |
||||
|
</ClCompile> |
||||
|
<Link> |
||||
|
<SubSystem>Console</SubSystem> |
||||
|
</Link> |
||||
|
</ItemDefinitionGroup> |
||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> |
||||
|
<ClCompile> |
||||
|
<WarningLevel>Level3</WarningLevel> |
||||
|
<Optimization>Disabled</Optimization> |
||||
|
<SDLCheck>true</SDLCheck> |
||||
|
<ConformanceMode>true</ConformanceMode> |
||||
|
</ClCompile> |
||||
|
<Link> |
||||
|
<SubSystem>Console</SubSystem> |
||||
|
</Link> |
||||
|
</ItemDefinitionGroup> |
||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
||||
|
<ClCompile> |
||||
|
<WarningLevel>Level3</WarningLevel> |
||||
|
<Optimization>MaxSpeed</Optimization> |
||||
|
<FunctionLevelLinking>true</FunctionLevelLinking> |
||||
|
<IntrinsicFunctions>true</IntrinsicFunctions> |
||||
|
<SDLCheck>true</SDLCheck> |
||||
|
<ConformanceMode>true</ConformanceMode> |
||||
|
</ClCompile> |
||||
|
<Link> |
||||
|
<SubSystem>Console</SubSystem> |
||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding> |
||||
|
<OptimizeReferences>true</OptimizeReferences> |
||||
|
</Link> |
||||
|
</ItemDefinitionGroup> |
||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> |
||||
|
<ClCompile> |
||||
|
<WarningLevel>Level3</WarningLevel> |
||||
|
<Optimization>MaxSpeed</Optimization> |
||||
|
<FunctionLevelLinking>true</FunctionLevelLinking> |
||||
|
<IntrinsicFunctions>true</IntrinsicFunctions> |
||||
|
<SDLCheck>true</SDLCheck> |
||||
|
<ConformanceMode>true</ConformanceMode> |
||||
|
</ClCompile> |
||||
|
<Link> |
||||
|
<SubSystem>Console</SubSystem> |
||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding> |
||||
|
<OptimizeReferences>true</OptimizeReferences> |
||||
|
</Link> |
||||
|
</ItemDefinitionGroup> |
||||
|
<ItemGroup> |
||||
|
<ClInclude Include="GMath.h" /> |
||||
|
</ItemGroup> |
||||
|
<ItemGroup> |
||||
|
<ClCompile Include="GMath.cpp" /> |
||||
|
<ClCompile Include="main.cpp" /> |
||||
|
</ItemGroup> |
||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |
||||
|
<ImportGroup Label="ExtensionTargets"> |
||||
|
</ImportGroup> |
||||
|
</Project> |
@ -0,0 +1,30 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
|
<ItemGroup> |
||||
|
<Filter Include="源文件"> |
||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> |
||||
|
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> |
||||
|
</Filter> |
||||
|
<Filter Include="头文件"> |
||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> |
||||
|
<Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions> |
||||
|
</Filter> |
||||
|
<Filter Include="资源文件"> |
||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> |
||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> |
||||
|
</Filter> |
||||
|
</ItemGroup> |
||||
|
<ItemGroup> |
||||
|
<ClInclude Include="GMath.h"> |
||||
|
<Filter>头文件</Filter> |
||||
|
</ClInclude> |
||||
|
</ItemGroup> |
||||
|
<ItemGroup> |
||||
|
<ClCompile Include="GMath.cpp"> |
||||
|
<Filter>源文件</Filter> |
||||
|
</ClCompile> |
||||
|
<ClCompile Include="main.cpp"> |
||||
|
<Filter>源文件</Filter> |
||||
|
</ClCompile> |
||||
|
</ItemGroup> |
||||
|
</Project> |
@ -0,0 +1,4 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
|
<PropertyGroup /> |
||||
|
</Project> |
1041
GMath.cpp
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,202 @@ |
|||||
|
#pragma once |
||||
|
#include <cmath> |
||||
|
#include <stdio.h> |
||||
|
#include <cassert> |
||||
|
#include <iostream> |
||||
|
#include <iomanip> |
||||
|
#include <stdarg.h> |
||||
|
|
||||
|
#define PRECISION 0.000001 |
||||
|
#define SQRT(X) sqrt((X)) //求平方根 |
||||
|
#define SQR(X) ((X)*(X)) //求平方 |
||||
|
#define ABS(X) abs((X)) |
||||
|
#define EQ(X,Y,EPS) (ABS((X)-(Y))<EPS)//通过误差去判断,两个数是否相等 |
||||
|
#define EQ_ZERO(X,EPS) (ABS((X))<EPS) |
||||
|
#define ARR_ZERO(A, N) memset((A), 0, sizeof(A[0])*(N)) |
||||
|
#define MIN(x,y) (x)<(y)?(x):(y); |
||||
|
#define SWAP(type, x, y) {type tmp=(x); (x)=(y); (y) = tmp;} |
||||
|
|
||||
|
using namespace std; |
||||
|
|
||||
|
class GVector3 { |
||||
|
private: |
||||
|
float v[3]; |
||||
|
public: |
||||
|
GVector3(float x = 0.0f, float y = 0.0f, float z = 0.0f); |
||||
|
GVector3(const GVector3& copy); |
||||
|
GVector3& operator =(const GVector3& rhs); |
||||
|
|
||||
|
//向量加减 |
||||
|
GVector3 operator +(const GVector3& rhs) const; // u + v |
||||
|
GVector3 operator -(const GVector3& rhs) const; // u - v |
||||
|
|
||||
|
//向量和常量乘除 |
||||
|
friend GVector3 operator *(const GVector3& lhs, const float& k); // u * k |
||||
|
friend GVector3 operator *(const float& k, const GVector3& rhs); // k * u |
||||
|
friend GVector3 operator /(const GVector3& lhs, const float& k); // u / k |
||||
|
|
||||
|
//求向量的模和方向 |
||||
|
friend float norm(const GVector3& v); //求向量大小或模或范数 |
||||
|
GVector3& normalize(); //求向量方向 单位向量 |
||||
|
|
||||
|
//求向量的内积 |
||||
|
float operator *(const GVector3& rhs) const; |
||||
|
|
||||
|
//向量投影 |
||||
|
friend GVector3 proj(const GVector3& p, const GVector3& q); |
||||
|
friend GVector3 perp(const GVector3& p, const GVector3& q); |
||||
|
|
||||
|
//求向量内积 叉乘 |
||||
|
GVector3 operator^(const GVector3& rhs) const; |
||||
|
|
||||
|
//完善向量类1 |
||||
|
GVector3& Set(const float& x, const float& y, const float& z); |
||||
|
friend float distance(const GVector3& v, const GVector3 u); |
||||
|
|
||||
|
//完善向量类2 |
||||
|
GVector3& operator +=(const GVector3& rhs); |
||||
|
GVector3& operator -=(const GVector3& rhs); |
||||
|
friend ostream& operator<<(ostream& os, const GVector3& v); |
||||
|
|
||||
|
//完善向量类3 |
||||
|
GVector3& operator *=(const float& k); |
||||
|
GVector3& operator /=(const float& k); |
||||
|
GVector3& operator ^=(const GVector3& rhs); |
||||
|
|
||||
|
//完善向量类4 |
||||
|
bool operator ==(const GVector3 rhs) const; |
||||
|
bool operator !=(const GVector3 rhs) const; |
||||
|
|
||||
|
//完善向量类5 |
||||
|
GVector3 operator+() const; |
||||
|
GVector3 operator-() const; |
||||
|
float& operator [](const int& idx); //下标赋值 |
||||
|
const float operator [](const int& idx) const;//下标获取分量 |
||||
|
}; |
||||
|
|
||||
|
class GMatrix; |
||||
|
class GVector { |
||||
|
public: |
||||
|
//GVector 1~2 |
||||
|
GVector(int dim = 3); |
||||
|
GVector(int dim, double x, ...); |
||||
|
GVector(const GVector3& copy); |
||||
|
GVector(const GVector& copy); |
||||
|
~GVector(); |
||||
|
|
||||
|
//GVector 3 |
||||
|
GVector& Set(double x, ...); |
||||
|
GVector& Set(float *p); |
||||
|
|
||||
|
//GVector 4 |
||||
|
GVector& operator =(const GVector& rhs); |
||||
|
GVector& operator +=(const GVector& rhs); |
||||
|
GVector& operator -=(const GVector& rhs); |
||||
|
GVector& operator +=(const float& k); |
||||
|
GVector& operator -=(const float& k); |
||||
|
|
||||
|
GVector &operator *=(const float &k); |
||||
|
GVector &operator /=(const float &k); |
||||
|
|
||||
|
bool operator ==(const GVector& rhs) const; |
||||
|
bool operator !=(const GVector& rhs) const; |
||||
|
|
||||
|
GVector operator +() const; |
||||
|
GVector operator -() const; |
||||
|
|
||||
|
GVector operator +(const GVector& rhs) const; |
||||
|
GVector operator -(const GVector& rhs) const; |
||||
|
float operator *(const GVector& rhs) const; |
||||
|
GVector operator /(const float& k) const; |
||||
|
|
||||
|
float& operator [](const int& idx); |
||||
|
const float& operator [](const int& idx) const; |
||||
|
|
||||
|
GVector& Nornalize(); |
||||
|
|
||||
|
int GetDim() const; |
||||
|
|
||||
|
friend GVector operator *(const float& k, const GVector& rhs); |
||||
|
friend GVector operator *(const GVector& lhs, const float& k); |
||||
|
friend GVector operator *(const GMatrix& m, const GVector& v); |
||||
|
friend GMatrix operator *(const GVector& v, const GMatrix& m); |
||||
|
friend float norm(const GVector& v); |
||||
|
friend float distance(const GVector& v, const GVector& u); |
||||
|
friend ostream& operator <<(ostream& os, const GVector& v); |
||||
|
|
||||
|
friend class GMatrix; |
||||
|
private: |
||||
|
int n; |
||||
|
float* v; |
||||
|
}; |
||||
|
|
||||
|
class GMatrix { |
||||
|
public: |
||||
|
GMatrix(int row = 4, int col = 4, float *elem = NULL); |
||||
|
GMatrix(const GMatrix& copy); |
||||
|
~GMatrix(); |
||||
|
|
||||
|
GMatrix& operator =(const GMatrix& rhs); |
||||
|
|
||||
|
GMatrix& operator +=(const GMatrix& rhs); |
||||
|
GMatrix& operator -=(const GMatrix& rhs); |
||||
|
GMatrix& operator *=(const float& k); |
||||
|
GMatrix& operator *=(const GMatrix& rhs); |
||||
|
GMatrix& operator /=(const float& k); |
||||
|
|
||||
|
bool operator ==(const GMatrix& rhs) const; |
||||
|
bool operator !=(const GMatrix& rhs) const; |
||||
|
|
||||
|
float* operator [](const int idx); |
||||
|
const float* operator [](const int idx) const; |
||||
|
|
||||
|
GMatrix operator +() const; |
||||
|
GMatrix operator -() const; |
||||
|
|
||||
|
GMatrix operator +(const GMatrix& rhs) const; |
||||
|
GMatrix operator -(const GMatrix& rhs) const; |
||||
|
GMatrix operator *(const GMatrix& rhs) const; |
||||
|
GMatrix operator /(const float& k) const; |
||||
|
|
||||
|
GMatrix& SetTranspose(); |
||||
|
GMatrix& SetIdentity(); |
||||
|
GMatrix& SetZeros(); |
||||
|
|
||||
|
GMatrix& SetRowVec(const int idx, const GVector& v); |
||||
|
GMatrix& SetColVec(const int idx, const GVector& v); |
||||
|
|
||||
|
GVector GetRowVec(const int idx) const; |
||||
|
GVector GetColVec(const int idx) const; |
||||
|
|
||||
|
GMatrix& ExchangeRows(const int idx0, const int idx1); |
||||
|
GMatrix& ExchangeCols(const int idx0, const int idx1); |
||||
|
|
||||
|
int GetRowNum() const; |
||||
|
int GetColNum() const; |
||||
|
|
||||
|
bool IsSquare() const; |
||||
|
|
||||
|
friend GMatrix operator *(const GMatrix& lhs, const float& k); |
||||
|
friend GMatrix operator *(const float& k , const GMatrix& rhs); |
||||
|
|
||||
|
friend GVector operator *(const GMatrix& m, const GVector& v); |
||||
|
friend GMatrix operator *(const GVector& v, const GMatrix& m); |
||||
|
|
||||
|
friend ostream& operator <<(ostream& os, const GMatrix& m); |
||||
|
|
||||
|
friend GMatrix RowEchelonForm(const GMatrix& m); |
||||
|
friend GMatrix ReduceRowEchelonForm(const GMatrix& m); |
||||
|
|
||||
|
friend float* from_arr(const GMatrix& m); |
||||
|
|
||||
|
friend int Rank(const GMatrix& m);//获取矩阵的秩 |
||||
|
friend int Nullity(const GMatrix& m);//获取矩阵的零化度 |
||||
|
|
||||
|
friend GMatrix Mij(const GMatrix& m, int r, int c); //计算余子式 |
||||
|
friend float Det(const GMatrix& m); |
||||
|
|
||||
|
private: |
||||
|
int r; |
||||
|
int c; |
||||
|
float *m; |
||||
|
}; |
@ -0,0 +1,17 @@ |
|||||
|
#include "GMath.h"
|
||||
|
|
||||
|
int main() { |
||||
|
|
||||
|
float f1[] = { |
||||
|
1.0f, 4.0f, -8.0, |
||||
|
0.0f, 2.0f, 9.0, |
||||
|
0.0f, 6.0f, 1.0f |
||||
|
}; |
||||
|
|
||||
|
GMatrix M1(3,3, f1); |
||||
|
cout << M1 << endl; |
||||
|
|
||||
|
cout << Det(M1) << endl; |
||||
|
|
||||
|
return 0; |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue