ฟังก์ชันเมตริกซ์ของ RenderScript

ภาพรวม

ฟังก์ชันเหล่านี้ช่วยให้คุณจัดการกับเมทริกซ์สี่เหลี่ยมจัตุรัสที่มีลําดับชั้น 2x2, 3x3 และ 4x4 ได้ ซึ่งมีประโยชน์อย่างยิ่งสำหรับการเปลี่ยนรูปแบบกราฟิก และเข้ากันได้กับ OpenGL

เราใช้ดัชนีฐาน 0 สำหรับแถวและคอลัมน์ เช่น องค์ประกอบสุดท้ายของ rs_matrix4x4 จะอยู่ที่ (3, 3)

RenderScript ใช้เมทริกซ์แบบคอลัมน์หลักและเวกเตอร์ตามคอลัมน์ การเปลี่ยนรูปแบบเวกเตอร์จะทําโดยการคูณเวกเตอร์ในภายหลัง เช่น (matrix * vector) ตามที่ระบุโดย rsMatrixMultiply()

หากต้องการสร้างเมทริกซ์การเปลี่ยนรูปแบบที่ทำการแปลง 2 ครั้งพร้อมกัน ให้คูณเมทริกซ์ต้นทาง 2 รายการ โดยให้การเปลี่ยนรูปแบบแรกเป็นอาร์กิวเมนต์ด้านขวา เช่น หากต้องการสร้างเมทริกซ์การเปลี่ยนรูปแบบที่ใช้การเปลี่ยนรูปแบบ s1 ตามด้วย s2 ให้เรียกใช้ rsMatrixLoadMultiply(&combined, &s2, &s1) ซึ่งมาจาก s2 * (s1 * v) ซึ่งก็คือ (s2 * s1) * v

เรามีฟังก์ชัน 2 รูปแบบในการสร้างเมทริกซ์การเปลี่ยนรูปแบบ ได้แก่ Transformation ของ rsMatrixLoad และ Transformation ของ rsMatrix รูปแบบแรกจะจัดเก็บเมทริกซ์การเปลี่ยนรูปแบบไว้ในอาร์กิวเมนต์แรก ส่วนหลังจะแก้ไขเมทริกซ์การเปลี่ยนรูปแบบที่มีอยู่เพื่อให้การเปลี่ยนรูปแบบใหม่เกิดขึ้นก่อน เช่น หากคุณเรียกใช้ rsMatrixTranslate() ในเมทริกซ์ที่มีการสเกลแล้ว เมทริกซ์ที่ได้เมื่อนำไปใช้กับเวกเตอร์จะทำการแปลก่อนแล้วจึงทำการสเกล

สรุป

ฟังก์ชัน
rsExtractFrustumPlanes คำนวณระนาบฟรัสตัม
rsIsSphereInFrustum ตรวจสอบว่าทรงกลมอยู่ในระนาบทรงกรวยหรือไม่
rsMatrixGet รับองค์ประกอบ 1 รายการ
rsMatrixInverse หาอินเวอร์สเมทริกซ์ในตำแหน่ง
rsMatrixInverseTranspose เปลี่ยนรูปแบบและสลับที่ของเมทริกซ์
rsMatrixLoad โหลดหรือคัดลอกเมทริกซ์
rsMatrixLoadFrustum โหลดเมทริกซ์การฉายภาพกรวย
rsMatrixLoadIdentity โหลดเมทริกซ์ข้อมูลประจำตัว
rsMatrixLoadMultiply คูณเมทริกซ์ 2 รายการ
rsMatrixLoadOrtho โหลดเมทริกซ์การฉายภาพออร์โธกราฟิก
rsMatrixLoadPerspective โหลดเมทริกซ์การฉายภาพด้วยมุมมอง
rsMatrixLoadRotate โหลดเมทริกซ์การหมุน
rsMatrixLoadScale โหลดเมทริกซ์การปรับขนาด
rsMatrixLoadTranslate โหลดเมทริกซ์การแปล
rsMatrixMultiply คูณเมทริกซ์ด้วยเวกเตอร์หรือเมทริกซ์อื่น
rsMatrixRotate ใช้การหมุนกับเมทริกซ์การเปลี่ยนรูปแบบ
rsMatrixScale ใช้การปรับขนาดกับเมทริกซ์การเปลี่ยนรูปแบบ
rsMatrixSet ตั้งค่าองค์ประกอบ 1 รายการ
rsMatrixTranslate ใช้การเปลี่ยนรูปแบบกับเมทริกซ์การเปลี่ยนรูปแบบ
rsMatrixTranspose สลับตําแหน่งเมทริกซ์

ฟังก์ชัน

rsExtractFrustumPlanes : คำนวณระนาบขอบเขตการมองเห็น

void rsExtractFrustumPlanes(const rs_matrix4x4* viewProj, float4* left, float4* righ, float4* top, float4* bottom, float4* near, float4* far); เพิ่มใน API ระดับ 24
void rsExtractFrustumPlanes(const rs_matrix4x4* viewProj, float4* left, float4* right, float4* top, float4* bottom, float4* near, float4* far); นำออกจาก API ระดับ 24 ขึ้นไป
พารามิเตอร์
viewProjเมทริกซ์ที่จะดึงเครื่องบินออกมา
ซ้ายเครื่องบินด้านซ้าย
ขวาเครื่องบินที่ถูกต้อง
ด้านบนเครื่องบินด้านบน
ด้านล่างเครื่องบินด้านล่าง
บริเวณใกล้ๆใกล้เครื่องบิน
ไกลเครื่องบินที่อยู่ไกล
righ

คํานวณระนาบทรงกระบอก 6 ระนาบจากเมทริกซ์การฉายภาพ

rsIsSphereInFrustum : ตรวจสอบว่าทรงกลมอยู่ในระนาบรูปกรวยหรือไม่

bool rsIsSphereInFrustum(float4* sphere, float4* left, float4* right, float4* top, float4* bottom, float4* near, float4* far);
พารามิเตอร์
ทรงกลมfloat4 ที่แสดงทรงกลม
ซ้ายเครื่องบินด้านซ้าย
ขวาเครื่องบินที่ถูกต้อง
ด้านบนเครื่องบินด้านบน
ด้านล่างเครื่องบินด้านล่าง
บริเวณใกล้ๆใกล้เครื่องบิน
ไกลเครื่องบินที่อยู่ไกล

แสดงผลเป็น "จริง" หากทรงกลมอยู่ภายในระนาบทรงกรวย 6 ระนาบ

rsMatrixGet : รับองค์ประกอบเดียว

float rsMatrixGet(const rs_matrix2x2* m, uint32_t col, uint32_t row);
float rsMatrixGet(const rs_matrix3x3* m, uint32_t col, uint32_t row);
float rsMatrixGet(const rs_matrix4x4* m, uint32_t col, uint32_t row);
พารามิเตอร์
mเมทริกซ์ที่จะดึงองค์ประกอบ
คอลัมน์คอลัมน์แบบนับจาก 0 ขององค์ประกอบที่จะดึงข้อมูล
แถวแถวขององค์ประกอบที่จะดึงข้อมูลโดยนับจาก 0

แสดงผลองค์ประกอบเดียวของเมทริกซ์

คําเตือน: ลําดับของพารามิเตอร์คอลัมน์และแถวอาจไม่เป็นไปตามที่คาดไว้

rsMatrixInverse : เปลี่ยนเมทริกซ์ให้เป็นรูปแบบย้อนกลับ

bool rsMatrixInverse(rs_matrix4x4* m);
พารามิเตอร์
mเมทริกซ์ที่จะหาอินเวอร์ส

แสดงค่า "จริง" หากผนวกเมทริกซ์สลับกันได้สําเร็จ

rsMatrixInverseTranspose : เปลี่ยนค่าเมทริกซ์ให้เป็นค่าย้อนกลับและเปลี่ยนค่าเมทริกซ์

bool rsMatrixInverseTranspose(rs_matrix4x4* m);
พารามิเตอร์
mตารางเพื่อแก้ไข

ระบบจะเปลี่ยนรูปแบบเมทริกซ์ก่อนแล้วจึงเปลี่ยนรูปแบบกลับ แสดงค่า "จริง" หากหาอินเวอร์สเมทริกซ์ได้สําเร็จ

rsMatrixLoad : โหลดหรือคัดลอกเมทริกซ์

void rsMatrixLoad(rs_matrix2x2* destination, const float* array);
void rsMatrixLoad(rs_matrix2x2* destination, const rs_matrix2x2* source);
void rsMatrixLoad(rs_matrix3x3* destination, const float* array);
void rsMatrixLoad(rs_matrix3x3* destination, const rs_matrix3x3* source);
void rsMatrixLoad(rs_matrix4x4* destination, const float* array);
void rsMatrixLoad(rs_matrix4x4* destination, const rs_matrix2x2* source);
void rsMatrixLoad(rs_matrix4x4* destination, const rs_matrix3x3* source);
void rsMatrixLoad(rs_matrix4x4* destination, const rs_matrix4x4* source);
พารามิเตอร์
ปลายทางเมทริกซ์ที่จะตั้งค่า
อาร์เรย์อาร์เรย์ของค่าที่จะตั้งค่าเมทริกซ์ อาร์เรย์เหล่านี้ควรมีความยาว 4, 9 หรือ 16 รายการ ทั้งนี้ขึ้นอยู่กับขนาดของเมทริกซ์
แหล่งข้อมูลเมทริกซ์แหล่งที่มา

ตั้งค่าองค์ประกอบของเมทริกซ์จากอาร์เรย์ของตัวเลขทศนิยมหรือจากเมทริกซ์อื่น

หากโหลดจากอาร์เรย์ ตัวเลขทศนิยมควรอยู่ในลําดับแถวตามลําดับ เช่น องค์ประกอบ a row 0, column 0 ควรอยู่ก่อน ตามด้วยองค์ประกอบ at row 0, column 1 ฯลฯ

หากโหลดจากเมทริกซ์และแหล่งที่มามีขนาดเล็กกว่าปลายทาง ระบบจะเติมองค์ประกอบของเมทริกซ์เอกลักษณ์ในส่วนที่เหลือของปลายทาง เช่น การโหลด rs_matrix2x2 ลงใน rs_matrix4x4 จะให้ผลดังนี้

m00 m01 0.0 0.0
m10 m11 0.0 0.0
0.0 0.0 1.0 0.0
0.0 0.0 0.0 1.0

rsMatrixLoadFrustum : โหลดเมทริกซ์การฉายภาพกรวย

void rsMatrixLoadFrustum(rs_matrix4x4* m, float left, float right, float bottom, float top, float near, float far);
พารามิเตอร์
mเมทริกซ์ที่จะตั้งค่า
ซ้าย
ขวา
ด้านล่าง
ด้านบน
บริเวณใกล้ๆ
ไกล

สร้างเมทริกซ์การฉายภาพกรวยตัด ซึ่งจะเปลี่ยนรูปกล่องที่ระบุโดยระนาบการตัด 6 ระนาบ left, right, bottom, top, near, far

หากต้องการใช้การฉายนี้กับเวกเตอร์ ให้คูณเวกเตอร์ด้วยเมทริกซ์ที่สร้างขึ้นโดยใช้ rsMatrixMultiply()

rsMatrixLoadIdentity : โหลดเมทริกซ์เอกลักษณ์

void rsMatrixLoadIdentity(rs_matrix2x2* m);
void rsMatrixLoadIdentity(rs_matrix3x3* m);
void rsMatrixLoadIdentity(rs_matrix4x4* m);
พารามิเตอร์
mเมทริกซ์ที่จะตั้งค่า

ตั้งค่าองค์ประกอบของเมทริกซ์เป็นเมทริกซ์เอกลักษณ์

rsMatrixLoadMultiply : คูณเมทริกซ์ 2 รายการ

void rsMatrixLoadMultiply(rs_matrix2x2* m, const rs_matrix2x2* lhs, const rs_matrix2x2* rhs);
void rsMatrixLoadMultiply(rs_matrix3x3* m, const rs_matrix3x3* lhs, const rs_matrix3x3* rhs);
void rsMatrixLoadMultiply(rs_matrix4x4* m, const rs_matrix4x4* lhs, const rs_matrix4x4* rhs);
พารามิเตอร์
mเมทริกซ์ที่จะตั้งค่า
lhsเมทริกซ์ด้านซ้ายของผลิตภัณฑ์
rhsเมทริกซ์ที่ถูกต้องของผลิตภัณฑ์

ตั้งค่า m เป็นผลิตภัณฑ์เมทริกซ์ของ lhs * rhs

หากต้องการรวมเมทริกซ์การเปลี่ยนรูปแบบ 4x4 2 รายการ ให้คูณเมทริกซ์การเปลี่ยนรูปแบบที่ 2 ด้วยเมทริกซ์การเปลี่ยนรูปแบบที่ 1 เช่น หากต้องการสร้างเมทริกซ์การเปลี่ยนรูปแบบที่ใช้การเปลี่ยนรูปแบบ s1 ตามด้วย s2 ให้เรียกใช้ rsMatrixLoadMultiply(&combined, &s2, &s1)

คำเตือน: เวอร์ชันก่อน 21 ไม่รองรับการจัดเก็บผลลัพธ์กลับไปยังเมทริกซ์ด้านขวา และจะทำให้เกิดลักษณะการทำงานที่ไม่ระบุ ให้ใช้ rsMatrixMulitply แทน เช่น แทนที่จะใช้ rsMatrixLoadMultiply (&m2r, &m2r, &m2l) ให้ใช้ rsMatrixMultiply (&m2r, &m2l) rsMatrixLoadMultiply (&m2l, &m2r, &m2l) ทํางานได้ตามที่คาดไว้

rsMatrixLoadOrtho : โหลดเมทริกซ์การฉายภาพแบบออโตรกราฟิก

void rsMatrixLoadOrtho(rs_matrix4x4* m, float left, float right, float bottom, float top, float near, float far);
พารามิเตอร์
mเมทริกซ์ที่จะตั้งค่า
ซ้าย
ขวา
ด้านล่าง
ด้านบน
บริเวณใกล้ๆ
ไกล

สร้างเมทริกซ์การฉายภาพออร์โธกราฟิก ซึ่งเปลี่ยนกล่องที่ระบุโดยระนาบการครอบตัด 6 ระนาบ left, right, bottom, top, near, far ให้เป็นลูกบาศก์หน่วยที่มีมุมที่ (-1, -1, -1) และมุมตรงข้ามที่ (1, 1, 1)

หากต้องการใช้การฉายนี้กับเวกเตอร์ ให้คูณเวกเตอร์ด้วยเมทริกซ์ที่สร้างขึ้นโดยใช้ rsMatrixMultiply()

ดูที่ https://en.wikipedia.org/wiki/Orthographic_projection

rsMatrixLoadPerspective : โหลดเมทริกซ์การฉายภาพแบบเปอร์สเปกทีฟ

void rsMatrixLoadPerspective(rs_matrix4x4* m, float fovy, float aspect, float near, float far);
พารามิเตอร์
mเมทริกซ์ที่จะตั้งค่า
fovyขอบเขตการมองเห็น หน่วยเป็นองศาตามแกน Y
ด้านอัตราส่วน x / y
บริเวณใกล้ๆอยู่ใกล้กับระนาบการตัด
ไกลระนาบการตัดส่วนที่ไกล

สร้างเมทริกซ์การฉายภาพแบบเปอร์สเปกทีฟโดยสมมติว่ามุมมองเป็นแบบสมมาตร

หากต้องการใช้การฉายนี้กับเวกเตอร์ ให้คูณเวกเตอร์ด้วยเมทริกซ์ที่สร้างโดยใช้ rsMatrixMultiply()

rsMatrixLoadRotate : โหลดเมทริกซ์การหมุน

void rsMatrixLoadRotate(rs_matrix4x4* m, float rot, float x, float y, float z);
พารามิเตอร์
mเมทริกซ์ที่จะตั้งค่า
การเน่าระดับการหมุน หน่วยเป็นองศา
xคอมโพเนนต์ X ของเวกเตอร์ที่เป็นแกนหมุน
yองค์ประกอบ Y ของเวกเตอร์ที่เป็นแกนหมุน
zองค์ประกอบ Z ของเวกเตอร์ที่เป็นแกนหมุน

ฟังก์ชันนี้จะสร้างเมทริกซ์การหมุน แกนหมุนคือเวกเตอร์ (x, y, z)

หากต้องการหมุนเวกเตอร์ ให้คูณเวกเตอร์ด้วยเมทริกซ์ที่สร้างโดยใช้ rsMatrixMultiply()

ดู https://en.wikipedia.org/wiki/Rotation_matrix

rsMatrixLoadScale : โหลดเมทริกซ์การปรับขนาด

void rsMatrixLoadScale(rs_matrix4x4* m, float x, float y, float z);
พารามิเตอร์
mเมทริกซ์ที่จะตั้งค่า
xคูณเพื่อปรับขนาดคอมโพเนนต์ x
yคูณเพื่อปรับขนาดองค์ประกอบ y
zคูณเพื่อปรับขนาดองค์ประกอบ z

ฟังก์ชันนี้จะสร้างเมทริกซ์การปรับขนาด ซึ่งจะคูณองค์ประกอบแต่ละรายการของเวกเตอร์ด้วยตัวเลข ตัวเลขนี้อาจเป็นค่าลบได้

หากต้องการปรับขนาดเวกเตอร์ ให้คูณเวกเตอร์ด้วยเมทริกซ์ที่สร้างขึ้นโดยใช้ rsMatrixMultiply()

rsMatrixLoadTranslate : โหลดเมทริกซ์การแปล

void rsMatrixLoadTranslate(rs_matrix4x4* m, float x, float y, float z);
พารามิเตอร์
mเมทริกซ์ที่จะตั้งค่า
xจํานวนที่จะเพิ่มลงในคอมโพเนนต์ x แต่ละรายการ
yจํานวนที่จะเพิ่มลงในคอมโพเนนต์ y แต่ละรายการ
zจํานวนที่จะเพิ่มลงในคอมโพเนนต์ z แต่ละรายการ

ฟังก์ชันนี้จะสร้างเมทริกซ์การแปล ซึ่งจะเพิ่มตัวเลขลงในองค์ประกอบแต่ละรายการของเวกเตอร์

หากต้องการแปลเวกเตอร์ ให้คูณเวกเตอร์ด้วยเมทริกซ์ที่สร้างโดยใช้ rsMatrixMultiply()

rsMatrixMultiply : คูณเมทริกซ์ด้วยเวกเตอร์หรือเมทริกซ์อื่น

float2 rsMatrixMultiply(const rs_matrix2x2* m, float2 in); เพิ่มใน API ระดับ 14
float2 rsMatrixMultiply(rs_matrix2x2* m, float2 in); นำออกจาก API ระดับ 14 ขึ้นไป
float3 rsMatrixMultiply(const rs_matrix3x3* m, float2 in); เพิ่มใน API ระดับ 14
float3 rsMatrixMultiply(const rs_matrix3x3* m, float3 in); เพิ่มใน API ระดับ 14
float3 rsMatrixMultiply(rs_matrix3x3* m, float2 in); นำออกจาก API ระดับ 14 ขึ้นไป
float3 rsMatrixMultiply(rs_matrix3x3* m, float3 in); นำออกจาก API ระดับ 14 ขึ้นไป
float4 rsMatrixMultiply(const rs_matrix4x4* m, float2 in); เพิ่มใน API ระดับ 14
float4 rsMatrixMultiply(const rs_matrix4x4* m, float3 in); เพิ่มใน API ระดับ 14
float4 rsMatrixMultiply(const rs_matrix4x4* m, float4 in); เพิ่มใน API ระดับ 14
float4 rsMatrixMultiply(rs_matrix4x4* m, float2 in); นำออกจาก API ระดับ 14 ขึ้นไป
float4 rsMatrixMultiply(rs_matrix4x4* m, float3 in); นำออกจาก API ระดับ 14 ขึ้นไป
float4 rsMatrixMultiply(rs_matrix4x4* m, float4 in); นำออกจาก API ระดับ 14 ขึ้นไป
void rsMatrixMultiply(rs_matrix2x2* m, const rs_matrix2x2* rhs);
void rsMatrixMultiply(rs_matrix3x3* m, const rs_matrix3x3* rhs);
void rsMatrixMultiply(rs_matrix4x4* m, const rs_matrix4x4* rhs);
พารามิเตอร์
mเมทริกซ์ด้านซ้ายของผลิตภัณฑ์และเมทริกซ์ที่จะตั้งค่า
rhsเมทริกซ์ที่ถูกต้องของผลิตภัณฑ์
ใน

สำหรับเมทริกซ์ตามเมทริกซ์ ให้ตั้งค่า m เป็นผลิตภัณฑ์เมทริกซ์ m * rhs

เมื่อรวมเมทริกซ์การเปลี่ยนรูปแบบ 4x4 2 รายการโดยใช้ฟังก์ชันนี้ เมทริกซ์ที่ได้จะสอดคล้องกับการเปลี่ยนรูปแบบ rhs ก่อนแล้วตามด้วยการเปลี่ยนรูปแบบ m เดิม

สำหรับเมทริกซ์ตามตัวแปรเวกเตอร์ จะแสดงผลหลังการคูณเวกเตอร์ด้วยเมทริกซ์ นั่นคือ m * in

เมื่อคูณ float3 กับ rs_matrix4x4 ระบบจะขยายเวกเตอร์ด้วย (1)

เมื่อคูณ float2 กับ rs_matrix4x4 ระบบจะขยายเวกเตอร์ด้วย (0, 1)

เมื่อคูณ float2 กับ rs_matrix3x3 ระบบจะขยายเวกเตอร์ด้วย (0)

ตั้งแต่ API 14 เป็นต้นไป ฟังก์ชันนี้จะรับเมทริกซ์ const เป็นอาร์กิวเมนต์แรก

rsMatrixRotate : ใช้การหมุนกับเมทริกซ์การเปลี่ยนรูปแบบ

void rsMatrixRotate(rs_matrix4x4* m, float rot, float x, float y, float z);
พารามิเตอร์
mตารางเพื่อแก้ไข
การเน่าระดับการหมุน หน่วยเป็นองศา
xคอมโพเนนต์ X ของเวกเตอร์ที่เป็นแกนหมุน
yองค์ประกอบ Y ของเวกเตอร์ที่เป็นแกนหมุน
zองค์ประกอบ Z ของเวกเตอร์ที่เป็นแกนหมุน

คูณเมทริกซ์ m ด้วยเมทริกซ์การหมุน

ฟังก์ชันนี้จะแก้ไขเมทริกซ์การเปลี่ยนรูปแบบเพื่อหมุนก่อน แกนการหมุนคือเวกเตอร์ (x, y, z)

หากต้องการใช้การเปลี่ยนรูปแบบแบบรวมนี้กับเวกเตอร์ ให้คูณเวกเตอร์ด้วยเมทริกซ์ที่สร้างขึ้นโดยใช้ rsMatrixMultiply()

rsMatrixScale : ใช้การปรับขนาดกับเมทริกซ์การเปลี่ยนรูปแบบ

void rsMatrixScale(rs_matrix4x4* m, float x, float y, float z);
พารามิเตอร์
mตารางที่จะแก้ไข
xคูณเพื่อปรับขนาดคอมโพเนนต์ x
yคูณเพื่อปรับขนาดองค์ประกอบ y
zคูณเพื่อปรับขนาดคอมโพเนนต์ z

คูณเมทริกซ์ m ด้วยเมทริกซ์การปรับขนาด

ฟังก์ชันนี้จะแก้ไขเมทริกซ์การเปลี่ยนรูปแบบเพื่อทำการขยายขนาดก่อน เมื่อปรับขนาด ระบบจะคูณองค์ประกอบแต่ละรายการของเวกเตอร์ด้วยตัวเลข ตัวเลขนี้อาจเป็นค่าลบได้

หากต้องการใช้การเปลี่ยนรูปแบบแบบรวมนี้กับเวกเตอร์ ให้คูณเวกเตอร์ด้วยเมทริกซ์ที่สร้างขึ้นโดยใช้ rsMatrixMultiply()

rsMatrixSet : ตั้งค่าองค์ประกอบเดียว

void rsMatrixSet(rs_matrix2x2* m, uint32_t col, uint32_t row, float v);
void rsMatrixSet(rs_matrix3x3* m, uint32_t col, uint32_t row, float v);
void rsMatrixSet(rs_matrix4x4* m, uint32_t col, uint32_t row, float v);
พารามิเตอร์
mเมทริกซ์ที่จะแก้ไข
คอลัมน์คอลัมน์แบบนับจากศูนย์ขององค์ประกอบที่จะตั้งค่า
แถวแถวที่จะเริ่มนับจาก 0 ขององค์ประกอบที่จะตั้งค่า
vค่าที่จะตั้ง

ตั้งค่าองค์ประกอบของเมทริกซ์

คําเตือน: ลําดับของพารามิเตอร์คอลัมน์และแถวอาจไม่เป็นไปตามที่คาดไว้

rsMatrixTranslate : ใช้การเปลี่ยนรูปแบบกับเมทริกซ์การเปลี่ยนรูปแบบ

void rsMatrixTranslate(rs_matrix4x4* m, float x, float y, float z);
พารามิเตอร์
mตารางที่จะแก้ไข
xจํานวนที่จะเพิ่มลงในคอมโพเนนต์ x แต่ละรายการ
yจํานวนที่จะเพิ่มลงในคอมโพเนนต์ y แต่ละรายการ
zจํานวนที่จะเพิ่มลงในคอมโพเนนต์ z แต่ละรายการ

คูณเมทริกซ์ m ด้วยเมทริกซ์การแปล

ฟังก์ชันนี้จะแก้ไขเมทริกซ์การเปลี่ยนรูปแบบเพื่อทำการแปลก่อน เมื่อแปล จะมีการเพิ่มตัวเลขลงในองค์ประกอบแต่ละรายการของเวกเตอร์

หากต้องการใช้การเปลี่ยนรูปแบบแบบรวมนี้กับเวกเตอร์ ให้คูณเวกเตอร์ด้วยเมทริกซ์ที่สร้างขึ้นโดยใช้ rsMatrixMultiply()

rsMatrixTranspose : สลับตำแหน่งเมทริกซ์

void rsMatrixTranspose(rs_matrix2x2* m);
void rsMatrixTranspose(rs_matrix3x3* m);
void rsMatrixTranspose(rs_matrix4x4* m);
พารามิเตอร์
mเมทริกซ์ที่จะสลับ

สลับเมทริกซ์ m เข้าที่