B-Splines และ Beziers เป็นสิ่งประดิษฐ์คู่ขนานของสิ่งเดียวกันไม่มากก็น้อย ที่เบซิเอร์พยายามที่จะเริ่มต้นจากความคิดของการปรับแทนเจนต์ที่เหมาะสม B-Splines เริ่มต้นด้วยแนวคิดของฟังก์ชั่นพื้นฐาน NURB Splines (หรือส่วนที่มีเหตุผลในความเป็นจริง) เป็นเพียงภาพรวมของ B-Splines เพื่อให้คุณสามารถอธิบายส่วนที่เป็นรูปกรวยได้อย่างแม่นยำ * เนื่องจากเป็นส่วนที่สนใจในงานวิศวกรรมเป็นพิเศษ
ก่อนอื่นให้เราเริ่มด้วยคำศัพท์ NURB Spline ง่ายๆ เหตุผลของเส้นโค้งเหล่านี้แตกต่างจาก Beziers เล็กน้อย ครั้งแรกที่มีแนวคิดของการเป็นช่วง ช่วงจะเท่ากับคร่าวๆ Bezier ทั้งหมดยกเว้นใน nurb คุณสามารถมีช่วงใด ๆ
ภาพที่ 1 : หนึ่งช่วง NURBS ลูกบาศก์ นี่เป็นสูตรที่ผิดปกติเล็กน้อย
แต่ละช่วงจะเกิดขึ้นจากระดับความโค้ง + 1 จุดควบคุม ** แต่ละเส้นโค้งอาจประกอบด้วยจำนวนจุดใด ๆ แต่ละช่วงต่อเนื่องกันจะนำคะแนนไปสู่ช่วงก่อนหน้านี้อีกครั้งโดยวางหนึ่งจุดและเพิ่มอีกหนึ่งจุดในรายการ ดังนั้นการสร้างเส้นโค้งที่ซับซ้อนมากขึ้นนั้นง่ายพอ ๆ กับการต่อท้ายจุดต่าง ๆ ให้มากขึ้น
หมายเหตุ : เส้นโค้งภาพเป็นสิ่งที่ผิดปกติเล็กน้อยผิดปรกติอธิบายว่านี่หมายถึงอะไรในส่วนถัดไป เมื่อฉันนำแนวคิดของนอตขึ้น นี่เป็นวิธีที่ง่ายกว่าในการอธิบายวิธีการโค้งกาวเข้าด้วยกัน
Image 2 : 2 ลูกบาศก์เมตรหลังจากแต่ละช่วงแต่ละช่วงใช้ 4 คะแนน พวกมันรวมกันเป็นเส้นโค้งเดียว พวกเขาแบ่งปันคะแนนมากที่สุดด้วยกัน
ถึงตอนนี้เราอาจตอบคำถาม 2 ข้อเกี่ยวกับการเพิ่มความซับซ้อน แต่ฉันอยากจะเพิ่มว่าโครงการนี้ช่วยให้มั่นใจต่อเนื่องดีกว่าเส้นโค้ง bezier นอกจากนี้คุณสามารถสร้างอาเรย์จุดที่เป็นตัวเรือได้ การขึ้นรูปโค้งปิด
Image 3 : พื้นผิว NURBS ลูกบาศก์ปิดมีช่วงครอบคลุมมากที่สุดเท่าที่มีจุด แต่ละสีมีหนึ่งช่วง
และตัวแปร
จนถึงจุดนี้ใคร ๆ ก็สามารถพูดได้ว่าการคบกันถึงช่วงนั้นเป็นกลอุบายเช่นเดียวกับ "การเย็บ" โค้ง Bezier แต่มีความแตกต่าง เส้นโค้งถูกทำให้เป็นเส้นตรงตามความยาวของมัน ดังนั้นเส้นโค้งจึงไม่แยกจากกันพวกมันไม่ได้ทำการแทรกแบบฟอร์ม 0 ถึง 1 ในแต่ละช่วงเหมือนกับที่ Beziers ทำ เส้นโค้งที่ขีดเส้นใต้นั้นมีช่วงพารามิเตอร์ cusomizable แทน พารามิเตอร์ถูกเก็บไว้ในสิ่งที่เรียกว่าปมและแต่ละปมสามารถมีค่าเพิ่มขึ้นโดยพลการในลำดับ ดังนั้นคุณสามารถทำให้เส้นโค้งทั้งหมดมีค่า u ถึง 0 - 1 หรือ 0 ถึง 12 ได้การตั้งพาราเมทริกก็ไม่จำเป็นต้องเหมือนกัน
การเปลี่ยนแปลงครั้งนี้ทำให้เกิดการเปลี่ยนแปลงรูปร่างของเส้นโค้ง ทำไมสิ่งนี้ถึงมีประโยชน์ คุณสามารถปรับความตึงตามแนวโค้งได้ หรือคุณสามารถเข้ารหัสความยาวของส่วนโค้งให้เป็นพารามิเตอร์ U การใช้งานที่แปลกประหลาดอย่างหนึ่งคือการทำให้เส้นโค้ง NURBS ทำตัวเหมือนเส้นโค้ง Bezier ไม่ว่าทั้งหมดหรือเพียงบางส่วน (bezier เหมือนในตอนท้าย
ภาพที่ 4 : จุดเดียวกันต่างกันเป็นปม เส้นโค้ง NURBS สีเขียวสอดคล้องกับเส้นโค้ง Bezier ที่มีช่วงพารามิเตอร์ 0-2 แทน 0-1
โอเคอะไรคือปม มันเป็นเพียงช่วงของฟังก์ชั่นพื้นฐาน เนื่องจากลูกบาศก์ b-spline ที่มี 4 คะแนนมีฟังก์ชันการแก้ไข 4 แบบจึงต้องใช้ 8 นอต เฉพาะพื้นที่ที่มี 3 ฟังก์ชั่นทับซ้อนและรวมได้มากถึง 1.0 สามารถลากเส้นได้
Image 5 : 2 ฟังก์ชั่นพื้นฐานที่แตกต่าง, bezier like และ parametrisation เซ็กเมนต์ที่เหมือนกัน, แพร่กระจายไปยังช่วง 0-1
และตอนนี้เราได้อธิบายคำตอบสำหรับคำถามที่ 1 ช่วงที่ไม่ได้กำหนดไว้คุณสามารถยืดฟังก์ชั่นพื้นฐานตามที่คุณเห็นว่าเหมาะสม และในที่สุดเวกเตอร์ปมก็สร้างช่วงพารามิเตอร์สำหรับฟังก์ชันพื้นฐาน ยังมีอีกสิ่งหนึ่งที่ควบคุมรูปร่างของเส้นโค้งและนั่นคือเวกเตอร์น้ำหนัก แต่นั่นเป็นอีกเรื่องที่ต้องบอกในที่อื่น
* เหตุผลนี้ในกรณีนี้หมายความว่าเส้นโค้ง NURBS ไม่จำเป็นต้องเป็นพหุนามเนื่องจากคุณไม่สามารถอธิบายวงกลมด้วยชื่อพหุนามได้
** สามารถกำหนดคะแนนประเภทอื่นได้