กลับไปหน้าบทความ

อ่าน 10 นาที

สปลายบีเชิงตรรกะที่ไม่สม่ำเสมอ

NURBS ( Non-uniform rational basis spline ) เป็นแบบจำลองทางคณิตศาสตร์ที่ใช้สปลายฐาน (B-splines) ซึ่งมักใช้ในกราฟิกคอมพิวเตอร์เพื่อแสดงเส้นโค้งและพื้นผิว NURBS

สปลายบีเชิงตรรกะที่ไม่สม่ำเสมอ

เส้นโค้ง NURBS ดูเพิ่มเติม: การสร้างเส้นโค้ง NURBS แบบแอนิเมชั่
พื้นผิว NURBS สีเขียว
พื้นผิว NURBS

NURBS ( Non-uniform rational basis spline ) เป็นแบบจำลองทางคณิตศาสตร์ที่ใช้สปลายฐาน (B-splines) ซึ่งมักใช้ในกราฟิกคอมพิวเตอร์เพื่อแสดงเส้นโค้งและพื้นผิว NURBS มีความยืดหยุ่นและความแม่นยำสูงในการจัดการทั้งรูปทรงเชิงวิเคราะห์ (กำหนดโดยสูตร ทางคณิตศาสตร์ทั่วไป ) และรูปทรงจำลอง NURBSเป็นแบบจำลองเส้นโค้ง ประเภทหนึ่ง ซึ่งแตกต่างจากแบบจำลองรูปหลายเหลี่ยมหรือการแกะสลักดิจิทัลเส้นโค้ง NURBS มักใช้ในการออกแบบโดยใช้คอมพิวเตอร์ช่วย (CAD) การผลิต (CAM) และวิศวกรรม (CAE) เป็นส่วนหนึ่งของมาตรฐานอุตสาหกรรมมากมาย เช่นIGES , STEP , ACISและPHIGSเครื่องมือสำหรับการสร้างและแก้ไขพื้นผิว NURBS พบได้ในซอฟต์แวร์กราฟิก 3 มิติการเรนเดอร์[ 1 ]และแอนิเมชันต่างๆ

พื้นผิว NURBS สามารถจัดการได้อย่างมีประสิทธิภาพด้วยโปรแกรมคอมพิวเตอร์ ในขณะเดียวกันก็ช่วยให้มนุษย์สามารถโต้ตอบได้ง่าย พื้นผิว NURBS เป็นฟังก์ชันของพารามิเตอร์ สองตัว ที่แมปไปยังพื้นผิวในพื้นที่สามมิติรูปร่างของพื้นผิวถูกกำหนดโดยจุดควบคุมในรูปแบบที่กะทัดรัด พื้นผิว NURBS สามารถแสดงรูปทรงเรขาคณิต อย่างง่ายได้ สำหรับรูปทรงอินทรีย์ที่ซับซ้อน พื้นผิวT-splineและพื้นผิวแบบแบ่งย่อยจะเหมาะสมกว่า เนื่องจากลดจำนวนจุดควบคุมลงครึ่งหนึ่งเมื่อเทียบกับพื้นผิว NURBS

โดยทั่วไป การแก้ไขเส้นโค้งและพื้นผิว NURBS นั้นใช้งานง่ายและคาดเดาได้ จุดควบคุมจะเชื่อมต่อโดยตรงกับเส้นโค้งหรือพื้นผิว หรือไม่ก็ทำหน้าที่เสมือนเชื่อมต่อด้วยยางยืด ขึ้นอยู่กับประเภทของส่วนติดต่อผู้ใช้ การแก้ไขเส้นโค้งและพื้นผิว NURBS อาจทำได้ผ่านจุดควบคุม (คล้ายกับเส้นโค้ง Bézier ) หรือผ่านเครื่องมือระดับสูงกว่า เช่นการสร้างแบบจำลองสปลายน์และการแก้ไขแบบลำดับชั้น

ประวัติศาสตร์

เส้นโค้งแบน (Flat spline)ซึ่งเป็นชื่อเรียกทางกายภาพของเส้นโค้ง (Spline) ทางคณิตศาสตร์ในภาพนี้ เส้นโค้งถูกยึดไว้ด้วยหมุดแทนที่จะเป็นตัวยึด (ducks)

ก่อนยุคคอมพิวเตอร์ การออกแบบจะวาดด้วยมือบนกระดาษโดยใช้เครื่องมือเขียนแบบต่างๆไม้บรรทัดใช้สำหรับเส้นตรงวงเวียนใช้สำหรับวงกลม และไม้โปรแทรกเตอร์ใช้สำหรับมุม แต่รูปทรงหลายอย่าง เช่นเส้นโค้งอิสระของหัวเรือ ไม่สามารถวาดได้ด้วยเครื่องมือเหล่านี้

แม้ว่าเส้นโค้งดังกล่าวจะสามารถวาดด้วยมือเปล่าบนโต๊ะเขียนแบบได้ แต่ผู้สร้างเรือมักต้องการแบบจำลองขนาดเท่าของจริงซึ่งไม่สามารถทำได้ด้วยมือเปล่า การวาดภาพขนาดใหญ่ดังกล่าวทำได้โดยใช้แถบไม้ที่ยืดหยุ่นได้ เรียกว่า สไปลน์ สไปลน์เหล่านี้ถูกยึดไว้ที่จุดที่กำหนดไว้ล่วงหน้าหลายจุดด้วย "ดั๊ก" ที่ทำจากตะกั่ว ซึ่งตั้งชื่อตามส่วนที่ยื่นออกมาเป็นรูปปากนกที่สไปลน์วางอยู่ ระหว่างดั๊กความยืดหยุ่นของวัสดุสไปลน์ทำให้แถบไม้มีรูปร่างที่ลดพลังงานการดัดงอให้น้อยที่สุด จึงสร้างรูปร่างที่เรียบเนียนที่สุดเท่าที่จะเป็นไปได้ซึ่งตรงตามข้อจำกัด รูปร่างสามารถปรับได้โดยการเลื่อนดั๊ก[ 2 ] [ 3 ]

ในปี พ.ศ. 2507 นักคณิตศาสตร์เริ่มศึกษาเกี่ยวกับรูปทรงสปลายน์ และได้ สูตร พหุนามแบบแบ่ง ส่วนที่ เรียกว่าเส้นโค้งสปลายน์หรือฟังก์ชันสปลายน์IJ Schoenbergเป็นผู้ตั้งชื่อฟังก์ชันสปลายน์ตามความคล้ายคลึงกับสปลายน์เชิงกลที่ช่างเขียนแบบใช้[ 4 ]

เมื่อมีการนำคอมพิวเตอร์เข้ามาใช้ในกระบวนการออกแบบ คุณสมบัติทางกายภาพของเส้นโค้งแบบสปลายน์เหล่านี้จึงได้รับการศึกษา เพื่อให้สามารถสร้างแบบจำลองด้วยความแม่นยำทางคณิตศาสตร์และผลิตซ้ำได้ตามต้องการ งานบุกเบิกดังกล่าวเกิดขึ้นในฝรั่งเศสโดยวิศวกรของเรโนลต์ปิแอร์ เบซิเยร์และนักฟิสิกส์และนักคณิตศาสตร์ของซีตรอง ปอล เดอ กัสเติลฌูพวกเขาทำงานเกือบคู่ขนานกัน แต่เนื่องจากเบซิเยร์ได้ตีพิมพ์ผลงานของเขา เส้นโค้งเบซิเยร์จึงได้รับการตั้งชื่อตามเขา ในขณะที่ชื่อของเดอ กัสเติลฌูนั้นเกี่ยวข้องกับอัลกอริทึมที่เกี่ยวข้องเท่านั้น

งานของ Bézier เข้าถึงกลุ่มคณาจารย์และนักศึกษาปริญญาโทที่มหาวิทยาลัย Syracuse รวมถึงSteven Anson Coons , William Gordon, Robin Forrest, Rich Riesenfeld และ Ken Versprille วิทยานิพนธ์ของ Riesenfeld ได้แนะนำB-splines ; วิทยานิพนธ์ของ Versprille ได้ขยายความให้เป็นแบบไม่สม่ำเสมอและมีเหตุผล[ 5 ] Riesenfeld ย้ายไปที่มหาวิทยาลัย Utahซึ่งนักศึกษาคนหนึ่งของเขาได้ไปทำงานที่Boeingซึ่งต้องการวิธีการทั่วไปในการแสดงสูตรต่างๆ ที่ใช้งานอยู่อย่างแม่นยำ[ 6 ] Boeing ได้นำแนวคิดของ Versprille มาใช้ ย่อเป็น "NURBS" รวมเข้ากับ โปรแกรม CAD TIGER ของพวกเขา และเสนอให้เป็นมาตรฐานอุตสาหกรรม[ 7 ]

การเรนเดอร์เส้นโค้งและพื้นผิว NURBS แบบเรียลไทม์และโต้ตอบได้นั้น เริ่มวางจำหน่ายในเชิงพาณิชย์ครั้งแรกบน เวิร์กสเตชัน Silicon Graphics ในปี 1989 ต่อมาในปี 1993 บริษัท CAS Berlin ซึ่งเป็น บริษัทสตาร์ทอัพขนาด เล็ก ที่ร่วมมือกับมหาวิทยาลัยเทคนิคเบอร์ลิน ได้พัฒนาโปรแกรม สร้าง แบบจำลอง NURBS แบบโต้ตอบตัวแรกสำหรับพีซี ชื่อว่า NöRBS

ความต่อเนื่อง

พื้นผิวที่อยู่ระหว่างการก่อสร้าง เช่น ตัวเรือของเรือยอชต์ มักประกอบด้วยพื้นผิว NURBS หลายๆ พื้นผิว ซึ่งเรียกว่าแพทช์ NURBS (หรือเรียกสั้นๆ ว่าแพทช์ ) แพทช์พื้นผิว เหล่านี้ควรถูกประกอบเข้าด้วยกัน ใน ลักษณะที่มองไม่เห็นขอบเขต ซึ่งในทางคณิตศาสตร์นั้นแสดงออกมาในรูปของแนวคิดความต่อเนื่องทางเรขาคณิต

มีเครื่องมือระดับสูงกว่าที่ได้รับประโยชน์จากความสามารถของ NURBS ในการสร้างและสร้างความต่อเนื่องทางเรขาคณิตในระดับต่างๆ:

ความต่อเนื่องเชิงตำแหน่ง
(G 0 ) เป็นจริงเมื่อตำแหน่งปลายของเส้นโค้งหรือพื้นผิวสองเส้นตรงกัน เส้นโค้งหรือพื้นผิวอาจยังคงมาบรรจบกันเป็นมุม ทำให้เกิดมุมแหลมหรือขอบคม และทำให้เกิดแสงสะท้อนที่ไม่ต่อเนื่อง
ความต่อเนื่องแบบสัมผัส
(G¹) กำหนดให้เวกเตอร์ปลายของเส้นโค้งหรือพื้นผิวต้องขนานกันและชี้ไปในทิศทางเดียวกัน ซึ่งจะทำให้ไม่มีขอบคม เนื่องจากแสงสะท้อนที่ตกกระทบบนขอบที่ต่อเนื่องในแนวสัมผัสจะต่อเนื่องเสมอและดูเป็นธรรมชาติ ระดับความต่อเนื่องนี้จึงมักจะเพียงพอ
ความต่อเนื่องของความโค้ง
(G²) ยังกำหนดให้เวกเตอร์ปลายต้องมีความยาวและอัตราการเปลี่ยนแปลงความยาวเท่ากัน แสงสะท้อนที่ตกกระทบขอบที่มีความโค้งต่อเนื่องจะไม่แสดงการเปลี่ยนแปลงใดๆ ทำให้พื้นผิวทั้งสองปรากฏเป็นหนึ่งเดียว สามารถมองเห็นได้ว่า "เรียบเนียนอย่างสมบูรณ์แบบ" ระดับความต่อเนื่องนี้มีประโยชน์มากในการสร้างแบบจำลองที่ต้องการ แพทช์ ไบคิวบิก จำนวนมาก ประกอบกันเป็นพื้นผิวต่อเนื่องหนึ่งเดียว

ความต่อเนื่องทางเรขาคณิตส่วนใหญ่หมายถึงรูปร่างของพื้นผิวที่ได้ เนื่องจากพื้นผิว NURBS เป็นฟังก์ชัน จึงสามารถพิจารณาอนุพันธ์ของพื้นผิวเทียบกับพารามิเตอร์ได้ด้วย ซึ่งเรียกว่าความต่อเนื่องเชิงพารามิเตอร์ความต่อเนื่องเชิงพารามิเตอร์ในระดับที่กำหนดจะบ่งบอกถึงความต่อเนื่องทางเรขาคณิตในระดับนั้นด้วย

ความต่อเนื่องเชิงพารามิเตอร์ระดับแรกและระดับที่สอง (C 0และ C¹) ในทางปฏิบัติแล้วเหมือนกับความต่อเนื่องเชิงตำแหน่งและเชิงสัมผัส (G 0และ G¹) อย่างไรก็ตาม ความต่อเนื่องเชิงพารามิเตอร์ระดับที่สาม (C²) แตกต่างจากความต่อเนื่องเชิงความโค้งตรงที่การกำหนดพารามิเตอร์ของมันก็มีความต่อเนื่องเช่นกัน ในทางปฏิบัติ การบรรลุความต่อเนื่อง C² ทำได้ง่ายกว่าหากใช้ B-spline แบบสม่ำเสมอ

นิยามของความต่อเนื่อง C nกำหนดให้ อนุพันธ์ลำดับที่ nของเส้นโค้ง/พื้นผิวที่อยู่ติดกัน ( ) มีค่าเท่ากันที่จุดเชื่อมต่อ[ 8 ]โปรดทราบว่าอนุพันธ์ (บางส่วน) ของเส้นโค้งและพื้นผิวเป็นเวกเตอร์ที่มีทิศทางและขนาด ทั้งสองควรมีค่าเท่ากัน

แสงสะท้อนและแสงจ้าสามารถเผยให้เห็นความเรียบเนียนที่สมบูรณ์แบบ ซึ่งแทบจะเป็นไปไม่ได้เลยที่จะทำได้หากไม่มีพื้นผิว NURBS ที่มีความต่อเนื่องอย่างน้อยระดับ G² หลักการเดียวกันนี้ถูกนำมาใช้เป็นหนึ่งในวิธีการประเมินพื้นผิว โดย ภาพที่ได้จาก การติดตามรังสีหรือการแมปการสะท้อนของพื้นผิวที่มีแถบสีขาวสะท้อนอยู่ จะแสดงให้เห็นแม้แต่ความเบี่ยงเบนเล็กน้อยที่สุดบนพื้นผิวหรือชุดของพื้นผิว วิธีนี้ได้มาจากกระบวนการสร้างต้นแบบรถยนต์ ซึ่งคุณภาพพื้นผิวจะถูกตรวจสอบโดยการตรวจสอบคุณภาพของการสะท้อนของเพดานไฟนีออนบนพื้นผิวรถยนต์ วิธีนี้เรียกอีกอย่างว่า "การวิเคราะห์ลายม้าลาย"

ข้อกำหนดทางเทคนิค

เส้นโค้ง NURBS ถูกกำหนดโดยลำดับ ชุดของจุดควบคุมที่มีน้ำหนัก และเวกเตอร์ปม[ 9 ] เส้นโค้งและพื้นผิว NURBS เป็นการวางนัยทั่วไปของทั้ง เส้นโค้งและพื้นผิว B-splineและBézierโดยความแตกต่างหลักอยู่ที่น้ำหนักของจุดควบคุม ซึ่งทำให้เส้นโค้ง NURBS เป็นเส้นโค้ง เชิง ตรรกะ

( B-spline แบบไม่เชิงตรรกะหรือเรียก อีกอย่างว่า B-spline แบบง่ายเป็นกรณีพิเศษ/เซตย่อยของ B-spline แบบเชิงตรรกะ โดยที่จุดควบคุมแต่ละจุดเป็นพิกัดปกติที่ไม่เป็นเนื้อเดียวกัน [ไม่มี 'w'] แทนที่จะเป็นพิกัดที่เป็นเนื้อเดียวกัน[ 10 ]ซึ่งเทียบเท่ากับการมีน้ำหนัก "1" ที่จุดควบคุมแต่ละจุด B-spline แบบเชิงตรรกะใช้ 'w' ของจุดควบคุมแต่ละจุดเป็นน้ำหนัก[ 11 ] )

โดยการใช้ตารางจุดควบคุมสองมิติ สามารถสร้างพื้นผิว NURBS ซึ่งรวมถึงส่วนระนาบและส่วนตัดของทรงกลมได้ พื้นผิวเหล่านี้ถูกกำหนดพารามิเตอร์ด้วยตัวแปรสองตัว (โดยทั่วไปเรียกว่าsและtหรือuและv ) และสามารถขยายไปยังมิติใดๆ ก็ได้เพื่อสร้างการแมปNURBS

เส้นโค้งและพื้นผิว NURBS มีประโยชน์ด้วยเหตุผลหลายประการ:

  • เซตของ NURBS สำหรับลำดับที่กำหนดจะไม่เปลี่ยนแปลงภายใต้ การแปลง เชิงเส้น : [ 12 ]การดำเนินการเช่นการหมุนและการเลื่อนสามารถนำไปใช้กับเส้นโค้งและพื้นผิว NURBS ได้โดยการนำไปใช้กับจุดควบคุม
  • พวกเขานำเสนอรูปแบบทางคณิตศาสตร์ทั่วไปรูปแบบเดียวสำหรับทั้งรูปทรงเชิงวิเคราะห์มาตรฐาน (เช่นภาคตัดกรวย ) และรูปทรงอิสระ
  • สิ่งเหล่านี้มอบความยืดหยุ่นในการออกแบบรูปทรงที่หลากหลาย
  • วิธีการนี้ช่วยลดการใช้หน่วยความจำในการจัดเก็บรูปทรง (เมื่อเทียบกับวิธีการที่ง่ายกว่า)
  • สามารถประเมินค่าได้อย่างรวดเร็วพอสมควรโดยใช้อัลกอริธึมที่มีความเสถียรและแม่นยำ ทางตัวเลข

ในที่นี้ NURBS มักถูกกล่าวถึงในมิติเดียว (เส้นโค้ง) เป็นหลัก แต่สามารถขยายไปสู่สองมิติ (พื้นผิว) หรือมากกว่านั้นได้

คำสั่ง

ลำดับ ของเส้นโค้ง NURBS กำหนดจำนวนจุดควบคุมใกล้เคียงที่มีอิทธิพลต่อจุดใด ๆ บนเส้นโค้ง เส้นโค้งนี้แสดงทางคณิตศาสตร์ด้วยพหุนามที่มีดีกรีน้อยกว่าลำดับของเส้นโค้งอยู่หนึ่ง ดังนั้น เส้นโค้งลำดับที่สอง (ซึ่งแสดงด้วยพหุนามเชิงเส้น) เรียกว่าเส้นโค้งเชิงเส้น เส้นโค้งลำดับที่สามเรียกว่าเส้นโค้งกำลังสอง และเส้นโค้งลำดับที่สี่เรียกว่าเส้นโค้งกำลังสาม จำนวนจุดควบคุมต้องมากกว่าหรือเท่ากับลำดับของเส้นโค้ง

ในทางปฏิบัติ เส้นโค้งกำลังสามเป็นเส้นโค้งที่ใช้กันมากที่สุด เส้นโค้งอันดับห้าและหกอาจมีประโยชน์บ้าง โดยเฉพาะอย่างยิ่งสำหรับการหาอนุพันธ์อันดับสูงแบบต่อเนื่อง แต่เส้นโค้งที่มีอันดับสูงกว่านั้นแทบจะไม่ถูกนำมาใช้เลย เพราะจะนำไปสู่ปัญหาเชิงตัวเลขภายในและมักต้องใช้เวลาในการคำนวณมากเกินไป

จุดควบคุม

พื้นผิว NURBS สามมิติสามารถมีรูปทรงที่ซับซ้อนและเป็นธรรมชาติได้ จุดควบคุมมีอิทธิพลต่อทิศทางของพื้นผิว สี่เหลี่ยมจัตุรัสแยกต่างหากด้านล่างกรอบควบคุมจะกำหนดขอบเขต X และ Y ของพื้นผิว

จุดควบคุมกำหนดรูปร่างของเส้นโค้ง[ 13 ]โดยทั่วไป จุดแต่ละจุดของเส้นโค้งจะคำนวณโดยการหาผล รวม ถ่วงน้ำหนักของจุดควบคุมจำนวนหนึ่ง น้ำหนักของแต่ละจุดจะแตกต่างกันไปตามพารามิเตอร์ที่ควบคุม สำหรับเส้นโค้งที่มีดีกรี d น้ำหนักของจุดควบคุมใดๆ จะมีค่าไม่เป็นศูนย์เฉพาะในช่วง d+1 ช่วงของพื้นที่พารามิเตอร์ เท่านั้น ภายในช่วงเหล่านั้น น้ำหนักจะเปลี่ยนแปลงไปตามฟังก์ชันพหุนาม ( ฟังก์ชันพื้นฐาน ) ที่มีดีกรี d ที่ขอบเขตของช่วง ฟังก์ชันพื้นฐานจะค่อยๆ ลดลงจนเป็นศูนย์ โดยความราบเรียบจะถูกกำหนดโดยดีกรีของพหุนาม

ยกตัวอย่างเช่นฟังก์ชันพื้นฐานดีกรีหนึ่งเป็นฟังก์ชันรูปสามเหลี่ยม มันเพิ่มขึ้นจากศูนย์ไปหนึ่ง แล้วลดลงกลับไปที่ศูนย์อีกครั้ง ในขณะที่มันเพิ่มขึ้น ฟังก์ชันพื้นฐานของจุดควบคุมก่อนหน้าจะลดลง ด้วยวิธีนี้ เส้นโค้งจะประมาณค่าระหว่างสองจุด และเส้นโค้งที่ได้จะเป็นรูปหลายเหลี่ยม ซึ่งต่อเนื่องแต่ไม่สามารถหาอนุพันธ์ได้ที่ขอบเขตของช่วงหรือจุดเชื่อมต่อ พหุนามดีกรีสูงกว่าจะมีอนุพันธ์ที่ต่อเนื่องมากขึ้นตามไปด้วย โปรดสังเกตว่าภายในช่วงนั้น ลักษณะของพหุนามของฟังก์ชันพื้นฐานและความเป็นเชิงเส้นของการสร้างทำให้เส้นโค้งเรียบอย่างสมบูรณ์ ดังนั้นความไม่ต่อเนื่องจึงเกิดขึ้นได้เฉพาะที่จุดเชื่อมต่อเท่านั้น

ในการใช้งานหลายๆ อย่าง ข้อเท็จจริงที่ว่าจุดควบคุมเพียงจุดเดียวมีอิทธิพลเฉพาะช่วงที่จุดนั้นทำงานอยู่ ถือเป็นคุณสมบัติที่พึงประสงค์อย่างยิ่ง ซึ่งเรียกว่าการรองรับเฉพาะที่ (local support ) ในการสร้างแบบจำลอง คุณสมบัตินี้ช่วยให้สามารถเปลี่ยนแปลงส่วนหนึ่งของพื้นผิวได้โดยที่ส่วนอื่นๆ ยังคงไม่เปลี่ยนแปลง

การเพิ่มจุดควบคุมมากขึ้นช่วยให้สามารถประมาณเส้นโค้งที่กำหนดได้ดียิ่งขึ้น แม้ว่าจะมีเพียงเส้นโค้งบางประเภทเท่านั้นที่สามารถแสดงได้อย่างแม่นยำด้วยจำนวนจุดควบคุมที่จำกัด เส้นโค้ง NURBS ยังมีน้ำหนัก แบบสเกลาร์ สำหรับแต่ละจุดควบคุม ซึ่งช่วยให้ควบคุมรูปร่างของเส้นโค้งได้มากขึ้นโดยไม่ต้องเพิ่มจำนวนจุดควบคุมมากเกินไป โดยเฉพาะอย่างยิ่ง มันจะเพิ่มเส้นโค้งภาคตัดกรวย เช่น วงกลมและวงรี เข้าไปในชุดของเส้นโค้งที่สามารถแสดงได้อย่างแม่นยำ คำว่า"เชิงตรรกะ"ใน NURBS หมายถึงน้ำหนักเหล่านี้

จุดควบคุมสามารถมีมิติ ใดก็ได้ จุดหนึ่งมิติจะกำหนด ฟังก์ชัน สเกลาร์ของพารามิเตอร์ โดยทั่วไปจะใช้ในโปรแกรมประมวลผลภาพเพื่อปรับความสว่างและเส้นโค้งสี จุดควบคุมสามมิติถูกใช้มากมายในการสร้างแบบจำลอง 3 มิติ โดยใช้ในความหมายทั่วไปของคำว่า 'จุด' ซึ่งหมายถึงตำแหน่งในพื้นที่ 3 มิติ จุดหลายมิติอาจใช้เพื่อควบคุมชุดค่าที่ขับเคลื่อนด้วยเวลา เช่น การตั้งค่าตำแหน่งและการหมุนที่แตกต่างกันของแขนหุ่นยนต์ พื้นผิว NURBS เป็นเพียงการประยุกต์ใช้สิ่งนี้ จุดควบคุมแต่ละจุดนั้นแท้จริงแล้วเป็นเวกเตอร์เต็มรูปแบบของจุดควบคุม ซึ่งกำหนดเส้นโค้ง เส้นโค้งเหล่านี้มีระดับและจำนวนจุดควบคุมร่วมกัน และครอบคลุมมิติหนึ่งของพื้นที่พารามิเตอร์ โดยการประมาณค่าเวกเตอร์ควบคุมเหล่านี้ในมิติอื่นของพื้นที่พารามิเตอร์ จะได้ชุดเส้นโค้งต่อเนื่องซึ่งกำหนดพื้นผิว

เวกเตอร์ปม

เวกเตอร์ปม (Knot Vector) คือลำดับของค่าพารามิเตอร์ที่กำหนดว่าจุดควบคุมจะมีผลต่อเส้นโค้ง NURBS ที่ใดและอย่างไร จำนวนปมจะเท่ากับจำนวนจุดควบคุมบวกกับดีกรีของเส้นโค้งบวกหนึ่งเสมอ (กล่าวคือ จำนวนจุดควบคุมบวกกับลำดับของเส้นโค้ง) เวกเตอร์ปมจะแบ่งพื้นที่พารามิเตอร์ออกเป็นช่วงๆ ตามที่กล่าวไว้ก่อนหน้านี้ ซึ่งโดยทั่วไปเรียกว่าช่วงปม (Knot Spans ) ทุกครั้งที่ค่าพารามิเตอร์เข้าสู่ช่วงปมใหม่ จุดควบคุมใหม่จะทำงาน ในขณะที่จุดควบคุมเก่าจะถูกทิ้งไป ดังนั้นค่าในเวกเตอร์ปมควรเรียงลำดับจากมากไปน้อย เช่น (0, 0, 1, 2, 3, 3) จึงถูกต้อง ในขณะที่ (0, 0, 2, 1, 3, 3) ไม่ถูกต้อง

ปมที่อยู่ติดกันสามารถมีค่าเดียวกันได้ ซึ่งจะกำหนดช่วงปมที่มีความยาวเป็นศูนย์ หมายความว่าจุดควบคุมสองจุดถูกเปิดใช้งานพร้อมกัน (และแน่นอนว่าจุดควบคุมสองจุดจะถูกปิดใช้งาน) สิ่งนี้มีผลต่อความต่อเนื่องของเส้นโค้งที่ได้หรืออนุพันธ์ที่สูงกว่า ตัวอย่างเช่น มันช่วยให้สามารถสร้างมุมในเส้นโค้ง NURBS ที่เรียบเนียนได้ บางครั้งจำนวนปมที่ตรงกันเรียกว่าปมที่มีจำนวนเท่า ป มที่มีจำนวนเท่าสองหรือสามเรียกว่าปมคู่หรือปมสาม จำนวนเท่าของปมถูกจำกัดด้วยระดับของเส้นโค้ง เนื่องจากจำนวนเท่าที่สูงกว่าจะแบ่งเส้นโค้งออกเป็นส่วนที่ไม่ทับซ้อนกันและจะทำให้จุดควบคุมไม่ได้ใช้งาน สำหรับ NURBS ระดับแรก แต่ละปมจะจับคู่กับจุดควบคุมหนึ่งจุด

เวกเตอร์ปมมักเริ่มต้นด้วยปมที่มีความซ้ำซ้อนเท่ากับลำดับ ซึ่งสมเหตุสมผล เพราะจะกระตุ้นจุดควบคุมที่มีอิทธิพลต่อช่วงปมแรก ในทำนองเดียวกัน เวกเตอร์ปมมักจะสิ้นสุดด้วยปมที่มีความซ้ำซ้อนเท่ากัน เส้นโค้งที่มีเวกเตอร์ปมเช่นนี้จะเริ่มต้นและสิ้นสุดที่จุดควบคุม

ค่าของปมควบคุมการแมประหว่างพารามิเตอร์อินพุตและค่า NURBS ที่สอดคล้องกัน ตัวอย่างเช่น หาก NURBS อธิบายเส้นทางผ่านอวกาศในช่วงเวลาหนึ่ง ปมจะควบคุมเวลาที่ฟังก์ชันเคลื่อนที่ผ่านจุดควบคุม อย่างไรก็ตาม สำหรับการแสดงรูปร่าง อัตราส่วนของความแตกต่างระหว่างค่าปมเท่านั้นที่มีความสำคัญ ในกรณีนั้น เวกเตอร์ปม (0, 0, 1, 2, 3, 3) และ (0, 0, 2, 4, 6, 6) จะสร้างเส้นโค้งเดียวกัน ตำแหน่งของค่าปมมีอิทธิพลต่อการแมปพื้นที่พารามิเตอร์ไปยังพื้นที่เส้นโค้ง การเรนเดอร์เส้นโค้ง NURBS มักทำโดยการก้าวทีละขั้นด้วยระยะคงที่ผ่านช่วงพารามิเตอร์ การเปลี่ยนความยาวช่วงของปมทำให้สามารถใช้จุดตัวอย่างได้มากขึ้นในบริเวณที่มีความโค้งสูง การใช้งานอีกอย่างหนึ่งคือในสถานการณ์ที่ค่าพารามิเตอร์มีความสำคัญทางกายภาพบางอย่าง เช่น หากพารามิเตอร์คือเวลาและเส้นโค้งอธิบายการเคลื่อนที่ของแขนหุ่นยนต์ ความยาวของช่วงปมจะถูกแปลงเป็นความเร็วและความเร่ง ซึ่งเป็นสิ่งสำคัญที่ต้องทำให้ถูกต้องเพื่อป้องกันความเสียหายต่อแขนหุ่นยนต์หรือสภาพแวดล้อมโดยรอบ ความยืดหยุ่นในการแมปนี้เองที่เป็น ที่มาของวลี "ไม่สม่ำเสมอ"ใน NURBS

เนื่องจากจำเป็นสำหรับการคำนวณภายในเท่านั้น เงื่อนต่างๆ จึงมักไม่เป็นประโยชน์ต่อผู้ใช้ซอฟต์แวร์สร้างแบบจำลอง ดังนั้น โปรแกรมสร้างแบบจำลองหลายๆ โปรแกรมจึงไม่ทำให้สามารถแก้ไขหรือแม้แต่แสดงเงื่อนได้ โดยทั่วไปแล้ว สามารถสร้างเวกเตอร์เงื่อนที่เหมาะสมได้โดยการพิจารณาความแปรผันของจุดควบคุม ซอฟต์แวร์ NURBS รุ่นใหม่ๆ (เช่นAutodesk MayaและRhinoceros 3D ) อนุญาตให้แก้ไขตำแหน่งเงื่อนแบบโต้ตอบได้ แต่การทำเช่นนี้จะใช้งานง่ายน้อยกว่าการแก้ไขจุดควบคุมอย่างมาก

การสร้างฟังก์ชันพื้นฐาน

ฟังก์ชันพื้นฐาน B-spline ที่ใช้ในการสร้างเส้นโค้ง NURBS มักจะแสดงด้วยโดยที่สอดคล้องกับจุดควบคุมที่ และสอดคล้องกับระดับของฟังก์ชันพื้นฐาน[ 14 ]มักจะละเว้นการพึ่งพาพารามิเตอร์ ดังนั้นเราจึงสามารถเขียนได้นิยาม ของฟังก์ชันพื้นฐานเหล่านี้เป็นแบบเวียนซ้ำในฟังก์ชันระดับ 0 เป็นฟังก์ชันคงที่แบบเป็นช่วง มีค่า เป็นหนึ่งในช่วงปมที่สอดคล้องกันและเป็นศูนย์ทุกที่อื่น โดยพื้นฐานแล้วคือการประมาณค่าเชิงเส้นของและฟังก์ชันสองฟังก์ชันหลังนี้มีค่าไม่เป็นศูนย์สำหรับช่วงปม และทับซ้อนกันสำหรับช่วงปม ฟังก์ชันคำนวณได้ดังนี้

จากบนลงล่าง: ฟังก์ชันพื้นฐานเชิงเส้น(สีน้ำเงิน) และ(สีเขียว) (ด้านบน) ฟังก์ชันน้ำหนักของฟังก์ชันเหล่านั้นและ(ตรงกลาง) และฟังก์ชันพื้นฐานกำลังสองที่ได้ (ด้านล่าง) จุดเชื่อมต่อคือ 0, 1, 2 และ 2.5

ฟังก์ชันเพิ่มขึ้นเชิงเส้นจากศูนย์เป็นหนึ่งในช่วงที่ไม่เป็นศูนย์ ในขณะที่ฟังก์ชันลดลงจากหนึ่งเป็นศูนย์ในช่วงที่ไม่เป็นศูนย์ ดังที่กล่าวไว้ก่อนหน้านี้ฟังก์ชันเป็นฟังก์ชันสามเหลี่ยม มีค่าไม่เป็นศูนย์ในช่วงปมสองช่วง โดยเพิ่มขึ้นจากศูนย์เป็นหนึ่งในช่วงแรก และลดลงเป็นศูนย์ในช่วงปมที่สอง ฟังก์ชันพื้นฐานลำดับสูงกว่าจะมีค่าไม่เป็นศูนย์ในช่วงปมที่มากกว่าที่สอดคล้องกัน และมีดีกรีสูงกว่าตามลำดับ ถ้าเป็นพารามิเตอร์ และเป็นมที่ เราสามารถเขียนฟังก์ชันและได้เป็น และ ฟังก์ชันและจะเป็นบวกเมื่อฟังก์ชันพื้นฐานลำดับต่ำกว่าที่สอดคล้องกันมีค่าไม่เป็นศูนย์ โดยการอุปมานบน n จะได้ว่าฟังก์ชันพื้นฐานมีค่าไม่เป็นลบสำหรับทุกค่าของและซึ่งทำให้การคำนวณฟังก์ชันพื้นฐานมีความเสถียรทางตัวเลข

จากการพิสูจน์โดยการอุปมานอีกครั้ง สามารถพิสูจน์ได้ว่าผลรวมของฟังก์ชันพื้นฐานสำหรับค่าพารามิเตอร์ค่าหนึ่งนั้นเท่ากับหนึ่ง นี่คือคุณสมบัติการแบ่งส่วนของเอกภาพ (partition of unity property) ของฟังก์ชันพื้นฐาน

ฟังก์ชันฐานเชิงเส้น
ฟังก์ชันฐานกำลังสอง

ภาพแสดงฟังก์ชันฐานเชิงเส้นและเชิงกำลังสองสำหรับปม {..., 0, 1, 2, 3, 4, 4.1, 5.1, 6.1, 7.1, ...}

ช่วงปมหนึ่งสั้นกว่าช่วงปมอื่นๆ อย่างเห็นได้ชัด ในช่วงปมนั้น จุดสูงสุดของฟังก์ชันฐานกำลังสองจะเด่นชัดกว่า โดยเกือบถึงหนึ่ง ในทางกลับกัน ฟังก์ชันฐานที่อยู่ติดกันจะลดลงสู่ศูนย์ได้เร็วกว่า ในเชิงเรขาคณิต นี่หมายความว่าเส้นโค้งเข้าใกล้จุดควบคุมที่สอดคล้องกันมากขึ้น ในกรณีของปมคู่ ความยาวของช่วงปมจะกลายเป็นศูนย์ และจุดสูงสุดจะถึงหนึ่งพอดี ฟังก์ชันฐานจะไม่สามารถหาอนุพันธ์ได้อีกต่อไป ณ จุดนั้น เส้นโค้งจะมีมุมแหลมหากจุดควบคุมที่อยู่ใกล้เคียงไม่อยู่ในแนวเดียวกัน

รูปแบบทั่วไปของเส้นโค้ง NURBS

โดยใช้คำจำกัดความของฟังก์ชันพื้นฐานจากย่อหน้าก่อนหน้า เส้นโค้ง NURBS จะมีรูปแบบดังต่อไปนี้: [ 14 ]

ในสมการนี้คือจำนวนจุดควบคุมและคือค่าน้ำหนักที่สอดคล้องกัน ตัวส่วนคือตัวประกอบการทำให้เป็นมาตรฐาน ซึ่งจะมีค่าเป็นหนึ่งก็ต่อเมื่อค่าน้ำหนักทั้งหมดเป็นหนึ่ง ซึ่งสามารถเห็นได้จากคุณสมบัติการแบ่งส่วนของเอกภาพ (partition of unity property) ของฟังก์ชันพื้นฐาน โดยทั่วไปมักเขียนในรูป ซึ่งฟังก์ชันเหล่านี้ เรียกว่าฟังก์ชันพื้นฐานเชิงตรรกะ (rational basis functions )

รูปแบบทั่วไปของพื้นผิว NURBS

พื้นผิว NURBS ได้มาจากการคูณเทนเซอร์ของเส้นโค้ง NURBS สองเส้น ดังนั้นจึงใช้พารามิเตอร์อิสระสองตัวและ(โดยมีดัชนีและตามลำดับ): [ 14 ] โดยมี เป็นฟังก์ชันฐานเชิงตรรกะ

การจัดการวัตถุ NURBS

การออกแบบ เรือยอชต์โดยใช้พื้นผิว NURBS

สามารถใช้การแปลงหลายอย่างกับวัตถุ NURBS ได้ ตัวอย่างเช่น หากเส้นโค้งบางเส้นถูกกำหนดโดยใช้ระดับที่แน่นอนและจุดควบคุม N จุด เส้นโค้งเดียวกันนั้นสามารถแสดงได้โดยใช้ระดับเดียวกันและจุดควบคุม N+1 จุด ในกระบวนการนี้ จุดควบคุมจำนวนหนึ่งจะเปลี่ยนตำแหน่งและมีการแทรกปมในเวกเตอร์ปม การจัดการเหล่านี้ถูกนำมาใช้อย่างกว้างขวางในระหว่างการออกแบบเชิงโต้ตอบ เมื่อเพิ่มจุดควบคุม รูปร่างของเส้นโค้งควรคงเดิม ซึ่งเป็นจุดเริ่มต้นสำหรับการปรับแต่งเพิ่มเติม การดำเนินการเหล่านี้จำนวนหนึ่งจะกล่าวถึงด้านล่าง[ 14 ] [ 15 ]

การสอดปม

ดังที่ชื่อบ่งบอกการแทรกปมคือการแทรกปมเข้าไปในเวกเตอร์ปม หากระดับของเส้นโค้งคือจุดควบคุมจะถูกแทนที่ด้วยจุดใหม่ รูปทรงของเส้นโค้งยังคงเหมือนเดิม

สามารถใส่ปมได้หลายครั้ง จนถึงจำนวนครั้งสูงสุดที่กำหนดไว้สำหรับปมนั้น บางครั้งเรียกว่าการปรับปรุงปม (knot refinement)ซึ่งสามารถทำได้โดยใช้อัลกอริทึมที่มีประสิทธิภาพมากกว่าการใส่ปมซ้ำๆ

การแก้ปม

การลบปมเป็นกระบวนการตรงกันข้ามกับการเพิ่มปม จุดประสงค์คือการลบปมและจุดควบคุมที่เกี่ยวข้องออก เพื่อให้ได้รูปแบบที่กะทัดรัดยิ่งขึ้น เห็นได้ชัดว่า การทำเช่นนี้โดยไม่รักษารูปทรงที่แน่นอนของเส้นโค้งนั้นไม่ใช่เรื่องง่ายเสมอไป ในทางปฏิบัติ จะมีการใช้ค่าความคลาดเคลื่อนในความแม่นยำเพื่อพิจารณาว่าสามารถลบปมได้หรือไม่ กระบวนการนี้ใช้เพื่อทำความสะอาดหลังจากเซสชันแบบโต้ตอบซึ่งอาจมีการเพิ่มจุดควบคุมด้วยตนเอง หรือหลังจากนำเข้าเส้นโค้งจากรูปแบบการแสดงผลอื่น ซึ่งกระบวนการแปลงโดยตรงอาจนำไปสู่จุดควบคุมที่ซ้ำซ้อน

ระดับความสูงองศา

เส้นโค้ง NURBS ที่มีดีกรีหนึ่งๆ สามารถแทนด้วยเส้นโค้ง NURBS ที่มีดีกรีสูงกว่าได้เสมอ วิธีการนี้มักใช้ในการรวมเส้นโค้ง NURBS ที่แยกจากกัน เช่น เมื่อสร้างพื้นผิว NURBS โดยการประมาณค่าระหว่างชุดเส้นโค้ง NURBS หรือเมื่อรวมเส้นโค้งที่อยู่ติดกัน ในกระบวนการนี้ เส้นโค้งต่างๆ ควรถูกปรับให้มีดีกรีเท่ากัน ซึ่งโดยปกติจะเป็นดีกรีสูงสุดของชุดเส้นโค้งนั้น กระบวนการนี้เรียกว่าการเพิ่มดีกรี (degree elevation )

ความโค้ง

คุณสมบัติที่สำคัญที่สุดในเรขาคณิตเชิงอนุพันธ์คือความโค้ง ความโค้ง อธิบายคุณสมบัติเฉพาะที่ (ขอบ มุม ฯลฯ) และความสัมพันธ์ระหว่างอนุพันธ์อันดับหนึ่งและอันดับสอง ดังนั้นจึงอธิบายรูปร่างของเส้นโค้งได้อย่างแม่นยำ เมื่อกำหนดอนุพันธ์แล้ว ก็สามารถคำนวณหรือประมาณความยาวส่วนโค้งจากอนุพันธ์อันดับสองได้ อย่างง่ายดาย การคำนวณความโค้งโดยตรงด้วยสมการเหล่านี้เป็นข้อได้เปรียบที่สำคัญของเส้นโค้งแบบพารามิเตอร์เมื่อเทียบกับการแสดงเส้นโค้งในรูปหลายเหลี่ยม

ตัวอย่าง: วงกลม

NURBS มีความสามารถในการอธิบายวงกลมได้อย่างแม่นยำ ในภาพนี้ สามเหลี่ยมสีดำคือรูปหลายเหลี่ยมควบคุมของเส้นโค้ง NURBS (แสดงที่ w=1) เส้นประสีน้ำเงินแสดงรูปหลายเหลี่ยมควบคุมที่สอดคล้องกันของเส้นโค้ง B-spline ในพิกัดเอกรูป 3 มิติซึ่งเกิดจากการคูณ NURBS ด้วยจุดควบคุมและน้ำหนักที่สอดคล้องกัน พาราโบลาสีน้ำเงินคือเส้นโค้ง B-spline ที่สอดคล้องกันใน 3 มิติ ซึ่งประกอบด้วยพาราโบลาสามอัน โดยการเลือกจุดควบคุมและน้ำหนักของ NURBS พาราโบลาจะขนานกับด้านตรงข้ามของกรวยสีเทา (โดยมีปลายอยู่ที่จุดกำเนิด 3 มิติ) ดังนั้นการหารด้วยwเพื่อฉายพาราโบลาลงบน ระนาบ w =1 จะได้ส่วนโค้งวงกลม (วงกลมสีแดง ดูภาคตัดกรวย )

เส้นโค้งสปลายที่ไม่ใช่เชิงตรรกะหรือเส้นโค้งเบซิเยร์อาจประมาณวงกลมได้ แต่ไม่สามารถแสดงวงกลมได้อย่างแม่นยำ เส้นโค้งสปลายเชิงตรรกะสามารถแสดงภาคตัดกรวยใดๆ ได้อย่างแม่นยำ รวมถึงวงกลมด้วย การแสดงผลนี้ไม่ได้มีเพียงหนึ่งเดียว แต่ความเป็นไปได้หนึ่งอย่างปรากฏด้านล่าง:

xyzน้ำหนัก
1001
110
0101
-110
-1001
-1-10
0-101
1-10
1001

ลำดับของเส้นโค้งคือสาม เนื่องจากวงกลมเป็นเส้นโค้งกำลังสอง และลำดับของสปลายน์นั้นมากกว่าดีกรีของส่วนพหุนามแบบแยกส่วนอยู่หนึ่ง เวกเตอร์ปมคือวงกลมประกอบด้วยวงกลมหนึ่งในสี่ส่วนสี่วงที่เชื่อมต่อกันด้วยปมคู่ แม้ว่าปมคู่ในเส้นโค้ง NURBS ลำดับที่สามโดยปกติจะทำให้ความต่อเนื่องของอนุพันธ์อันดับแรกหายไป แต่จุดควบคุมถูกจัดวางในลักษณะที่ทำให้อนุพันธ์อันดับแรกมีความต่อเนื่อง อันที่จริง เส้นโค้งนี้สามารถหาอนุพันธ์ได้อนันต์ครั้งทุกที่ ซึ่งเป็นสิ่งที่ต้องเป็นเช่นนั้นหากมันแสดงถึงวงกลมอย่างแม่นยำ

เส้นโค้งนี้แสดงถึงวงกลมได้อย่างแม่นยำ แต่ไม่ได้ถูกกำหนดพารามิเตอร์อย่างแม่นยำในความยาวส่วนโค้งของวงกลม นั่นหมายความว่า ตัวอย่างเช่น จุดที่ไม่ได้อยู่ที่(ยกเว้นจุดเริ่มต้น จุดกลาง และจุดสิ้นสุดของแต่ละส่วนของวงกลม เนื่องจากเป็นการแสดงผลแบบสมมาตร) ซึ่งเป็นไปไม่ได้ เพราะ พิกัด xของวงกลมจะให้การแสดงออกพหุนามตรรกยะที่แน่นอนสำหรับซึ่งเป็นไปไม่ได้ วงกลมหมุนครบหนึ่งรอบเมื่อพารามิเตอร์เปลี่ยนจาก 0 เป็นแต่เป็นเพราะเวกเตอร์ปมถูกเลือกโดยพลการให้เป็นพหุคูณของเท่านั้น

ดูเพิ่มเติม

  • คำอธิบายที่ชัดเจนเกี่ยวกับ NURBS สำหรับผู้ที่ไม่ใช่ผู้เชี่ยวชาญ
  • เกี่ยวกับ Nonuniform Rational B-Splines – NURBS
  • TinySpline: ไลบรารี C แบบโอเพนซอร์ส พร้อมส่วนเชื่อมต่อสำหรับภาษาต่างๆ
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Non-uniform_rational_B-spline&oldid=1361201611 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ สปลายบีเชิงตรรกะที่ไม่สม่ำเสมอ

NURBS ( Non-uniform rational basis spline ) เป็นแบบจำลองทางคณิตศาสตร์ที่ใช้สปลายฐาน (B-splines) ซึ่งมักใช้ในกราฟิกคอมพิวเตอร์เพื่อแสดงเส้นโค้งและพื้นผิว NURBS

ประวัติศาสตร์

ก่อนยุคคอมพิวเตอร์ การออกแบบจะวาดด้วยมือบนกระดาษโดยใช้เครื่องมือเขียนแบบต่างๆไม้บรรทัด ใช้ สำหรับ เส้นตรง วงเวียน ใช้สำหรับวงกลม และ ไม้โปรแทรกเตอร์ ใช้สำหรับมุม แต่รูปทรงหลายอย่าง เช่น เส้นโค้งอิสระ ของหัวเรือ ไม่สามารถวาดได้ด้วยเครื่องมือเหล่านี้

ความต่อเนื่อง

พื้นผิวที่อยู่ระหว่างการก่อสร้าง เช่น ตัวเรือของเรือยอชต์ มักประกอบด้วยพื้นผิว NURBS หลายๆ พื้นผิว ซึ่งเรียกว่า แพทช์ NURBS (หรือเรียกสั้นๆ ว่า แพทช์ ) แพทช์พื้นผิว เหล่านี้ควรถูกประกอบเข้าด้วยกัน ใน ลักษณะที่มองไม่เห็นขอบเขต...

ข้อกำหนดทางเทคนิค

เส้นโค้ง NURBS ถูกกำหนดโดยลำดับ ชุดของจุดควบคุมที่มีน้ำหนัก และเวกเตอร์ปม [ 9 ] เส้นโค้งและพื้นผิว NURBS เป็นการวางนัยทั่วไปของทั้ง เส้นโค้งและพื้นผิว B-spline และ Bézier โดยความแตกต่างหลักอยู่ที่น้ำหนักของจุดควบคุม ซึ่งทำให้เส้นโค้ง NURBS เป็นเส้นโค้ง เชิง...