PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (13): « 1 2 3 [4] 5 6 7 8 9 ... » В конец

> Найдено сообщений: 182
Алтенрион Отправлено: 07 Января, 2013 - 15:41:39 • Тема: Построение гистограммы по изображению(и определение пиков и провалов). • Форум: Графика в PHP

Ответов: 27
Просмотров: 9548
Так было бы идеально. А можно цифры вывести отдельно рядом с графиком примерно так :

массив пиков: х1, х2, х3, х4...;
массив провалов: х1, х2, х3, х4... ;
Алтенрион Отправлено: 07 Января, 2013 - 15:23:45 • Тема: Построение гистограммы по изображению(и определение пиков и провалов). • Форум: Графика в PHP

Ответов: 27
Просмотров: 9548
не совсем. требуется выделять вершины(точки), и прогибы(точки) и желательно выписывать их численные значения.

В случае если бы гистограмма была более сглаженной то примерно так как на рисунке. Возможно целиком столбец на котором произошел пик подъема, или провала...
Алтенрион Отправлено: 07 Января, 2013 - 14:50:18 • Тема: Построение гистограммы по изображению(и определение пиков и провалов). • Форум: Графика в PHP

Ответов: 27
Просмотров: 9548
Графики отдельные точно не стоит. Вершины пиков, и низшие точки прогибов выделить способом , который реализуем. Желательно получить значения этих вершин пиков и низших точек прогибов, Если не отметить их на графике, что мне кажется очень трудным, то хоть вынести в массив.
Алтенрион Отправлено: 07 Января, 2013 - 14:25:53 • Тема: Построение гистограммы по изображению(и определение пиков и провалов). • Форум: Графика в PHP

Ответов: 27
Просмотров: 9548
То что нужно! Уважаемый NoPaper!

Подскажите последнее: поставлено требование реализовать вывод пиков гистограммы и дна прогибов, в виде 2 списков(к примеру)

Можно ли это реализовать с помощью данной библиотеки? Имеет ли это смысл, или стоит искать иные пути обозначения пиков.?
Алтенрион Отправлено: 07 Января, 2013 - 12:18:51 • Тема: Построение гистограммы по изображению(и определение пиков и провалов). • Форум: Графика в PHP

Ответов: 27
Просмотров: 9548
Как изменить скрипт подскажите пожалуйста?При банальной замене типа 'type'=>TYPE_DIAGRAM_LINE на TYPE_DIAGRAM_STOLB не выводит график вовсе...(((
Алтенрион Отправлено: 07 Января, 2013 - 11:51:16 • Тема: Построение гистограммы по изображению(и определение пиков и провалов). • Форум: Графика в PHP

Ответов: 27
Просмотров: 9548
Ну а можете привести пример аналогов более менее быстрых для построения столбчатых гистограмм. На таковых более четко видны пики и прогибы.

Я приводил ссылку на список библиотек... Кстати приведенная вами мне тоже там есть (graph.lib.php) . Можно ли с ее помощью сделать столбчатую гистограмку?
Алтенрион Отправлено: 07 Января, 2013 - 11:37:09 • Тема: Построение гистограммы по изображению(и определение пиков и провалов). • Форум: Графика в PHP

Ответов: 27
Просмотров: 9548
Если использовать set_time_limit(0); то я думаю не страшно... ну на локальной машине - точно.
Алтенрион Отправлено: 07 Января, 2013 - 11:13:40 • Тема: Построение гистограммы по изображению(и определение пиков и провалов). • Форум: Графика в PHP

Ответов: 27
Просмотров: 9548
Скорее bar charts... более явная столбчатая гистограмма...
Алтенрион Отправлено: 07 Января, 2013 - 11:01:43 • Тема: Построение гистограммы по изображению(и определение пиков и провалов). • Форум: Графика в PHP

Ответов: 27
Просмотров: 9548
А не в курсе как использовать в данном случае pChart ?

_http://www[dot]pchart[dot]net/download


Интерфейс столбчатых гистограмм очень понравился.

И вопросик. можно каким либо образом делать отметки на особо крупных перепадах?, то есть на крупных пиках, и на ярких минимумах?
Алтенрион Отправлено: 07 Января, 2013 - 10:36:41 • Тема: Построение гистограммы по изображению(и определение пиков и провалов). • Форум: Графика в PHP

Ответов: 27
Просмотров: 9548
Можно ли эти кадры залить приложением, не могу открыть посмотреть.

И можете подсказать, по какому алгоритму их получили...
Алтенрион Отправлено: 07 Января, 2013 - 03:38:36 • Тема: Построение гистограммы по изображению(и определение пиков и провалов). • Форум: Графика в PHP

Ответов: 27
Просмотров: 9548
Суть задачи:

Веб интерфейс => загружаем изображение => передаем его на обработку скрипту.

Скрипт принимает на обработку изображение => строит гистограмму по изображению => в гистограмме выделяются пиковые точки ( минимумы и максимумы).

Выделение либо цветом, либо выводит список, или как угодно иначе.

С загрузкой кадра на сайт проблем нет. Передать его обработчику нет проблем. Создать или найти обработчик который строил бы внятную читабельную гистограмму оказалось труднее всего.


Рассматривались такие библиотеки как: 1) gd2imaging.php, но в ней гистограмма строится однородна, и не читабельная.

2) pChart, но не смог понять как создать гистограмму по изображению.

3) PHPGraphLib, не смог понять как создать гистограмму по изображению.


Была найдена подборка библиотек: http://jpgraph[dot]ru/index.php?sel=charts

Подскажите как реально реализовать данную задачу по построению гистограммы в веб интерфейсе и определить вершины и провалы ?
Алтенрион Отправлено: 06 Января, 2013 - 16:45:29 • Тема: Организация отправки почты пользователям • Форум: Работа с сетью

Ответов: 9
Просмотров: 3547
Благодарю. Тема по прежнему актуальна хоть и была отложена в сторону. Буду тестить.
Алтенрион Отправлено: 05 Января, 2013 - 17:33:57 • Тема: добавить к css3 переключателю обработку js'ом. • Форум: JavaScript & VBScript

Ответов: 7
Просмотров: 5922
Я код запускал, и разбирал. Увидел при переключении выскакивающие окна, посмотрел еще раз код и понял что эт alert делает. Повторюсь - я js знаю лишь поверхностно, и делаю упор в другие вещи, больше учу и осваиваю php.
(Добавление)
Так по идее работать не должно.

Первичный скрипт в котором включена переменная "status", включен тогда когда переменная равна false и выключен когда равна true ,

При клике должна изменяться эта переменная между true/false.

скрипт js чтобы понятнее было:


CODE (js):
скопировать код в буфер обмена
  1.  
  2.  
  3.  
  4. var snowfall = new function()
  5. {
  6.    // Объявление конфигурационного объекта
  7.    var settings = {};
  8.  
  9.    // Настройки
  10.    settings['use_images'] = true;              // Использовать ли изображения
  11.    settings['flake_symbol'] = "*";             // Символ "снежинки"
  12.    settings['flakes_dir_name'] = "snow";       // Имя папки с изображениями
  13.    settings['flake_imgs_ext'] = "gif";        // Расширения
  14.    settings['flake_types_num'] = 3;            // Количество "видов" снежинок
  15.    settings['flake_objects_num'] = 15;         // Количество "объектов" снежинок
  16.    settings['flake_symbol_color'] = 'blue';    // Цвет текстовых снежинок
  17.    settings['doctype'] = 'html';               // Ваш доктайп (если он не указан не изменяйте эту опцию).
  18.                                                // Возможные значения: xhtml || html
  19.    settings['update_positions_interval'] = 20; //Интервал обновления позиций снежинок (в миллисекундах)
  20.                                                //по умолчанию -- 40
  21.    // Константы
  22.    var snow_consts = {};
  23.    snow_consts["borderForce"] = 0.01; //Сила отталкивания от краёв; изменять именно эту константу
  24.    snow_consts["g"] = 54;
  25.    snow_consts["m"] = 0.1;
  26.    snow_consts["k"] = 0.1;
  27.    snow_consts["F"] = 20;
  28.    snow_consts["dt"] = 1;
  29.    snow_consts["mouseX"] = -1000;
  30.    snow_consts["mouseY"] = -1000;
  31.  
  32.    // Интервал для вызова метода flakes_positions
  33.    var positions;
  34.  
  35.    //Статус снегопада (идет; не идет)
  36.  
  37.  
  38.  
  39.  
  40.  
  41.    var status = false;
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.    /**
  50.     * Кэшируем изображения если они включены.
  51.     */
  52.    if (settings['use_images'])
  53.    {
  54.       var imgs = new Array();
  55.       for (var numimg = 1; numimg <= settings['flake_types_num']; numimg++)
  56.       {
  57.          imgs[numimg] = new Image();
  58.          imgs[numimg].src = settings['flakes_dir_name'] + '/' + numimg + '.' + settings['flake_imgs_ext'];
  59.       }
  60.    }
  61.  
  62.    /**
  63.     * Метод изменит настройки скрипта,
  64.     * если переданные ему настройки валидные.
  65.     */
  66.    var set_settings = function(new_settings)
  67.    {
  68.       if (new_settings)
  69.       {
  70.          if (typeof new_settings['use_images'] != 'boolean' || typeof new_settings['flake_symbol'] != 'string'
  71.              || typeof new_settings['flakes_dir_name'] != 'string' || typeof new_settings['flake_imgs_ext'] != 'string'
  72.              || typeof new_settings['flake_types_num'] != 'number' || typeof new_settings['flake_objects_num'] != 'number'
  73.              || typeof new_settings['flake_symbol_color'] != 'string' || typeof new_settings['doctype'] != 'string'
  74.              || typeof new_settings['update_positions_interval'] != 'number')
  75.          {
  76.             return false;
  77.          } else {
  78.             settings = new_settings;
  79.          }
  80.       }
  81.  
  82.       return true;
  83.    }
  84.  
  85.    /**
  86.     * Метод изменит значение переменных
  87.     * snow_consts["mouseX"] и snow_consts["mouseY"] записав в них
  88.     * координаты мыщи.
  89.     */
  90.    var mouse_Coords = function(event)
  91.    {
  92.       var event = event || window.event;
  93.       snow_consts["mouseX"] = event.clientX;
  94.       snow_consts["mouseY"] = event.clientY;
  95.    }
  96.  
  97.    document.getElementsByTagName("body")[0].onmousemove = mouse_Coords;
  98.  
  99.    /**
  100.     * Метод создает settings['flake_objects_num'] снежинок
  101.     * задавая им все необходимые свойства.
  102.     */
  103.    var create_flakes = function()
  104.    {
  105.       var clientWidth = document.getElementsByTagName("body")[0].clientWidth;
  106.       var clientHeight = document.getElementsByTagName("body")[0].clientHeight;
  107.       var body_element = document.getElementsByTagName("body")[0];
  108.       for (var id=1; id<=settings['flake_objects_num']; id++) /* На каждой итерации цикла создается снежинка */
  109.       {
  110.          var flake_tag = 0;
  111.          if (settings['use_images']) // Выбор тега снежинки в зависимсти от опции settings['use_images']
  112.          {
  113.             flake_tag = 'img';
  114.          } else {
  115.             flake_tag = 'div';
  116.          }
  117.          flake_obj = document.createElement(flake_tag); /* Задаются все необходимые свойства. */
  118.          if (settings['use_images']) /* Создание объекта снежинки в зависимости от опции settings['use_images'] */
  119.          {
  120.             var random_num = Math.floor(Math.random() * settings['flake_types_num']) + 1;
  121.             flake_obj.src = imgs[random_num].src;
  122.             flake_obj.alt = "flake" + id;
  123.          } else {
  124.             flake_obj.appendChild(document.createTextNode(settings['flake_symbol']));
  125.          }
  126.          flake_obj.id = 'flake'+id;
  127.          flake_obj.style.color = settings['flake_symbol_color'];
  128.          var flake_obj = body_element.appendChild(flake_obj); /* Вставляем нашу снежинки в тег body */
  129.          flake_obj.halfWidth = flake_obj.clientWidth/2;  /* Радиус снежинки */
  130.          flake_obj.halfHeight = flake_obj.clientHeight/2;/* Высота снежинки */
  131.          flake_obj.style.position = "absolute";
  132.          flake_obj.left = Math.random() * (clientWidth - flake_obj.halfWidth); /* Два специальных свойства с целью работы скорости снежинок, так как style.left и top может хранить только целые значения. */
  133.          flake_obj.top = Math.random() * (clientHeight - flake_obj.halfHeight - snow_consts["g"]);
  134.          flake_obj.amplitude = 1 + Math.random(); /* Отклонение от оси */
  135.          flake_obj.speed = 1 + Math.random() * 0.2; /* Скорость падения */
  136.          flake_obj.tempo = 2*Math.PI/(80 + 80 * Math.random()); /* Скорость покачивания */
  137.          flake_obj.speedX = 0; /* В этих свойствах ранится разгон */
  138.          flake_obj.speedY = 0;
  139.       }
  140.    }
  141.  
  142.    var delete_flakes = function()
  143.    {
  144.       var body_element = document.getElementsByTagName("body")[0];
  145.       for (var id=1; id<=settings['flake_objects_num']; id++)
  146.       {
  147.          var flake_obj = document.getElementById('flake' + id);
  148.          body_element.removeChild(flake_obj);
  149.       }
  150.    }
  151.  
  152.    var flakes_positions = function()
  153.    {
  154.       var clientWidth = document.getElementsByTagName("body")[0].clientWidth; /* Переменные для удобства */
  155.       var clientHeight = document.getElementsByTagName("body")[0].clientHeight;
  156.       var scrollLeft = document.getElementsByTagName("body")[0].scrollLeft;
  157.       if (settings['doctype'] === 'html')
  158.       {
  159.          var scrollTop = document.getElementsByTagName("body")[0].scrollTop;
  160.       } else {
  161.          var scrollTop = document.documentElement.scrollTop;
  162.       }
  163.       for (var i=1; i<=settings['flake_objects_num']; i++)                        /* Изменение положения снежинки на итерации цикла */
  164.       {
  165.          var flake_obj = document.getElementById('flake'+i); /* Получаем объект снежинки */
  166.          flake_obj.left += (flake_obj.speedX + flake_obj.amplitude*Math.cos(flake_obj.top*flake_obj.tempo))*snow_consts["dt"];
  167.          /* Выше! Это свойство создано с целью работы разных скоростей снежинок так как style.left может хранить только
  168.          цельные значения. */
  169.          flake_obj.top += (flake_obj.speedY + flake_obj.speed)*snow_consts["dt"];
  170.          /* Выше! Это свойство создано с целью работы разных скоростей снежинок так как style.left может хранить только
  171.          цельные значения. */
  172.          if (flake_obj.top < - snow_consts["g"]) /* Проверка не вышла ли снежинка за край экрана */
  173.          {
  174.             flake_obj.top = -snow_consts["g"];
  175.             flake_obj.speedX = flake_obj.speedY = 0; /* Обнуляем разгон! */
  176.          } else {
  177.             if (flake_obj.top > (clientHeight - snow_consts["g"])) /* Снежинка вышла за край изменяем положение. */
  178.             {
  179.                flake_obj.style.top = scrollTop;
  180.                flake_obj.top = - snow_consts["g"];
  181.                flake_obj.speedX = flake_obj.speedY = 0; /* Обнуляем разгон! */
  182.                flake_obj.style.left = Math.floor(flake_obj.left = Math.random() * (clientWidth - flake_obj.halfWidth)) + scrollLeft;
  183.             }
  184.          }
  185.          var deltaX = flake_obj.left + flake_obj.halfWidth - snow_consts["mouseX"];            /* Начинаем вычислять left и top координаты в зависимости от положения мыщи */
  186.          var deltaY = flake_obj.top + flake_obj.halfHeight/2 - snow_consts["mouseY"];
  187.          var Fx_old = snow_consts["F"] * deltaX/(deltaX*deltaX + deltaY*deltaY) - snow_consts["k"]*flake_obj.speedX;
  188.          var Fx = Fx_old + snow_consts["borderForce"] * (Math.max(snow_consts["g"] - flake_obj.left, 0) - Math.max(flake_obj.left - clientWidth + 2*snow_consts["g"], 0));
  189.          var Fy = snow_consts["F"] * deltaY/(deltaX*deltaX + deltaY*deltaY) - snow_consts["k"]*flake_obj.speedY;
  190.          flake_obj.speedX += Fx/snow_consts["m"]*snow_consts["dt"];
  191.          flake_obj.speedY += Fy/snow_consts["m"]*snow_consts["dt"];
  192.          flake_obj.style.left = scrollLeft + Math.round(flake_obj.left) + 'px'; /* Устанавливаем координаты! */
  193.          flake_obj.style.top = scrollTop + Math.round(flake_obj.top) + 'px';
  194.       }
  195.    }
  196.  
  197.    this.start = function(new_settings)
  198.    {
  199.       if (status)
  200.       {
  201.          this.stop();
  202.       }
  203.  
  204.       //Вызовем метод сет сеттингс, если настройки переданы в качестве аргумента методу start
  205.       //и они валидные -- то он изменит настройки скрипта.
  206.       if (!set_settings(new_settings))
  207.       {
  208.          throw new Error('Настройки, переданные методу snowfall::start() не валидные!');
  209.       }
  210.  
  211.       create_flakes(); /* Создаем снежинки */
  212.       positions = setInterval(flakes_positions, settings['update_positions_interval']); /* Запускаем метод flakes_positions каждые 40 миллисекунд */
  213.  
  214.       status = true;
  215.    }
  216.  
  217.    this.stop = function()
  218.    {
  219.       if (!status) return;
  220.  
  221.       clearInterval(positions);
  222.       delete_flakes();
  223.  
  224.       status = false;
  225.    }
  226. }
  227.  
  228.  
  229. snowfall.start();
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
Алтенрион Отправлено: 05 Января, 2013 - 00:43:24 • Тема: добавить к css3 переключателю обработку js'ом. • Форум: JavaScript & VBScript

Ответов: 7
Просмотров: 5922
а как это привязать к переменной var status?

Есть функция, :

var fall = new function()
{
...

var status = false;
...
}

как к ней это прописать? подскажите пожалуйста.
Алтенрион Отправлено: 04 Января, 2013 - 11:00:52 • Тема: добавить к css3 переключателю обработку js'ом. • Форум: JavaScript & VBScript

Ответов: 7
Просмотров: 5922
Помогите пожалуйста, сделать чтобы при 1 клике функция вернула true, при следующем клике вернула false. Могу код js выложить .. помогите плиз.

Страниц (13): « 1 2 3 [4] 5 6 7 8 9 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB