ดูเหมือนว่าคุณต้องการรักษาความเร็วของวัตถุไว้ที่ค่าคงที่ตลอดทั้งโค้ง - การรู้ว่าความยาวส่วนโค้งจะไม่ช่วยคุณทำสิ่งนี้ มันจะช่วยให้คุณคำนวณเวลาที่วัตถุจะไปถึงจุดสิ้นสุดถ้ามันไปที่ความเร็วนั้นดังนั้นมันจะดีกว่าที่คุณมีอยู่ตอนนี้ (วัตถุนั้นจะมีความเร็วเฉลี่ยเท่ากันระหว่างทุกจุด) แต่ ความเร็วที่แท้จริงของวัตถุจะยังคงเปลี่ยนแปลงตามที่มันเคลื่อนที่ไปรอบ ๆ โค้ง
ทางออกที่ดีกว่าคือการเปลี่ยนพารามิเตอร์พารามิเตอร์ของเรา(พารามิเตอร์ที่เปลี่ยนจาก 0 เป็น 1 ซึ่งฉันจะเรียกs
เพื่อหลีกเลี่ยงความสับสนด้วยt = time
)ที่อัตราตัวแปรds/dt
ซึ่งกำหนดโดยความเร็วที่คุณต้องการให้วัตถุเคลื่อนที่ จุดนั้นบนเส้นโค้ง ดังนั้นอาจกล่าวได้ว่าแทนการเปลี่ยนแปลงs
0.01 เฟรมต่อเฟรมเราอาจเปลี่ยน 0.005 หนึ่งเฟรม 0.02 เฟรมต่อไปเป็นต้น
เราทำสิ่งนี้โดยการคำนวณอนุพันธ์ของx
( dx/ds
) และy
( dy/ds
) แต่ละเฟรมจากนั้นตั้งค่า
ds / dt = speed / sqrt ((dx / ds) 2 + (dy / ds) 2 )
นั่นคือโดยการใช้ความเร็วที่เราต้องการไปและหารด้วยความเร็วที่เราต้องการจริง ๆ ถ้าเรามีการเปลี่ยนแปลงs
ที่เพิ่มขึ้นคงที่
พิสูจน์
เราต้องการความเร็วของวัตถุของเราให้คงที่ speed
ขอให้คงที่ว่าชื่อ
เราได้เรียนรู้ในแคลคูลัสสองปีว่าสำหรับสมการตัวแปรx(s)
และy(s)
,
ความเร็ว = sqrt ((dx / dt) 2 + (dy / dt) 2 )
เรายังได้เรียนรู้ว่า
dx / dt = dx / ds * ds / dt (กฎลูกโซ่)
ดังนั้น,
ความเร็ว = sqrt ((dx / ds) 2 (ds / dt) 2 + (dy / ds) 2 (ds / dt) 2 )
แก้เพื่อds/dt
เราจะได้สมการที่ระบุ
การคำนวณอนุพันธ์
ผมไม่เคยทำงานร่วมกับเส้นโค้งโดยเฉพาะอย่างยิ่ง แต่ผมเข้าใจว่าพวกเขาเพียงแค่ให้x(s)
และในแง่ของลูกบาศก์สมการy(s)
s
ดังนั้นเราสามารถหาอนุพันธ์dx/ds
ได้ง่าย: ถ้า
x (s) = a * s 3 + b * s 2 + c * s + e
แล้วก็
dx / ds = 3a * s 2 + 2b * s + c
(เดียวกันdy/ds
)และแน่นอนว่าคุณจะต้องรู้ค่าที่แน่นอนของa
, b
และc
การทำเช่นนี้ ตามนี้หน้านี้ค่าเหล่านั้นหาง่าย
ในที่สุดเพื่อตอบคำถามในชื่อเรื่อง: การหาสมการความยาวส่วนโค้งของฟังก์ชันพาราเมทริกเป็นการแก้ปัญหา หนึ่งแน่นอนค่อนข้างซับซ้อน ; แม้แต่กรณีง่าย ๆ ของสมการลูกบาศก์ - โดยทั่วไปสิ่งนี้ไม่สามารถทำได้
ดังนั้นคุณจะต้องประเมินตัวเลขหนึ่ง "ตัดโค้งลง 10 เส้นตรงและข้อสรุปความยาวของพวกเขา"ตามที่คุณแนะนำคือหนึ่งในวิธีที่ง่ายมากการทำเช่นนี้ ; อย่างไรก็ตามมีวิธีการที่ซับซ้อนกว่าเล็กน้อยที่จะให้ผลลัพธ์ที่แม่นยำมากขึ้นโดยใช้เซกเมนต์บรรทัดน้อยลง