MATHC เป็นไลบรารีคณิตศาสตร์อย่างง่ายสำหรับการเขียนโปรแกรม 2D และ 3D
คุณสามารถช่วยในการพัฒนาการทดสอบ MATHC ในห้องสมุด การส่งฟังก์ชันทางคณิตศาสตร์ในขอบเขต รายงานข้อผิดพลาด และการแสดงความคิดเห็น
ทุกวันนี้ฉันทำงานที่ห้องสมุดเพียงเล็กน้อย แต่ฉันยินดีรับฟังข้อเสนอแนะและความช่วยเหลือเสมอ
เริ่มตั้งแต่เวอร์ชัน 2 เป็นต้นไป การพัฒนา MATHC ใช้การกำหนดเวอร์ชันปฏิทิน โดยมีแท็ก YYYY.MM.DD.MICRO
สำหรับเวอร์ชันเสถียรแต่ละรายการ หากการเผยแพร่ทำลายความเข้ากันได้แบบย้อนหลัง จะมีการกล่าวถึงในบันทึกประจำรุ่น
MATHC สามารถกำหนดค่าได้โดยใช้ตัวประมวลผลล่วงหน้าเหล่านี้:
MATHC_NO_INT
: ปิดการใช้งานการใช้งานโดยใช้ mint_t
MATHC_USE_INT8
: กำหนด mint_t
เป็น int8_t
MATHC_USE_INT16
: กำหนด mint_t
เป็น int16_t
MATHC_USE_INT32
: กำหนด mint_t
เป็น int32_t
นี่คือค่าเริ่มต้นMATHC_USE_INT64
: กำหนด mint_t
เป็น int64_t
MATHC_INT_TYPE
: ตั้งค่าประเภทที่กำหนดเองสำหรับ mint_t
MATHC_NO_FLOATING_POINT
: ปิดการใช้งานการใช้งานโดยใช้ mfloat_t
MATHC_USE_SINGLE_FLOATING_POINT
: กำหนด mfloat_t
เป็น float
นี่คือค่าเริ่มต้นMATHC_USE_DOUBLE_FLOATING_POINT
: กำหนด mfloat_t
เป็น double
MATHC_FLOATING_POINT_TYPE
: ตั้งค่าประเภทที่กำหนดเองสำหรับ mfloat_t
MATHC_USE_UNIONS
: กำหนดสหภาพที่ไม่ระบุชื่อภายในโครงสร้างMATHC_NO_POINTER_STRUCT_FUNCTIONS
: อย่ากำหนดฟังก์ชันที่นำตัวชี้ไปยังโครงสร้างMATHC_NO_STRUCT_FUNCTIONS
: อย่ากำหนดฟังก์ชันที่รับโครงสร้างเป็นค่าMATHC_NO_EASING_FUNCTIONS
: อย่ากำหนดฟังก์ชันการค่อยๆ เปลี่ยน คุณสามารถกำหนดตัวประมวลผลล่วงหน้าเหล่านี้ได้โดยใช้ตัวเลือกของคอมไพเลอร์ -D
หรือใช้ตัวเลือกของคอมไพเลอร์ -include
เพื่อรวมส่วนหัวของการกำหนดค่าพร้อมกับตัวประมวลผลล่วงหน้าของการกำหนดค่าภายใน
ตัวอย่างของส่วนหัวการกำหนดค่าที่ทำให้ mint_t
เป็น int16_t
, mfloat_t
เป็น GLfloat
และใช้ฟังก์ชันทางคณิตศาสตร์มาตรฐานที่มีความแม่นยำจุดลอยตัวสองเท่า:
#include
#define MATHC_USE_INT16
#define MATHC_FLOATING_POINT_TYPE GLfloat
#define MATHC_USE_DOUBLE_FLOATING_POINT
ตามค่าเริ่มต้น เวกเตอร์ ควอเทอร์เนียน และเมทริกซ์สามารถประกาศเป็นอาร์เรย์ของ mint_t
อาร์เรย์ของ mfloat_t
หรือโครงสร้างได้
ตามค่าเริ่มต้น MATHC มีฟังก์ชันที่ใช้เป็นอาร์เรย์อาร์กิวเมนต์ของ mint_t
อาร์เรย์ของ mfloat_t
โครงสร้างเป็นค่า หรือตัวชี้ไปยังโครงสร้าง ฟังก์ชั่นที่ใช้โครงสร้างเป็นค่าจะมีคำนำหน้า s
ฟังก์ชั่นที่ใช้ตัวชี้โครงสร้างจะมีคำนำหน้า ps
ฟังก์ชันการค่อยๆ เปลี่ยนเป็นการปรับใช้ฟังก์ชันที่นำเสนอใน easing.net ซึ่งมีประโยชน์โดยเฉพาะสำหรับภาพเคลื่อนไหว
ฟังก์ชันการค่อยๆ เปลี่ยนจะใช้ค่าภายในช่วง 0.0-1.0
และโดยปกติจะส่งคืนค่าภายในช่วงเดียวกันนั้น
การสร้างเมทริกซ์มุมมอง "ดูที่" ซึ่งมีประโยชน์สำหรับการเขียนโปรแกรม 3 มิติ:
mfloat_t position [ VEC3_SIZE ];
mfloat_t target [ VEC3_SIZE ];
mfloat_t up [ VEC3_SIZE ];
mfloat_t view [ MAT4_SIZE ];
mat4_look_at ( view ,
vec3 ( position , 0.0 , 0.0 , 10.0 ),
vec3 ( target , 0.0 , 0.0 , 0.0 ),
vec3 ( up , 0.0 , 1.0 , 0.0 ));
การสร้างเมทริกซ์การฉายเปอร์สเปคทีฟ:
mfloat_t perspective [ MAT4_SIZE ];
mat4_perspective ( perspective , to_radians ( 60.0 ), 1.0 , 0.1 , 100.0 );
การสร้างเมทริกซ์โมเดล:
mfloat_t position [ VEC3_SIZE ];
mfloat_t scaling [ VEC3_SIZE ];
struct {
mfloat_t position [ MAT4_SIZE ];
mfloat_t rotation [ MAT4_SIZE ];
mfloat_t scaling [ MAT4_SIZE ];
mfloat_t model [ MAT4_SIZE ];
} matrices ;
/* Position */
mat4_identity ( matrices . position );
mat4_translation ( matrices . position ,
vec3 ( position , 0.0 , 0.0 , 0.0 ));
/* Rotation */
mat4_identity ( matrices . rotation );
mat4_rotation_x ( matrices . rotation , to_radians ( 30.0 ));
/* Scaling */
mat4_identity ( matrices . scaling );
mat4_translation ( matrices . scaling ,
vec3 ( scaling , 1.0 , 1.0 , 1.0 ));
/* Model matrix */
mat4_multiply ( matrices . model , matrices . scaling , matrices . rotation );
mat4_multiply ( matrices . model , matrices . position , matrices . model );
ลิขสิทธิ์ © 2018 เฟลิเป้ เฟร์ไรรา ดา ซิลวา
ซอฟต์แวร์นี้มีให้ 'ตามที่เป็น' โดยไม่มีการรับประกันโดยชัดแจ้งหรือโดยนัย ไม่ว่าในกรณีใดผู้เขียนจะไม่รับผิดชอบต่อความเสียหายใด ๆ ที่เกิดขึ้นจากการใช้ซอฟต์แวร์นี้
อนุญาตให้ทุกคนใช้ซอฟต์แวร์นี้เพื่อวัตถุประสงค์ใดๆ รวมถึงแอปพลิเคชันเชิงพาณิชย์ และแก้ไขและแจกจ่ายต่อได้อย่างอิสระ ภายใต้ข้อจำกัดต่อไปนี้: