koala написав:Розгалуження - це конструкція if-else. На випадок, коли там друга координата довша.
Насправді я тільки зараз почав трохи розуміти ваш алгоритм, але не весь. У вас якось дуже страшно обчислюється y. Я зрозумів все так.
Спочатку ми обчислюємо довжини між компонентами координат. Це потрібно для того, аби знати, в якій площині рухатись, в горизонтальній чи в вертикальній. Наприклад, (2;3) i (2;5), очевидно, що змінювати треба другу компоненту, адже |2-2|<|3-5| і це рух по вертикалі, якщо друга компонента відповідає за вертикаль. Далі ми маємо визначитись, в яку саме сторону будемо рухатись, адже вертикаль складається з руху вниз, та руху вгору. Для цього ми порівнюємо відповідну компоненту першої координати з компонентою (чомусь згадав про кампот) другої координати. Тобто 3<5, і далі дивимось, якщо 3 > ніж 5, і 3 відноситься до першої координати, а 5 до другої, то очевидно, що нам потрібно рухатись в сторону другої координати, а для цього треба додати до 3 одиницю. Якщо ж 3>5, то потрібно віднімати (-1). Далі ми додаємо відповідну цифру до відповідної компоненти і отримуємо нову координату, котра приймається за поточку. І все починається заново.
Приклад.
Нехай рухаємося з (2;2) в (3;6).
Перевіряємо, відстань між якими компонентами більша. |2-3|?|2-6|=1<4
Тобто це друга компонента, на цій картинці перша компонента - це рух по вертикалі, а друга - по горизонталі.
Далі ми маємо зрозуміти, в яку сторону рухатись. Порівнюємо 2 та 6.
2<6 одже нам треба дійти до 6, для цього треба додавати 1.
Додаємо 1 до другої компоненти поточної координати.
Нова координата (2;3).
Перевіряємо відстань. |2-3|?|3-6|=1<3
Одже рухаємось знову по горизонталі (не дивіться на картинку).
Визначаємось з стороною.
3>6 - додаємо.
Нова координата (2;4)
Визначаємо площину. |2-3|?|4-6|=1<2
Знову горизонталь. Визначаємо сторону.
4<6 тому додаємо.
Нова координата (2;5)
Визначаємось з площиною. |2-3|?|5-6|=1==1
Ось тут треба ловити подібні випадки. Та змінювати обидві координати. Тому потрібно й шукати напрямок для зміни обох координат.
2<3 для першої координати, це означає, що треба додати 1.
5<6 для другої координати, це означає, що теж треба додати 1.
Нова координата (3;6).
Визначаємо площину. |3-3|?|6-6|=0==0
Це теж можна або відловлювати перевіряючи отак if(0+0==0) то кінець, але там ми підставляємо оті отримані різниці. Або можна на кожній ітерації шукати відстань між координатами, і якщо вона ==0, то кінець.
Як бачите, ми побудували шлях, але він дурний, як моя шльондровата сусідка-блондинка, котра дуже тупа та не гарна, але гадає, що гарна.
Нам потрібно було б зробити шлях "симетричним", але хід по діагоналі десь в середині не підійде, тому що у нас не парна кількість кроків тоді буде. Я гадаю, що шлях можна було б зробити ось таким.
Але як тоді нам визначатись, чи робити ось такий хід, чи робити хід по діагоналі?