Категории пазлов

Животные Транспорт
Картины и рисунки Портреты
Компьютерная графика Люди
Быт Юмор
Эротика Пейзаж
Постройки Разное
Растения Для маленьких
Аниме Кино и мультфильмы
Игры Микро
Призовые Коллаж
Великая куча! Катeгория 0
Мегасложные!
Статьи!

Новые сообщения на форуме


Ответа дан 30.11.2024 18:20:03 Глюки, ошибки, перебои в работе
Ответа дан 26.11.2024 17:22:05 Сбор денег на работу сайта
Ответа дан 07.10.2024 2:32:37 проблема со сбором пазлов
Ответа дан 07.09.2024 12:59:02 Что делать? Ошибки и прочее.
Ответа дан 03.04.2024 19:01:00 Есть контакт
Ответа дан 01.04.2024 19:44:01 Как теперь можно добавить новые картинки?
Ответа дан 31.03.2024 17:07:02 И мы снова в 2015
Ответа дан 29.03.2024 15:11:01 Картинки не открываются
Ответа дан 03.12.2015 9:03:43 Остановка сайта
Ответа дан 02.12.2015 13:34:00 Срочно помогите!!!

Пазлы: Форум

 
Форум Вопросы связанные с работой сайта puzz
Тема от Посмотреть профайл Пупсик

Я вас люблю!
1167 Отв.
Глюки, ошибки, перебои в работе
Сообщайте обо всем! Время когда была ошибка на какой странице и прочее.

Цитировать выделенное



   _______________________________
0

 Посмотреть профайл slavko11

Юзер
185 Отв.
можно еще проще оставить $cellheight и $cellwidth те, которые ввел пользователь
вычислить только количество строк и столбцов, желательно с функцией round. Умножаем количество строк/столбцов на высоту/ширину элементпа, получаем новый размер рисунка и функцией imagecopyresized преобразуем исходную картинку в картинку с размерами, которые будут делиться нацело на размеры элемента

10.11.2010 15:21:02

Цитировать выделенное




   _______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
 Посмотреть профайл slavko11

Юзер
185 Отв.
еще проще будет так:
берем число 4 как исходное.
выполняем следующие опрации:
20/4=5
20/5=4
Так вот, последняя четверка в точности оказывается не равна первой. Так зачем нам вторая, если без проблем можно взять первую?

10.11.2010 14:13:04

Цитировать выделенное




   _______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
 Посмотреть профайл slavko11

Юзер
185 Отв.
объясню попроще
высота картинки - 1694
высота элемента - 65
что делает скрипт:
вычисляет количество строк: 1694/65=26.06153846153846.....
затем вычисляет новый размер элемента, округлив предыдущий результат до меньшнго целого, то есть до 26:
1694/26=65.15384615.....
затем обратно вычисляется количество строк:1694/65.15384615.....
должны получить ровно 26. На калькуляторе вы и получите 26. В данном случае компьютер посчитал результат как 25.99999999999999999999999, и если вывести это число на экран, оно выведется как 26. Но если его округлить до меньшнго целого, что и делает скрипт, получаем 25. Вместо 26. Одна строка пропала.

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

10.11.2010 14:06:02

Цитировать выделенное




   _______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
 Посмотреть профайл slavko11

Юзер
185 Отв.
Уважаемая Vredina , в данном моем случае высота указана 64, а не 65. Проэкспериментировав, оказалось, что обрезать нижний ряд будет при значениях высоты элемента 63,64,65,66,67. При меньших или больших не будет.
Но дело не в этом. Причину автору кода я указал. Она возникает в некоторых случаях при вычислениях с плавающей точкой : http://www.mysql.ru/docs/man/Problems_with_float.html

В данном случае проблема вызвана искусственно.
Применив вместо конструкции
$rows1 = $height/$cellheight;
$cols1 = $width/$cellwidth;

$cellheight=$height/floor($rows1);
$cellwidth=$width/floor($cols1);

$rows = floor($height/$cellheight);
$cols = floor($width/$cellwidth);

следующую:

$rows = floor($height/$cellheight);
$cols = floor($width/$cellwidth);

$cellheight=$height/$rows;
$cellwidth=$width/$cols);


мы решаем проблему полностью. А еще лучше вместо floor использовать round.

Получив новые значения размера элементов и количества строк/столбцов, получаем размер новой картинки, которую и получаем ресайзингом с помощью функции imagecopyresized, а дальше дело техники. И никакой проблемы с несовпадением не возникает.

10.11.2010 13:29:05

Цитировать выделенное




   _______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
 Посмотреть профайл Vredina

Модер
545 Отв.
Укажите мне хоть один паззл на первой странице великой кучи, где есть хоть одно целочисленное деление



slavko11 , дело в том что никогда пазл не делится на тот размер который указывается.. допустим я указываю 60 на 60, а уж програма делит и 63 на 61 и тд... но ряды не умыкаются.. а вот при указании 65 на 65 частенько, не всехда ряды-то и пропадают... может зависит ещо и от размера самой картинки?

10.11.2010 12:33:04

Цитировать выделенное




   _______________________________
Против глупости сами Боги бороться бессильны
 Посмотреть профайл slavko11

Юзер
185 Отв.
Не могли бы Вы в предосмотре рядом с количеством элементов вывести размер элемента?

10.11.2010 12:22:04

Цитировать выделенное




   _______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
 Посмотреть профайл slavko11

Юзер
185 Отв.
Единственная проблема - экспериментировать придется здесь, поэтому заранее прошу прощения за те картинки, с которыми буду работать.

10.11.2010 11:35:05

Цитировать выделенное




   _______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
 Посмотреть профайл slavko11

Юзер
185 Отв.
И так проведя анализ работы скрипта я пришел к выводу, что при не целочисленном делении картинки на элементы, существует два пути решения: 1. оставлять картинку целиком и тогда возникнут элементы черной подложке (как было раньше с черной рамкой) или 2. ряд будет убираться (как это происходит сейчас),

Это совершенно не так
В абсолютном большинстве паззлов целочисленного деления нет и в помине. Укажите мне хоть один паззл на первой странице великой кучи, где есть хоть одно целочисленное деление. Следовательно, у большинства пазлов должно не хватать либо строчки, либо столбца, а это не так.
Согласен, что проблема апроксимации размеров существует. Я сегодня-завтра поэкспериментирую и попытаюсь все же доказать, что я прав относительно пропадания строк и столбцов даже без наличия всего кода. И одновременно подумаю, как решается проблема корректного разбиения картинки сейчас и как это можно сделать.


10.11.2010 11:33:03

Цитировать выделенное




   _______________________________
Не всем дано быть бизнесменами. Некотрые так и помрут математиками.
 Посмотреть профайл Vredina

Модер
545 Отв.
а есть и третий вариант... делить с концом ноль)))) Рамка не нужна - слишком облегчает.. ну и кохда ряда нет обЫднооо

10.11.2010 10:44:02

Цитировать выделенное




   _______________________________
Против глупости сами Боги бороться бессильны
 Посмотреть профайл Собиратель
Юзер
33 Отв.
Я знаю что Int. И так проведя анализ работы скрипта я пришел к выводу, что при не целочисленном делении картинки на элементы, существует два пути решения: 1. оставлять картинку целиком и тогда возникнут элементы черной подложке (как было раньше с черной рамкой) или 2. ряд будет убираться (как это происходит сейчас), другого пути решения проблемы не найдено. Это происходит в результате специфики работы с изображениями по целочисленным пикселям (по другому просто не бывает).
Я прошу пользователей определиться вернуть мне полуэлементы с черными краями (надеюсь вы все еще помните что это?) или оставить все как есть.

10.11.2010 10:30:01

Цитировать выделенное



Ответить

[:)] [:oops:] [;)] [:star:] [o)] [xx(] [:D] [|)] [:errr:] [:V:] [:(] [:^:] [:x] [}:)] [:o)] [8D]
html теги: Жирный текст Курсив
Прикрепить файл: 
 
   


Всего 62 стр.   
На стр.
   <<   31  |  32  |  33  |  34  |  35  |  36  |  37  |  38  |  39  |  40  >>  Пред. стр. | След. стр. | Обновить

Лаборатория Соломонова