given_angle = 117;਀琀愀戀氀攀开砀开氀攀渀最琀栀 㴀 㐀㬀 table_y_length = 8; // the given, that must be input਀最椀瘀攀渀开砀开氀攀渀最琀栀 㴀 ㌀⸀㄀㬀 given_y_length = 6.2਀ reference_length = 8 - given_y_length //that is using angles < = 180; forward hit਀  start_length =(given_x_length^2 + given_y_length^2);਀ count = 2; // count = 2 to count the times the ball has moved਀                                   昀爀漀洀 琀栀攀 瀀漀椀渀琀 椀琀 昀椀爀猀琀 栀椀琀猀 琀栀攀 琀愀戀氀攀ᤀ猠 爀愀椀氀 ਀ ਀                                                            椀昀 挀漀猀⠀最椀瘀攀渀开愀渀最氀攀⤀ 㸀   愀渀搀 挀漀猀⠀最椀瘀攀渀开愀渀最氀攀⤀ 㰀 㴀㴀 ㄀         ⼀⼀昀椀渀搀椀渀最 琀栀攀 爀攀昀攀爀攀渀挀攀 愀渀最氀攀 to compare the given //angle ਀ऀ挀漀猀开爀攀昀攀爀攀渀挀攀开愀渀最氀攀 㴀 ⠀㄀㠀 ⤀ else // cos(given_angle > -1 and < 0਀ऀ挀漀猀开爀攀昀攀爀攀渀挀攀开愀渀最氀攀 㴀 ⠀ ⤀㬀 ਀椀昀 猀椀渀⠀最椀瘀攀渀开愀渀最氀攀⤀ 㰀   sin_reference_angle = (270)਀                                   攀氀猀攀                               ⼀⼀攀氀猀攀 椀昀 猀椀渀⠀最椀瘀攀渀开愀渀最氀攀⤀ 㸀 㴀㴀   sin_reference_angle = (90)਀ ਀ ਀猀猀椀渀 㴀 ⠀猀椀渀⠀猀椀渀开爀攀昀攀爀攀渀挀攀开愀渀最氀攀⤀ ⴀ 猀椀渀⠀最椀瘀攀渀开愀渀最氀攀⤀⤀⼀猀椀渀⠀最椀瘀攀渀开愀渀最氀攀⤀ ⨀ 爀攀昀攀爀攀渀挀攀开氀攀渀最琀栀 ਀⠀爀攀昀攀爀攀渀挀攀开氀攀渀最琀栀 ⬀ 猀猀椀渀⤀ ⨀ 挀漀猀⠀最椀瘀攀渀开愀渀最氀攀⤀ 㴀 砀开氀攀渀最琀栀 ਀ if x_length > (table_ x_size - given_x_length) //this determines if it hits the ਀                                                                                                             ⼀⼀砀 猀椀搀攀 漀爀 猀椀搀攀 爀愀椀氀猀 ਀ऀऀ椀昀 最椀瘀攀渀开愀渀最氀攀 㰀 㤀   reference_length = table_x_length - given_x_length਀ऀऀ攀氀猀攀 reference_length = given_x_length਀ scos = (cos(cos_reference_angle) - cos(given_angle))/cos(given_angle) * //finds values ਀     爀攀昀攀爀攀渀挀攀开氀攀渀最琀栀                                                                                             ⼀⼀漀昀 昀椀爀猀琀 砀 栀椀琀    ਀ऀ砀开氀攀渀最琀栀 㴀 ⠀爀攀昀攀爀攀渀挀攀开氀攀渀最琀栀 ⬀ 猀挀漀猀⤀ ⨀ 挀漀猀⠀最椀瘀攀渀开愀渀最氀攀⤀ y_length = (reference_length + scos) * sin(given_angle)਀ऀ new_angle = given_angle਀                                                                 ऀ渀攀眀开愀渀最氀攀 㴀 渀攀眀开愀渀最氀攀 ⬀ ⠀挀漀猀开爀攀昀攀爀攀渀挀攀开愀渀最氀攀 ⴀ 最椀瘀攀渀开愀渀最氀攀⤀ ⨀ ㈀  //this is the new angle formed by the angles reflection਀ऀ ਀ use = 2 //use to determine angle since angle changes਀ऀऀऀऀऀऀऀ⼀⼀搀攀瀀攀渀搀椀渀最 漀渀 眀栀椀挀栀 猀椀搀攀 眀愀猀 栀椀琀 昀椀爀猀琀 else //here x is hit first਀ऀऀ椀昀 最椀瘀攀渀 愀渀最氀攀 㰀 ㄀㠀 ऀऀऀऀऀ⼀⼀椀昀 栀椀琀猀 礀 爀愀椀氀 昀椀爀猀琀 昀椀渀搀 礀 sin_reference_length = 8 - given_y_length //values ਀                    攀氀猀攀  sin_reference_length = given_y_length਀ऀ ਀ऀ砀开氀攀渀最琀栀 㴀 ⠀爀攀昀攀爀攀渀挀攀开氀攀渀最琀栀 ⬀ 猀猀椀渀⤀ ⨀ 挀漀猀⠀最椀瘀攀渀开愀渀最氀攀⤀ y_length = (reference_length + ssin) * sin(given_angle)਀ new_angle = given_angle਀                                                                 ऀ渀攀眀开愀渀最氀攀 㴀 渀攀眀开愀渀最氀攀 ⬀ ⠀挀漀猀开爀攀昀攀爀攀渀挀攀开愀渀最氀攀 ⴀ 最椀瘀攀渀开愀渀最氀攀⤀ ⨀ ㈀  ਀ऀ use = 1 //use to determine hitting y first਀ ਀ If use = 1 //this calculates if it hit the y distance of table first਀ऀ猀猀椀渀 㴀 ⠀猀椀渀⠀猀椀渀开爀攀昀攀爀攀渀挀攀开愀渀最氀攀⤀ ⴀ 猀椀渀⠀最椀瘀攀渀开愀渀最氀攀⤀⤀⼀ 猀椀渀⠀最椀瘀攀渀开愀渀最氀攀⤀ ⨀ 爀攀昀攀爀攀渀挀攀开氀攀渀最琀栀 ਀ऀऀ椀昀 礀开氀攀渀最琀栀 ⬀ 猀猀椀渀 ⨀ 挀漀猀⠀最椀瘀攀渀开愀渀最氀攀⤀ 㸀 琀愀戀氀攀开砀开氀攀渀最琀栀 ਀                              猀挀漀猀 㴀 ⠀挀漀猀⠀挀漀猀开爀攀昀攀爀攀渀挀攀开愀渀最氀攀⤀ ⴀ 挀漀猀⠀最椀瘀攀渀开愀渀最氀攀⤀⤀⼀挀漀猀⠀最椀瘀攀渀开愀渀最氀攀 ⨀ table_x_length਀ x_length002 = (table_x_length + scos) * cos(given_angle)਀ऀऀऀ礀开氀攀渀最琀栀  ㈀ 㴀 ⠀琀愀戀氀攀开砀开氀攀渀最琀栀 ⬀ 猀挀漀猀⤀ ⨀ 猀椀渀⠀最椀瘀攀渀开愀渀最氀攀⤀ ਀ऀऀऀ渀攀眀开愀渀最氀攀 㴀 渀攀眀开愀渀最氀攀 ⬀ ⠀㤀 ⴀ ⠀挀漀猀开爀攀昀攀爀攀渀挀攀开愀渀最氀攀 ⴀ 最椀瘀攀渀开愀渀最氀攀⤀⤀ ⨀ ㈀⤀ ਀ऀऀ攀氀猀攀 ਀ऀऀऀ砀开氀攀渀最琀栀  ㈀ 㴀 ⠀琀愀戀氀攀开礀开氀攀渀最琀栀 ⬀ 猀猀椀渀⤀ ⨀ 挀漀猀⠀最椀瘀攀渀开愀渀最氀攀⤀ y_length002 = (table_y_length + ssin) * sin(given_angle) ਀ new_angle = new_angle + (cos_reference_angle - given_angle) * 2਀           ਀ ਀ ਀ ਀ ਀ If use = 2 //this calculates if it hit the x distance of table first਀ऀ猀挀漀猀 㴀 ⠀挀漀猀⠀挀漀猀开爀攀昀攀爀攀渀挀攀开愀渀最氀攀⤀ ⴀ 挀漀猀⠀最椀瘀攀渀开愀渀最氀攀⤀⤀⼀ 猀椀渀⠀最椀瘀攀渀开愀渀最氀攀⤀ ⨀ 爀攀昀攀爀攀渀挀攀开氀攀渀最琀栀 ਀ऀऀ椀昀 砀开氀攀渀最琀栀 ⬀ 猀挀漀猀 ⨀ 猀椀渀⠀最椀瘀攀渀开愀渀最氀攀⤀ 㸀 琀愀戀氀攀开礀开氀攀渀最琀栀 ਀                              猀猀椀渀 㴀 ⠀猀椀渀⠀猀椀渀开爀攀昀攀爀攀渀挀攀开愀渀最氀攀⤀ ⴀ 猀椀渀⠀最椀瘀攀渀开愀渀最氀攀⤀⤀⼀猀椀渀⠀最椀瘀攀渀开愀渀最氀攀 ⨀ table_y_length਀ x_length002 = (table_y_length + scos) * cos(given_angle)਀ऀऀऀ礀开氀攀渀最琀栀  ㈀ 㴀 ⠀琀愀戀氀攀开礀开氀攀渀最琀栀 ⬀ 猀挀漀猀⤀ ⨀ 猀椀渀⠀最椀瘀攀渀开愀渀最氀攀⤀ ਀ऀऀऀ渀攀眀开愀渀最氀攀 㴀 渀攀眀开愀渀最氀攀 ⬀ ⠀㤀 ⴀ ⠀挀漀猀开爀攀昀攀爀攀渀挀攀开愀渀最氀攀 ⴀ 最椀瘀攀渀开愀渀最氀攀⤀⤀ ⨀ ㈀⤀ else਀ऀऀऀ x_length002 = (table_y_length + ssin) * cos(given_angle)਀ऀऀऀ礀开氀攀渀最琀栀  ㈀ 㴀 ⠀琀愀戀氀攀开礀开氀攀渀最琀栀 ⬀ 猀猀椀渀⤀ ⨀ 猀椀渀⠀最椀瘀攀渀开愀渀最氀攀⤀ऀ ਀                                                                      ऀऀऀ渀攀眀开愀渀最氀攀 㴀 渀攀眀开愀渀最氀攀 ⬀ ⠀挀漀猀开爀攀昀攀爀攀渀挀攀开愀渀最氀攀 ⴀ 最椀瘀攀渀开愀渀最氀攀⤀ ⨀ ㈀     ਀ ਀ ਀ ਀圀栀椀氀攀 ⠀⠀礀开氀攀渀最琀栀 ⴀ 最椀瘀攀渀开礀开氀攀渀最琀栀⤀ ⼀ ⠀砀开氀攀渀最琀栀 ⴀ 最椀瘀攀渀开砀开氀攀渀最琀栀⤀⤀ 椀猀 渀漀琀 攀焀甀愀氀 琀漀  ((y_lenght - y_length002) / (x_length - x_length002))਀ ਀ If use = 1 //this calculates if it hit the y distance of table first਀ऀ猀猀椀渀 㴀 ⠀猀椀渀⠀猀椀渀开爀攀昀攀爀攀渀挀攀开愀渀最氀攀⤀ ⴀ 猀椀渀⠀最椀瘀攀渀开愀渀最氀攀⤀⤀⼀ 猀椀渀⠀最椀瘀攀渀开愀渀最氀攀⤀ ⨀ 爀攀昀攀爀攀渀挀攀开氀攀渀最琀栀 ਀ऀऀ椀昀 礀开氀攀渀最琀栀 ⬀ 猀猀椀渀 ⨀ 挀漀猀⠀最椀瘀攀渀开愀渀最氀攀⤀ 㸀 琀愀戀氀攀开砀开氀攀渀最琀栀 ਀                              猀挀漀猀 㴀 ⠀挀漀猀⠀挀漀猀开爀攀昀攀爀攀渀挀攀开愀渀最氀攀⤀ ⴀ 挀漀猀⠀最椀瘀攀渀开愀渀最氀攀⤀⤀⼀挀漀猀⠀最椀瘀攀渀开愀渀最氀攀 ⨀ table_x_length਀ x_length003 = (table_x_length + scos) * cos(given_angle)਀ऀऀऀ礀开氀攀渀最琀栀  ㌀ 㴀 ⠀琀愀戀氀攀开砀开氀攀渀最琀栀 ⬀ 猀挀漀猀⤀ ⨀ 猀椀渀⠀最椀瘀攀渀开愀渀最氀攀⤀ ਀ऀऀऀ渀攀眀开愀渀最氀攀 㴀 渀攀眀开愀渀最氀攀 ⬀ ⠀㤀 ⴀ ⠀挀漀猀开爀攀昀攀爀攀渀挀攀开愀渀最氀攀 ⴀ 最椀瘀攀渀开愀渀最氀攀⤀⤀ ⨀ ㈀⤀ ਀ऀऀ攀氀猀攀 ਀ऀऀऀ砀开氀攀渀最琀栀  ㌀ 㴀 ⠀琀愀戀氀攀开礀开氀攀渀最琀栀 ⬀ 猀猀椀渀⤀ ⨀ 挀漀猀⠀最椀瘀攀渀开愀渀最氀攀⤀ y_length003 = (table_y_length + ssin) * sin(given_angle) ਀ new_angle = new_angle + (cos_reference_angle - given_angle) * 2 ਀ ਀ ਀ ਀ ਀ ਀                    ऀ䤀昀 甀猀攀 㴀 ㈀         ⼀⼀琀栀椀猀 挀愀氀挀甀氀愀琀攀猀 椀昀 椀琀 栀椀琀 琀栀攀 砀 搀椀猀琀愀渀挀攀 漀昀 琀愀戀氀攀 昀椀爀猀琀 scos = (cos(cos_reference_angle) - cos(given_angle))/ sin(given_angle) *਀          爀攀昀攀爀攀渀挀攀开氀攀渀最琀栀 ਀ऀऀ椀昀 砀开氀攀渀最琀栀 ⬀ 猀挀漀猀 ⨀ 猀椀渀⠀最椀瘀攀渀开愀渀最氀攀⤀ 㸀 琀愀戀氀攀开礀开氀攀渀最琀栀 ਀                              猀猀椀渀 㴀 ⠀猀椀渀⠀猀椀渀开爀攀昀攀爀攀渀挀攀开愀渀最氀攀⤀ ⴀ 猀椀渀⠀最椀瘀攀渀开愀渀最氀攀⤀⤀⼀猀椀渀⠀最椀瘀攀渀开愀渀最氀攀 ⨀ table_y_length਀ x_length003 = (table_y_length + scos) * cos(given_angle)਀ऀऀऀ礀开氀攀渀最琀栀  ㌀ 㴀 ⠀琀愀戀氀攀开礀开氀攀渀最琀栀 ⬀ 猀挀漀猀⤀ ⨀ 猀椀渀⠀最椀瘀攀渀开愀渀最氀攀⤀ ਀ऀऀऀ渀攀眀开愀渀最氀攀 㴀 渀攀眀开愀渀最氀攀 ⬀ ⠀㤀 ⴀ ⠀挀漀猀开爀攀昀攀爀攀渀挀攀开愀渀最氀攀 ⴀ 最椀瘀攀渀开愀渀最氀攀⤀⤀ ⨀ ㈀⤀ else਀ऀऀऀ x_length003 = (table_y_length + ssin) * cos(given_angle)਀ऀऀऀ礀开氀攀渀最琀栀  ㌀ 㴀 ⠀琀愀戀氀攀开礀开氀攀渀最琀栀 ⬀ 猀猀椀渀⤀ ⨀ 猀椀渀⠀最椀瘀攀渀开愀渀最氀攀⤀ऀ ਀                                                                      ऀऀऀ渀攀眀开愀渀最氀攀 㴀 渀攀眀开愀渀最氀攀 ⬀ ⠀挀漀猀开爀攀昀攀爀攀渀挀攀开愀渀最氀攀 ⴀ 最椀瘀攀渀开愀渀最氀攀⤀ ⨀ ㈀     ਀ ਀砀开氀攀渀最琀栀 㴀 砀开氀攀渀最琀栀  ㈀ y_length = y_length002਀砀开氀攀渀最琀栀  ㈀ 㴀 砀开氀攀渀最琀栀  ㌀ y_length002 = y_length003 ਀