diff --git a/.vs/3dMath/v15/.suo b/.vs/3dMath/v15/.suo
index 769db18..4c2d463 100644
Binary files a/.vs/3dMath/v15/.suo and b/.vs/3dMath/v15/.suo differ
diff --git a/.vs/3dMath/v15/Browse.VC.opendb b/.vs/3dMath/v15/Browse.VC.opendb
new file mode 100644
index 0000000..f2a154f
Binary files /dev/null and b/.vs/3dMath/v15/Browse.VC.opendb differ
diff --git a/3dMath.vcxproj b/3dMath.vcxproj
index b805f1c..49eedf2 100644
--- a/3dMath.vcxproj
+++ b/3dMath.vcxproj
@@ -123,6 +123,8 @@
+
+
diff --git a/3dMath.vcxproj.filters b/3dMath.vcxproj.filters
index 7ed2a6c..d3aa178 100644
--- a/3dMath.vcxproj.filters
+++ b/3dMath.vcxproj.filters
@@ -18,6 +18,12 @@
头文件
+
+ 头文件
+
+
+ 头文件
+
diff --git a/CArrayBuffer.h b/CArrayBuffer.h
new file mode 100644
index 0000000..15a3e32
--- /dev/null
+++ b/CArrayBuffer.h
@@ -0,0 +1,23 @@
+#pragma once
+typedef unsigned char Byte;
+
+class CArrayBuffer {
+public:
+ CArrayBuffer(int byteLength = 8) {
+ this->_byteLenght = byteLength;
+ this->pData = new Byte[this->_byteLenght];
+ }
+ ~CArrayBuffer() {
+ if (this->pData != nullptr) {
+ delete[] this->pData;
+ this->pData = nullptr;
+ }
+ }
+ int byteLength() {
+ return this->_byteLenght;
+ }
+public:
+ Byte *pData;
+private:
+ int _byteLenght;
+};
\ No newline at end of file
diff --git a/CDataView.h b/CDataView.h
new file mode 100644
index 0000000..31c34f8
--- /dev/null
+++ b/CDataView.h
@@ -0,0 +1,36 @@
+#pragma once
+#include
+#include "CArrayBuffer.h"
+
+typedef unsigned short uint16;
+typedef float float32;
+
+class CDataView {
+public:
+ CArrayBuffer* buffer;
+
+ int byteOffset;
+ int byteLength;
+
+ CDataView(CArrayBuffer* pBuffer, int byteOffset, int byteLength) {
+ this->buffer = pBuffer;
+ this->byteOffset = byteOffset;
+ this->byteLength = byteLength;
+ }
+
+ void setFloat32(int offset, float32 value) {
+ memcpy(this->buffer->pData + (this->byteOffset + offset), &value, sizeof(float32));
+ }
+
+ float32 getFloat32(int offset) {
+ return *((float32*)(this->buffer->pData + (this->byteOffset + offset)));
+ }
+
+ void setUint16(int offset, uint16 value) {
+ memcpy(this->buffer->pData + (this->byteOffset + offset), &value, sizeof(uint16));
+ }
+
+ uint16 getUint16(int offset) {
+ return *((uint16*)(this->buffer->pData + (this->byteOffset + offset)));
+ }
+};
\ No newline at end of file
diff --git a/main.cpp b/main.cpp
index c638222..0feef0e 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1,17 +1,40 @@
#include "GMath.h"
+#include "CArrayBuffer.h"
+#include "CDataView.h"
int main() {
+ CArrayBuffer buffer(16);
+ CDataView view0(&buffer, 0, buffer.byteLength());
- float a[] = {
- 0, 0, 0, 2,
- 0, 0, 2, 1,
- 0, 2, 1, 2,
- 2, 1, 2, 3
+ view0.setFloat32(8, 99.99);
+ view0.setUint16(8 + 4, 2048);
+
+ printf("%f\n", view0.getFloat32(8));
+ printf("%d\n", view0.getUint16(8+4));
+
+ CDataView view1(&buffer, 8, 18);
+
+ printf("%f\n", view1.getFloat32(0));
+ printf("%d\n", view1.getUint16(4));
+
+ /*float a[] = {
+ 2, 2, 2, 2,
+ 3, 3, 3, 3,
+ 4, 4, 4, 4,
+ 5, 5, 5, 5
};
GMatrix A(4, 4, a);
- //cout << B*A << endl;
- cout << Det(A) << endl;
+ float b[] = {
+ 2,
+ 2,
+ 2,
+ 2
+ };
+ GMatrix B(4, 1, b);
+
+
+ cout << A*B << endl;*/
/*float a[] = {
1,0,