Форум: Форум C++Разное
Новые темы: 00
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: не могу справиться с формулой
 
 автор: Фитч   (07.03.2007 в 19:50)   письмо автору
 
 

Суть: есть матрица 20*20 и есть область с координатами. Начало координат - центр области, координа ты по x и y в диапазоне от -1 до 1, направлены как положено (у снизу вверх, х влева направо).
Задача: перевести координаты в системе в индексы матрицы, если [0.05;0.05] - это [0;0] и тд.
Сам пробовал, но что-то не получается...Помогите, буду очень благодарен!

  Ответить  
 
 автор: ddhvvn   (07.03.2007 в 20:31)   письмо автору
 
   для: Фитч   (07.03.2007 в 19:50)
 

Ну? Если матрица 20x20 и диапазон [1;-1], то значит длина=ширина одной клетки=1/10=0,1
Делите координаты на 0.1, учитывая знаки, с округлением и получаете клетку!

P.S.: вы же сказали "Начало координат - центр области", если так, то [0.05;0.05] - это не [0;0], а [11;11] ;-))) (но это если сами клетки нумеруются как и положено слева сверху. Может у Вас клетки тоже нумеруются из центра?)

P.P.S: надеюсь сильно не запудрил мозги ;-D

  Ответить  
 
 автор: Фитч   (08.03.2007 в 18:20)   письмо автору
 
   для: ddhvvn   (07.03.2007 в 20:31)
 

> P.P.S: надеюсь сильно не запудрил мозги ;-D

Нет, наоборот, указали на мои же ошибки! Прошу прощения - после долгих раздумий о матрице голова не варит)))

> Делите координаты на 0.1, учитывая знаки, с округлением и получаете клетку!

Вот до этого я и додумался, а точную формулу что-то вывести не получается! Думал, что с этим-то мне и помогут.

ЗЫ:
Про [0.05;0.05] - это вы правы, я не то написал((

  Ответить  
 
 автор: ddhvvn   (08.03.2007 в 18:29)   письмо автору
 
   для: Фитч   (08.03.2007 в 18:20)
 

Я бы Вам подсказал формулу, но что-то подзабросил c++ и за 2 месяца забыл как наз-ся функция округления с уменьшением (если она вообще есть) ;-)

  Ответить  
 
 автор: Фитч   (08.03.2007 в 19:44)   письмо автору
 
   для: ddhvvn   (08.03.2007 в 18:29)
 

она называется floor()
А еще есть ceil() - с увеличением

Если вам не удобен с++ - напишите, если хотите, на другом языке - тут математический вопрос

  Ответить  
 
 автор: ddhvvn   (08.03.2007 в 20:16)   письмо автору
 
   для: Фитч   (08.03.2007 в 19:44)
 

Короче принцип такой:
- ячейка по горизонтали = floor(координата x / 0,1) - 10
- ячейка по вертикали = floor(координата y / 0,1) - 10

Тебе это нужно было?

  Ответить  
 
 автор: Trianon   (09.03.2007 в 09:30)   письмо автору
 
   для: ddhvvn   (08.03.2007 в 20:16)
 

+10
в смысле - не минус, а плюс десять.

  Ответить  
 
 автор: Фитч   (09.03.2007 в 17:14)   письмо автору
 
   для: Trianon   (09.03.2007 в 09:30)
 

Да, большое спасибо!

  Ответить  
 
 автор: ddhvvn   (09.03.2007 в 18:32)   письмо автору
 
   для: Trianon   (09.03.2007 в 09:30)
 

Ошибся...

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования