คอมพิวเตอร์กราฟฟิค 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 ช่วยให้สามารถควบคุมพื้นผิวเส้นโค้งได้เนื่องจากจุดยอดแต่ละจุดมีผลต่อรูปร่างของเส้นโค้งในช่วงของค่าพารามิเตอร์เท่านั้นที่ฟังก์ชันพื้นฐานที่เกี่ยวข้องไม่เป็นศูนย์

  • เส้นโค้งแสดงคุณสมบัติที่ลดน้อยลงของรูปแบบ

  • เส้นโค้งโดยทั่วไปเป็นไปตามรูปร่างของการกำหนดรูปหลายเหลี่ยม

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

  • เส้นโค้งภายในตัวถังนูนของรูปหลายเหลี่ยมที่กำหนด