สิ่งนี้เริ่มต้นจากความคิดเห็นเกี่ยวกับความคิดเห็นในคำตอบของ @ bummzack แต่ยาวเกินไป
ฉันจะกำหนดได้อย่างไรว่าฉันควรมีเซ็กเมนต์กี่เซ็กเมนต์
มีสองวิธี สิ่งแรกคือเพียงอัลกอริธึมมาตรฐานสำหรับการแสดงผลเส้นโค้งเบซิเยร์: จุดควบคุมสร้างกล่องขอบเขตของเส้นโค้งดังนั้นหากจุดควบคุมทั้งหมดอยู่ภายในเอปไซลอนของส่วนของเส้นจากจุดเริ่มต้นจนถึงจุดสิ้นสุดคุณประมาณเป็นเส้น มิฉะนั้นคุณแบ่งย่อยโดยใช้อัลกอริทึมของ de Casteljau Epsilon ถูกเลือกตามข้อผิดพลาดที่คุณต้องการในผลลัพธ์สุดท้าย (สำหรับการเรนเดอร์ปกติคือ 0.5 พิกเซล)
อีกวิธีคือการปรับแต่งโดยใช้การคำนวณช่วงเวลา ใช้ความยาวของบรรทัดตั้งแต่ต้นจนจบเป็นขอบเขตล่างและผลรวมของความยาวของเส้นผ่านจุดควบคุมเป็นขอบเขตบน แบ่งย่อยอีกครั้งตามข้อกำหนดของข้อผิดพลาดขั้นสุดท้ายของคุณ
ปกติจะมีการแบ่งย่อยที่ t = 0.5 แต่อัลกอริทึมของ de Casteljau อนุญาตให้แยกได้ทุกจุดดังนั้นหากคุณมีลูกบาศก์เบซิเยร์ที่มีจุดควบคุม C_0 ถึง C_3 และ C_2 นั้นใกล้กับส่วนของเส้นแบ่งระหว่างจุดปลายมากกว่า C_1 มาก หนึ่งใน 1/3 หรือ 2/3 ให้ขอบเขตที่แคบ ฉันไม่ได้ทำงานผ่านพีชคณิตเพื่อพิสูจน์ว่าสิ่งไหนดีกว่ากัน แต่คุณสามารถทดลองและรายงานกลับหากคุณต้องการ หากไม่มีอะไรอื่นฉันต้องการชี้ให้เห็นว่าตัวเลือกอยู่ที่นั่น