คอมพิวเตอร์กราฟฟิค Curves
ในคอมพิวเตอร์กราฟิกเรามักจะต้องวาดวัตถุประเภทต่างๆลงบนหน้าจอ วัตถุไม่ได้แบนตลอดเวลาและเราต้องวาดเส้นโค้งหลาย ๆ ครั้งเพื่อวาดวัตถุ
ประเภทของเส้นโค้ง
เส้นโค้งคือชุดของจุดที่มีขนาดใหญ่ไม่สิ้นสุด แต่ละจุดมีเพื่อนบ้านสองจุดยกเว้นจุดสิ้นสุด เส้นโค้งสามารถแบ่งออกเป็นสามประเภทอย่างกว้าง ๆ -explicit, implicit, และ parametric curves.
เส้นโค้งโดยปริยาย
การแสดงเส้นโค้งโดยปริยายกำหนดชุดของจุดบนเส้นโค้งโดยใช้ขั้นตอนที่สามารถทดสอบเพื่อดูว่ามีจุดบนเส้นโค้ง โดยปกติแล้วเส้นโค้งโดยปริยายจะถูกกำหนดโดยฟังก์ชันโดยนัยของแบบฟอร์ม -
f (x, y) = 0
สามารถแสดงเส้นโค้งหลายค่า (ค่า y หลายค่าสำหรับค่า x) ตัวอย่างทั่วไปคือวงกลมซึ่งมีการแสดงโดยนัยคือ
x2 + y2 - R2 = 0
เส้นโค้งที่ชัดเจน
ฟังก์ชันทางคณิตศาสตร์ y = f (x) สามารถพล็อตเป็นเส้นโค้งได้ ฟังก์ชันดังกล่าวเป็นการแสดงเส้นโค้งอย่างชัดเจน การแสดงที่ชัดเจนไม่ใช่เรื่องทั่วไปเนื่องจากไม่สามารถแสดงเส้นแนวตั้งและเป็นค่าเดียว สำหรับค่า x แต่ละค่าโดยปกติฟังก์ชันจะคำนวณค่า y เพียงค่าเดียวเท่านั้น
เส้นโค้งพาราเมตริก
เส้นโค้งที่มีรูปแบบพาราเมตริกเรียกว่าเส้นโค้งพาราเมตริก การแสดงเส้นโค้งอย่างชัดเจนและโดยปริยายสามารถใช้ได้เฉพาะเมื่อรู้จักฟังก์ชันเท่านั้น ในทางปฏิบัติจะใช้เส้นโค้งพาราเมตริก เส้นโค้งพาราเมตริกสองมิติมีรูปแบบต่อไปนี้ -
P (t) = f (t), g (t) หรือ P (t) = x (t), y (t)
ฟังก์ชัน f และ g จะกลายเป็นพิกัด (x, y) ของจุดใด ๆ บนเส้นโค้งและจุดจะได้รับเมื่อพารามิเตอร์ t มีการเปลี่ยนแปลงในช่วงเวลาหนึ่ง [a, b] โดยปกติ [0, 1]
Bezier Curves
Bezier curve ถูกค้นพบโดยวิศวกรชาวฝรั่งเศส Pierre Bézier. เส้นโค้งเหล่านี้สามารถสร้างขึ้นได้ภายใต้การควบคุมของจุดอื่น ๆ เส้นสัมผัสโดยประมาณโดยใช้จุดควบคุมใช้เพื่อสร้างเส้นโค้ง เส้นโค้ง Bezier สามารถแสดงทางคณิตศาสตร์เป็น -
$$ \ sum_ {k = 0} ^ {n} P_ {i} {B_ {i} ^ {n}} (t) $$
โดยที่ $ p_ {i} $ คือเซตของคะแนนและ $ {B_ {i} ^ {n}} (t) $ แทนพหุนามเบิร์นสไตน์ซึ่งกำหนดโดย -
$$ {B_ {i} ^ {n}} (t) = \ binom {n} {i} (1 - t) ^ {ni} t ^ {i} $$
ที่ไหน n คือระดับพหุนาม i คือดัชนีและ t คือตัวแปร
เส้นโค้งเบซิเอร์ที่ง่ายที่สุดคือเส้นตรงจากจุด $ P_ {0} $ ถึง $ P_ {1} $ เส้นโค้ง Bezier กำลังสองถูกกำหนดโดยจุดควบคุมสามจุด เส้นโค้ง Bezier ลูกบาศก์ถูกกำหนดโดยจุดควบคุมสี่จุด
คุณสมบัติของ Bezier Curves
เส้นโค้ง Bezier มีคุณสมบัติดังต่อไปนี้ -
โดยทั่วไปจะเป็นไปตามรูปร่างของรูปหลายเหลี่ยมควบคุมซึ่งประกอบด้วยส่วนต่างๆที่เชื่อมต่อกับจุดควบคุม
พวกเขาผ่านจุดควบคุมแรกและจุดสุดท้ายเสมอ
มีอยู่ในตัวถังนูนของจุดควบคุมที่กำหนด
ระดับของพหุนามที่กำหนดส่วนโค้งจะน้อยกว่าจำนวนของการกำหนดจุดรูปหลายเหลี่ยม ดังนั้นสำหรับจุดควบคุม 4 จุดองศาของพหุนามคือ 3 คือพหุนามลูกบาศก์
โดยทั่วไปเส้นโค้ง Bezier จะเป็นไปตามรูปร่างของรูปหลายเหลี่ยมที่กำหนด
ทิศทางของเวกเตอร์แทนเจนต์ที่จุดสิ้นสุดจะเหมือนกับเวกเตอร์ที่กำหนดโดยส่วนแรกและส่วนสุดท้าย
คุณสมบัติตัวถังนูนสำหรับเส้นโค้ง Bezier ช่วยให้มั่นใจได้ว่าพหุนามเป็นไปตามจุดควบคุมอย่างราบรื่น
ไม่มีเส้นตรงตัดกับเส้นโค้งเบเซียร์มากกว่าที่จะตัดกับรูปหลายเหลี่ยมควบคุม
พวกมันไม่แปรผันภายใต้การเปลี่ยนแปลงของความสัมพันธ์
เส้นโค้ง Bezier แสดงการควบคุมทั่วโลกหมายถึงการย้ายจุดควบคุมจะเปลี่ยนรูปร่างของเส้นโค้งทั้งหมด
เส้นโค้ง Bezier ที่กำหนดสามารถแบ่งย่อยได้ที่จุด t = t0 เป็นสองส่วนของ Bezier ซึ่งรวมเข้าด้วยกันที่จุดที่สอดคล้องกับค่าพารามิเตอร์ t = t0
เส้นโค้ง B-Spline
เส้นโค้ง Bezier ที่ผลิตโดยฟังก์ชันพื้นฐานของ Bernstein มีความยืดหยุ่น จำกัด
ขั้นแรกจำนวนของจุดยอดรูปหลายเหลี่ยมที่ระบุจะแก้ไขลำดับของพหุนามที่เป็นผลลัพธ์ซึ่งกำหนดเส้นโค้ง
ลักษณะการ จำกัด ประการที่สองคือค่าของฟังก์ชันการผสมไม่เป็นศูนย์สำหรับค่าพารามิเตอร์ทั้งหมดในเส้นโค้งทั้งหมด
พื้นฐาน B-spline ประกอบด้วยพื้นฐาน Bernstein เป็นกรณีพิเศษ พื้นฐาน B-spline ไม่ใช่ทั่วโลก
เส้นโค้ง B-spline หมายถึงการรวมกันเชิงเส้นของจุดควบคุม Pi และฟังก์ชันพื้นฐาน B-spline $ N_ {i,} $ k (t) ที่กำหนดโดย
$ C (t) = \ sum_ {i = 0} ^ {n} P_ {i} N_ {i, k} (t), $ $ n \ geq k-1, $ $ t \: \ epsilon \: [ tk-1, tn + 1] $
ที่ไหน
{$ p_ {i} $: i = 0, 1, 2 … .n} เป็นจุดควบคุม
k คือลำดับของส่วนพหุนามของเส้นโค้ง B-spline ลำดับ k หมายความว่าเส้นโค้งประกอบด้วยส่วนพหุนามแบบทีละส่วนขององศา k - 1
$ N_ {i, k} (t) $ คือ "ฟังก์ชันการผสม B-spline ที่เป็นมาตรฐาน" พวกเขาอธิบายโดยลำดับ k และตามลำดับที่ไม่ลดลงของจำนวนจริงโดยปกติเรียกว่า "ลำดับปม"
$$ {t_ {i}: i = 0, ... n + K} $$
ฟังก์ชัน N i , k อธิบายไว้ดังนี้ -
$$ N_ {i, 1} (t) = \ left \ {\ begin {matrix} 1, & if \: u \: \ epsilon \: [t_ {i,} t_ {i + 1}) \\ 0 , & มิฉะนั้น \ end {matrix} \ right. $$
และถ้า k> 1
$$ N_ {i, k} (t) = \ frac {t-t_ {i}} {t_ {i + k-1}} N_ {i, k-1} (t) + \ frac {t_ {i + k} -t} {t_ {i + k} - t_ {i + 1}} N_ {i + 1, k-1} (t) $$
และ
$$ t \: \ epsilon \: [t_ {k-1}, t_ {n + 1}) $$
คุณสมบัติของ B-spline Curve
เส้นโค้ง B-spline มีคุณสมบัติดังต่อไปนี้ -
ผลรวมของฟังก์ชันพื้นฐาน B-spline สำหรับค่าพารามิเตอร์คือ 1
ฟังก์ชันพื้นฐานแต่ละฟังก์ชันเป็นบวกหรือศูนย์สำหรับค่าพารามิเตอร์ทั้งหมด
แต่ละฟังก์ชันพื้นฐานมีค่าสูงสุดหนึ่งค่าอย่างแม่นยำยกเว้น k = 1
ลำดับสูงสุดของเส้นโค้งเท่ากับจำนวนจุดยอดของการกำหนดรูปหลายเหลี่ยม
ระดับของพหุนาม B-spline เป็นอิสระกับจำนวนจุดยอดของการกำหนดรูปหลายเหลี่ยม
B-spline ช่วยให้สามารถควบคุมพื้นผิวเส้นโค้งได้เนื่องจากจุดยอดแต่ละจุดมีผลต่อรูปร่างของเส้นโค้งในช่วงของค่าพารามิเตอร์เท่านั้นที่ฟังก์ชันพื้นฐานที่เกี่ยวข้องไม่เป็นศูนย์
เส้นโค้งแสดงคุณสมบัติที่ลดน้อยลงของรูปแบบ
เส้นโค้งโดยทั่วไปเป็นไปตามรูปร่างของการกำหนดรูปหลายเหลี่ยม
การแปลงความสัมพันธ์ใด ๆ สามารถนำไปใช้กับเส้นโค้งได้โดยนำไปใช้กับจุดยอดของการกำหนดรูปหลายเหลี่ยม
เส้นโค้งภายในตัวถังนูนของรูปหลายเหลี่ยมที่กำหนด