ベジエ曲線のなめらかさの話 / Bézier Smoothness

ベジエ曲線のなめらかさの話 / Bézier Smoothness

6afbe110d33ef7e859fb8649b86bae55?s=128

Masaya Nakamura

May 17, 2019
Tweet

Transcript

  1. ϕδΤۂઢͷ
 ͳΊΒ͔͞ͷ࿩ ೥݄೔ !NBTIBCPX

  2. ͜Μʹͪ͸ w !NBTIBCPX w ιʔγϟϧ1-64ϑϩϯτΤϯυΤϯδχΞ w લ৬Ͱ͸ϑΥϯτͷΤϯδχΞΛ΍͍ͬͯͨ w ࠓ೔͸ϕδΤۂઢʹ͍ͭͯޠΓ·͢ 

    
  3.   w ͍Ζ͍ΖͳਤܗฤूπʔϧͰݟΔΞϨ ϕδΤۂઢͬͯ

  4.   w ਓؒʹͱͬͯ΋ίϯϐϡʔλʹͱͬͯ΋ѻ͍΍͍͢ w ϕΫλը૾ɾϑΥϯτɾඳը"1*ɾ$"%ͳͲͰར༻ w ೥͝ΖɺγτϩΤϯͷ1BVMEF$BTUFMKBVͱ
 ϧϊʔͷ1JFSSF#É[JFS͕ಠཱʹ։ൃͨ͠Β͍͠ w

    ࠓճ͸ฏ໘্ͷ࣍ϕδΤۂઢΛલఏʹͯ͠࿩͠·͢ ϕδΤۂઢ
  5. ਺ֶతͳදݱ w ࢝఺ɹ੍ޚ఺ऴ఺ɹͷ఺Ͱఆٛ͞ΕΔ w ύϥϝʔλΛͷൣғͰ
 ಈ͔ͨ͠ͱ͖ͷي੻͕ɺ
 ීஈΑ͘ݟΔϕδΤۂઢ   B(t)

    = (1 − t)3 p0 + 3(1 − t)2t c0 + 3(1 − t)t2 c1 + t3 p1 p0 c0 , c1 p1 t [0,1] p0 = B(0) p1 = B(1) c0 c1 B(0.6)
  6. ༡΂ΔσϞ w ϕδΤۂઢΛຊ༻ҙ͓͍ͯͨ͠ͷͰɺ৮ͬͯΈΔ w IUUQTNBTIBCPXHJUIVCJPCF[JFSTNPPUIOFTT  

  7. ࠓճͷςʔϚ w ϕδΤۂઢͱϕδΤۂઢΛͳΊΒ͔ʹͭͳ͍͛ͨʂ w ׳Ε͍ͯͳ͍ͱҙ֎ͱΉ͔͍ͣ͠ w ͳΊΒ͔ʹͱ͸  

  8. ·ͣ͸ͦ΋ͦ΋ w ͭͷϕδΤۂઢΛͭͳ͛Δඞཁ͕͋Δ w ۂઢ"ͷऴ఺ͱɺۂઢ#ͷ࢝఺ΛҰகͤ͞Δʢ؆୯ʣ w ɹ࿈ଓʢҐஔ࿈ଓʣͱ͍͏ G0  

  9. Ͱ΋·ͩંΕ͍ͯΔ w ࣍͸ɺͭͳ͛ͨ෦෼ͷ޲͖Λἧ͑Δඞཁ͕͋Γͦ͏ w ۂઢͷ޲͖ͱ͸ʁˠ઀ઢͷ޲͖ w ܭࢉͰٻΊΔͷͰ͋Ε͹ɺඍ෼͢Ε͹Α͍   B′(t)

    = (−3t2 + 6t − 3) p0 + (9t2 − 12t + 3) c0 + (−9t2 + 6t) c1 + 3t2 p1
  10. ઀ઢͱϋϯυϧ w ࣮͸ɺ࢝఺ʗऴ఺ʹ͓͚Δ઀ઢͷ޲͖͸ɺ
 ϋϯυϧͷ޲͖ͱҰக͍ͯ͠Δ w ΍ɹɹΛܭࢉͯ͠ΈΔͱΘ͔Δ   B′(0) B′(1)

  11. ޲͖Λἧ͑Δ w ۂઢ" #ͷϋϯυϧΛҰ௚ઢʹฒ΂Ε͹Α͍ w ࠓճ͸୯७ʹɺۂઢ#ͷϋϯυϧͷ֯౓Λม͑ͯௐ੔ w ɹ࿈ଓʢ઀ઢ࿈ଓʣͱ͍͏  

    G1
  12. Ͱ΋·ͩෆࣗવ w ۂ͕Γ۩߹͕ҧ͏Α͏ͳʜʁ w ۂ͕Γ۩߹ͱ͸   ͜͜Β΁ΜͰٸʹ
 ௚ઢͬΆ͘ͳͬͯ ϋϦ͕ͳ͘ͳͬͨΑ͏ͳ

  13. ઀৮ԁ w ۂઢҰൠͩͱΑ͘Θ͔Βͳ͍ͷͰɺ਎ۙͳԁͰߟ͑ͯΈΔ w ۂઢͷ͘͝Ұ෦෼͚ͩʹ஫໨ͯ͠ɺԁހͰۙࣅ͢Δ w ͦͷۃݶͷԁΛ઀৮ԁͱ͍͏  

  14. R w ઀৮ԁͷେ͖͞Ͱۂ͕Γ۩߹͕දݱͰ͖ͦ͏ w ઀৮ԁͷ൒ܘΛۂ཰൒ܘͱݺͿ w ۂ཰൒ܘ͕େ͖͍˱Χʔϒ͕ΏΔ͍ w ۂ཰൒ܘ͕খ͍͞˱Χʔϒ͕͖͍ͭ w

    ٸΧʔϒ஫ҙͷඪࣝʹ
 ॻ͍ͯ͋ͬͨΓ͢Δ ۂ཰൒ܘ   R
  15. ۂ཰൒ܘͷܭࢉ w Ұൠͷύϥϝʔλۂઢͷۂ཰൒ܘ͸ɺ࣍ࣜͰܭࢉͰ͖Δ w ͨͩ͠ɺμογϡ͸ύϥϝʔλɹʹΑΔඍ෼Λද͢ w ͜ͷࣜͰग़ͯ͘Δۂ཰൒ܘ͸ූ߸෇͖ w ਖ਼ͳΒࠨճΓɺෛͳΒӈճΓ 

     R = (x′2 + y′2 ) 3 2 x′y′′− y′x′′ t
  16. ໰୊෦෼ͷۂ཰൒ܘ w ۂ཰൒ܘ͕ͥΜͥΜҧ͏  

  17. ۂ཰ w ۂ཰൒ܘͷٯ਺ɹɹΛۂ཰ɹͱ͍͏ w ۂ཰൒ܘ͕େ͖͍˱ۂ཰͕খ͍͞˱Χʔϒ͕ΏΔ͍ w ۂ཰൒ܘ͕খ͍͞˱ۂ཰͕େ͖͍˱Χʔϒ͕͖͍ͭ w ͬͪ͜ͷํ͕Θ͔Γ΍͍͢ʁ 

     1/R κ ۂ཰େ ۂ཰খ
  18. ۂ཰ͷࢹ֮Խ w DVSWBUVSFDPNCʢۂ཰ͷᷱʁʣ w ֤఺ʹ͓͚Δۂ཰Λɺ๏ઢํ޲ʹදࣔͨ͠΋ͷ w $"%ιϑτ΍ϑΥϯτΤσΟλʹ౥ࡌ͞Ε͍ͯΔ   ۂ཰େ

    ۂ཰খ มۂ఺
  19. ໰୊෦෼ͷۂ཰ͷᷱ w ۂ཰ͷҧ͍͕Ұ໨ྎવ  

  20. ۂ཰Λἧ͑Δ w ΄Ͳ୯७Ͱ͸ͳ͍͕ɺܭࢉͰͳΜͱ͔Ͱ͖Δ w ࠓճ͸ɺۂઢ#ͷϋϯυϧͷ௕͞Λม͑ͯௐ੔ w ɹ࿈ଓʢۂ཰࿈ଓʣͱ͍͏   G2

    G0, G1
  21. ϏϑΥʔΞϑλʔ w ͗ͪ͜ͳ͕͞ݮͬͯɺΑΓͳΊΒ͔ʹͳͬͨ   ☺

  22. ·ͱΊ w ϕδΤۂઢɾ઀ઢɾۂ཰͋ͨΓΛͬ͘͟Γઆ໌ͨ͠ w ɹɹɹɹɹ࿈ଓੑΛຬͨ͢Α͏ʹௐ੔͢Δ͜ͱͰɺ
 ϕδΤۂઢ͕ͳΊΒ͔ʹͳͬͨ w Ϣʔβʔʹͱͬͯ͸ɺ
 ࢹ֮Խ͕େ͖ͳख͕͔ΓʹͳΔ 

     G0, G1, G2
  23. ͜ͷઌͷτϐοΫ w ɹ࿈ଓɺ͋Δ͍͸ͦΕҎ্͸ʁ w ɹ࿈ଓͳΒ͢΂ͯਓؒͷݟͨ໨ʹඒ͍͠ʁ w ࢥ͍ඳ͍͍ͯΔܗΛͳΔ΂่ͣ͘͞ʹௐ੔͢Δʹ͸ʁ w ΫϩιΠυۂઢʢผ໊ɿΦΠϥʔཐટɺ4QJSPʣ 

     G3 Gn