Задача 3. Точность и аккуратность
Робот из задачи “Компьютерное зрение” правильно определяет на какой клетке стоят фигуры. Но вот беда, часто по вине соперника-человека фигуры стоят на доске не ровно по центру клетки, а со смещением. Если во время игры такое смещение станет слишком велико, то станет непонятно в какой клетке стояла фигура. Чтобы избежать этой ситуации нужно чтобы робот поправлял фигуры на доске, выставляя их по центру клетки. Модифицируйте программу “Компьютерное зрение” так, чтобы она выдавала не только номера клетки, в которой находится фигура но и две вещественных поправки: на сколько нужно подвинуть фигуру по горизонтали и вертикали для того чтобы она оказалась по центру своей клетки.
Пример:
Введите местоположение фигуры
По горизонтали: 0.731
По вертикали: 0.167
Фигура находится в клетке (7, 1)
Поправьте положение фигуры на (0.019, -0.017)
Python
Python Решение задачи на нахождение центра шахматной клетки.
Поскольку координаты клетки программа уже определяет, то остается найти лишь координаты центра этой клетки и разность с текущим положением фигуры.
Раз клетка 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
Эти строки после основной программы.
Раз клетка 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
Эти строки после основной программы.
Чтобы модифицировать программу “Компьютерное зрение”
нужно чтобы ты выложил текст этой программы)
нужно чтобы ты выложил текст этой программы)
Стас Лященко
в дополнении к задаче есть сама задача "Компьютерное зрение" и её решение.
Робота можно обыграть?

.
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: '))
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: '))
Похожие вопросы
- Python, решение задач на питоне
- Решение задач по python
- Python. Високосный год. Решение задач
- Решение задачи по программированию (желательно питон) Сложность O(квадрат(n))
- Задача Python! Срочно! Задача: Каждому минимуму свой максимум!
- Математика и решения задачи
- Python. Решение без функции def, словарей и списков
- Питон Тьютор, решение задачи с объяснением
- Подскажите ресурс\книги с примерами по высшей математике и их решений на языке Python
- Как научиться решать задачи на деление и остаток в Python? Не могу понять принцип решения. Примеры задач:
Введите местоположение фигуры
По горизонтали: 0.731
По вертикали: 0.167
Фигура находится в клетке (7, 1)
Поправьте положение фигуры на (0.019, -0.017)
КАК ОНИ ПРИХОДЯТ К ТАКИМ КООРДИНАТАМ?
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))