User-14705882 Ответов: 2

Координаты к номеру коробки сетки


Допустим, у меня есть какая-то сетка, которая выглядит вот так
 _ _ _ _ _ _ _ _ _ 
|     |     |     |
|  0  |  1  |  2  |
|_ _ _|_ _ _|_ _ _| 
|     |     |     |
|  3  |  4  |  5  |
|_ _ _|_ _ _|_ _ _| 
|     |     |     |
|  6  |  7  |  8  |
|_ _ _|_ _ _|_ _ _| 

rows 34      length in mm = 11400mm 

columns 20   length in mm = 7450mm



Как мне найти ячейку№, если я знаю только координаты x-y в длинах.
Например

X	    Y

8663	3224


is принадлежит той ячейке, которой нет в сетке.

Что я уже пробовал:

A=номер сетки
N= количество столбцов
C= количество строк

A = (R*N) + C


Это работает, когда координаты находятся внутри (0,0),(0,1)..... форма

2 Ответов

Рейтинг:
1

Patrice T

Цитата:
Координаты к номеру коробки сетки

Это не проблема программирования, это проблема математики.
Вам нужно найти решение, и для этого вам не нужен компьютер, даже если он может помочь.
Все, что вам нужно, это лист бумаги, карандаш и ваша голова.
- Вы знаете размер поля и количество строк ans cols.
- Нет ничего сложного в том, чтобы вывести положение каждой строки и каждого столбца.
- Выводить номер строки и номер столбца из координат оттуда не сложно.
- Тогда преобразование в номер коробки тоже не сложно.

Вся проблема не очень сложна, если подходить к ней методически.
Поскольку вы не сформулировали проблему и не показали свою работу, я надеюсь, что вам нужен был только общий совет, я позволил вам решить эту проблему как практику.
[Обновление]
Цитата:
Это не дает правильных результатов

Просто посмотри, что ты сделал, твой отец. x находится вне зоны досягаемости.
X=8663
Y=3224

#Total No. columns
C=20

columnXY= (X/7450)
rowXY= (Y/11400)

и формулы неверны, вам следует еще раз взглянуть на решение 2.

Ваша проблема-это пример:
Вы знаете, что 7450 яблок стоят 20, вы хотите только 3224 яблока.
Сколько это будет стоить?

Это одна из самых простых задач, которую вам придется решить в программировании компьютера.
Если вы не можете решить эту проблему самостоятельно, вы находитесь в глубоком дерьме и должны подумать о другой работе.


User-14705882

Я попробовал последовать за ним

#Из ху координироваться в коробке нет.
X=8663
Y=3224

#Всего колонок нет
С=20

columnXY= (X/7450)
rowXY= (Y/11400)


#коробка нет. может быть рассчитан как:
boxno = columnXY + (rowXY * C)
print(math.floor(boxno))

Это не дает правильных результатов

User-14705882

извини, я имею в виду
X=3224
Y=8663

это просто опечатка.

В решении 2 Если я сделаю следующее

columnXY= ConvertToInteger(X / W)
rowXY= ConvertToInteger(Y / H)

он всегда дает ноль , так как W и H ( общая ширина и высота ) всегда больше X и Y , и если преобразовать их в целые числа, то это даст ноль

CPallini

5.

Patrice T

Спасибо.

Рейтинг:
0

0x01AA

Как уже упоминал @ppolymorphe, вычислить его не составляет большой проблемы.

Учитывая это:
Ширина поля: W
Высота поля: H
Колонки: C
Фактические координаты: X, Y

С помощью этого вы можете легко вычислить столбец и строку с помощью чего-то вроде этого:

columnXY= ConvertToInteger(X / W)
rowXY= ConvertToInteger(Y / H)

Наконец можно вычислить номер ячейки:
номер ячейки= columnXY + rowXY * C

*) ConvertToInteger
Потому что я не знаю Python вам нужно сделать это самостоятельно ;)


User-14705882

Я попробовал последовать за ним

#Из ху координироваться в коробке нет.
X=3224
Y=8663

#Всего колонок нет
С=20

columnXY= (X/7450)
rowXY= (Y/11400)


#коробка нет. может быть рассчитан как:
boxno = columnXY + (rowXY * C)
print(math.floor(boxno))

Это не дает правильных результатов

0x01AA

'W' и 'ч' одинарные ширина окна и высота, не тол ширину и высоту.

Patrice T

не то, что написано в решении.

CPallini

- Потому что я не знаю, что тебе нужно делать в одиночку. ;)"
Python "имеет" целочисленное деление ( // оператор ).
Кстати, возьми мою пятерку.

0x01AA

Большое вам спасибо за подсказку и 5.