public void curveStart ( ) { double d0 = AbstractPoint . angle ( P [ start ] , P [ start + 3 ] ) ; // P0 -> P3 double d1 = AbstractPoint . angle ( P [ start + 3 ] , P [ start ] ) ; // P3 -> P0 double d2 = AbstractPoint . angle ( P [ start + 3 ] , P [ start + 2 ] ) ; // P3 -> P2 double a1 = d1 - d2 ; double a2 = d0 + a1 ; double di = AbstractPoint . distance ( P [ start + 3 ] , P [ start + 2 ] ) ; P [ start + 1 ] = AbstractPoint . move ( P [ start ] , a2 , di ) ; }
Experimental! makes the start curve like the end