Python

Python Решение задачи на нахождение центра шахматной клетки.

Задача 3. Точность и аккуратность

Робот из задачи “Компьютерное зрение” правильно определяет на какой клетке стоят фигуры. Но вот беда, часто по вине соперника-человека фигуры стоят на доске не ровно по центру клетки, а со смещением. Если во время игры такое смещение станет слишком велико, то станет непонятно в какой клетке стояла фигура. Чтобы избежать этой ситуации нужно чтобы робот поправлял фигуры на доске, выставляя их по центру клетки. Модифицируйте программу “Компьютерное зрение” так, чтобы она выдавала не только номера клетки, в которой находится фигура но и две вещественных поправки: на сколько нужно подвинуть фигуру по горизонтали и вертикали для того чтобы она оказалась по центру своей клетки.

Пример:

Введите местоположение фигуры

По горизонтали: 0.731

По вертикали: 0.167

Фигура находится в клетке (7, 1)

Поправьте положение фигуры на (0.019, -0.017)
Поскольку координаты клетки программа уже определяет, то остается найти лишь координаты центра этой клетки и разность с текущим положением фигуры.

Раз клетка 10х10 см, а все в метрах, то ее размер 0.1х0.1 м.
Центр клетки ищем как сумму координат клетки и 0.05 (половина размера).

#координаты центра клетки
x_cell = x_cell+ 0.05
y_cell = y_cell + 0.05

#найдем поправку движения
x = x_cell - x
y = y_cell - y

Эти строки после основной программы.
Жалгас /-/-/-/-/-/-/-/-/-/-/-/-/
Жалгас /-/-/-/-/-/-/-/-/-/-/-/-/
4 210
Лучший ответ
Галимжан Масалимов Тоже заинтересовала задача, 2 часа ломаю голову, Ваш вариант не сходится с примером:
Введите местоположение фигуры
По горизонтали: 0.731
По вертикали: 0.167
Фигура находится в клетке (7, 1)
Поправьте положение фигуры на (0.019, -0.017)
КАК ОНИ ПРИХОДЯТ К ТАКИМ КООРДИНАТАМ?
Галимжан Масалимов Там наверно надо понять в плюс или в минус корректировать
Галимжан Масалимов Да, так сходится!)
Ренат Молдабаев Мне очень не понравилось в решении умножение на 1000 и деление, мне кажется так лучше
x = float(input('Расположение по горизонтали: '))
y = float(input('Расположение по вертикали: '))
print()
x_cell = int(x * 10)
y_cell = int(y * 10)
if (x_cell > 10 or x_cell < 0 and y_cell > 10 or y_cell < 0):
print('Клетки с такой координатой не существует')
else:
print('Фигура находится в клетке: ', x_cell, y_cell)
print()
x_cell = (x_cell/10 + 0.05)
y_cell = (y_cell/10 + 0.05)

x = x_cell - x
y = y_cell - y

print('Сдвиг по х =', round(x, 3), 'Сдвиг по y =', round(y, 3))
Чтобы модифицировать программу “Компьютерное зрение”
нужно чтобы ты выложил текст этой программы)
Стас Лященко в дополнении к задаче есть сама задача "Компьютерное зрение" и её решение.
Робота можно обыграть?
**
**abdi** ******
2 719
.
Russell ^^^^
Russell ^^^^
164
print('Input the figure place:')
x = float(input('Horizontally: '))
y = float(input('Vertically: '))

x1 = 0.05
y1 = 0.05

while True:
if 0 <= x < 1 and 0 <= y < 1:
xSquare = int(x * 10)
ySquare = int(y * 10)
print('The figure on the square: (' + str(xSquare) + ',', str(ySquare) + ')')
xCenter = (xSquare / 10) + x1
yCenter = (ySquare / 10) + y1
xCorrect = xCenter - x
yCorrect = yCenter - y
print('Correct the position of the figure by (' + str(round(xCorrect, 3)) +',', str(round(yCorrect, 3)) + ')')
x = float(input('Horizontally: '))
y = float(input('Vertically: '))
else:
print('Coordinate does not exist')
x = float(input('Horizontally: '))
y = float(input('Vertically: '))