ผลต่างระหว่างรุ่นของ "418341 ภาคต้น 2552: การบ้าน 2"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 45: แถว 45:
 
* <code>Matrix4x4 Matrix4x4::rotate_z(float degrees)</code>
 
* <code>Matrix4x4 Matrix4x4::rotate_z(float degrees)</code>
 
*: คืน matrix ของการหมุนเป็นมุม degrees องศา รอบแกน z
 
*: คืน matrix ของการหมุนเป็นมุม degrees องศา รอบแกน z
 +
 +
เมื่อเติมเสร็จเรียบร้อยแล้วให้ทดลอง compile ด้วยการกด F7
 +
 +
ถ้าคอมไพล์ผ่านให้เลือกโปรเจค problem1_test เป็น Startup Project โดยคลิกขวาที่ชื่อโปรเจค problem1_test แล้วเลือก Set as Startup Project หลังจากนั้นจึงลองรันมันด้วยการกด Ctrl+F5 ถ้าโปรแกรมคุณทำงานได้ถูกต้อง คุณจะผ่านการทดสอบที่เขียนไว้ใน problem1_test.cpp

รุ่นแก้ไขเมื่อ 14:59, 3 กันยายน 2552

คำเืตือน: การบ้านนี้เป็นการบ้านที่ต้องเขียนโปรแกรมมาก และมีเวลาทำน้อย นอกจากนี้ยังต้องมีความรู้ภาษา C++ เป็นอย่างดี

ุถ้าคุณไม่มั่นใจว่าคุณมีความรู้ภาษา C++ ดีพอ คุณสามารถไปหาข้อมูลเพิ่มเติมได้จาก

นอกจากนี้ โค้ดที่ให้ไปในการบ้านนี้มีจำนวนมาก ผมได้อธิบายรายละิเอียดของโ้ด้ดพวกนี้ไปบางส่วนแล้วในเลคเชอร์วันที่ 19 และ 21 สิงหาคม การดู สไลด์ ประกอบการสอนจะช่วยคุณได้มาก

ดาวน์โหลดโค้ด

ขั้นแรกให้ดาวน์โหลดโค้ดจากงลิงนี้ก่อน: homework-02.zip หลัีงจากนั้นให้ขยายไฟล์แล้วเปิดไฟล์ด้วย homework-02.sln ด้วย Microsoft Visual Studio 2008 Express

ข้อ 1: Matrix

เมื่อเปืดไฟล์ homework-02.sln แล้วให้ปิด project ทั้งหมดแล้วเหลือ project เหล่านี้เอาไว้

  • gtest
  • problem0
  • problem1
  • problem1_test

โดยการปิดโปรเจคใ้้ห้ทำโดยคลิกขวาที่ชื่อโปรเจคแล้วเลือก Unload Project

หลังจากนั้นให้เปิด problem1.cpp ในโปรเจค problem1 แล้วจงเติมฟังก์ชันเหล่านี้ให้สมบูรณ์

  • Matrix4x4 Matrix4x4::identity()
    คืน identity matrix ขนาด 4 คูณ 4
  • Matrix4x4 Matrix4x4::translate(float x, float y, float z)
    คืน matrix ของการเลื่อนแกนขนานไปตามแกน x เท่ากับอาร์กิวเมนต์ x, ไปตามแกน y เท่ากับอาร์กิวเมนต์ y, และไปตามแกน z เท่ากับอาร์กิวเมนต์ z
  • Matrix4x4 Matrix4x4::translate_x(float x)
    คืน matrix ของการเลื่อนแกนขนานไปตามแกน x เท่ากับอาร์กิวเมนต์ x
  • Matrix4x4 Matrix4x4::translate_y(float y)
    คืน matrix ของการเลื่อนแกนขนานไปตามแกน y เท่ากับอาร์กิวเมนต์ y
  • Matrix4x4 Matrix4x4::translate_z(float z)
    คืน matrix ของการเลื่อนแกนขนานไปตามแกน z เท่ากับอาร์กิวเมนต์ z
  • Matrix4x4 Matrix4x4::scale(float x, float y, float z)
    คืน matrix ของการย่อขยายขนาดตามแกน x เท่ากับอาร์กิวเมนต์ x เท่า, ตามแกน y เท่ากับอาร์กิวเมนต์ y เท่า, และตามแกน z เท่ากับอาร์กิวเมนต์ z เท่า
  • Matrix4x4 Matrix4x4::scale_x(float x)
    คืน matrix ของการย่อขยายขนาดตามแกน x เท่ากับอาร์กิวเมนต์ x เท่า
  • Matrix4x4 Matrix4x4::scale_y(float y)
    คืน matrix ของการย่อขยายขนาดตามแกน y เท่ากับอาร์กิวเมนต์ y เท่า
  • Matrix4x4 Matrix4x4::scale_z(float z)
    คืน matrix ของการย่อขยายขนาดตามแกน z เท่ากับอาร์กิวเมนต์ z เท่า
  • Matrix4x4 Matrix4x4::rotate(float degrees, Vector3 axis)
    คืน matrix ของการหมุนเป็นมุม degrees องศา รอบแกน axis
  • Matrix4x4 Matrix4x4::rotate_x(float degrees)
    คืน matrix ของการหมุนเป็นมุม degrees องศา รอบแกน x
  • Matrix4x4 Matrix4x4::rotate_y(float degrees)
    คืน matrix ของการหมุนเป็นมุม degrees องศา รอบแกน y
  • Matrix4x4 Matrix4x4::rotate_z(float degrees)
    คืน matrix ของการหมุนเป็นมุม degrees องศา รอบแกน z

เมื่อเติมเสร็จเรียบร้อยแล้วให้ทดลอง compile ด้วยการกด F7

ถ้าคอมไพล์ผ่านให้เลือกโปรเจค problem1_test เป็น Startup Project โดยคลิกขวาที่ชื่อโปรเจค problem1_test แล้วเลือก Set as Startup Project หลังจากนั้นจึงลองรันมันด้วยการกด Ctrl+F5 ถ้าโปรแกรมคุณทำงานได้ถูกต้อง คุณจะผ่านการทดสอบที่เขียนไว้ใน problem1_test.cpp