За последние 24 часа нас посетили 6909 программистов и 478 роботов. Сейчас ищут 130 программистов ...

Система координат

Тема в разделе "PHP для новичков", создана пользователем lemonl, 16 апр 2018.

  1. lemonl

    lemonl Активный пользователь

    С нами с:
    10 июн 2009
    Сообщения:
    124
    Симпатии:
    0
    Помогите пожалуйста стандартизировать систему координат

    Есть такой код:
    Код (Text):
    1. <?php
    2.  
    3. $min_tickPrice=1.0000;
    4. $tickStep=0.0025;
    5.  
    6. // даты для отображения снизу
    7. $date = new DateTime('2018-03-22 16:00');
    8. $date->modify("-5".' hour');
    9. for($id=0; $id<=216; $id++){
    10.     $date->modify("+1".' hour');
    11.     $DateTime[$id] = $date->format('Y-m-d H');
    12. }
    13.  
    14.  
    15.  
    16. // Output and free from memory
    17. header('Content-Type: image/jpeg');
    18. // Create a 500 x 500 image
    19. $canvas = imagecreatetruecolor(1200, 570);
    20. // Allocate color
    21. $white = imagecolorallocate($canvas, 225, 225, 225);
    22. $boldbl = imagecolorallocate($canvas, 100, 100, 100);
    23. $red = imagecolorallocate($canvas, 255, 4, 0);
    24. $green = imagecolorallocate($canvas, 0, 196, 68);
    25.  
    26. $whiteBackground = imagecolorallocate($canvas, 255, 255, 255);
    27. imagefill($canvas,0,0,$whiteBackground);
    28. // Установка толщины линий 5 пикселов
    29. imagesetthickness($canvas1, 1);
    30.  
    31.  
    32. // *** SYSTEM COORDINATES ***
    33. // by X | LINE PRICE COORDINATES
    34. for($d=0; $d<19; $d++) {
    35.     $c+=25;
    36.     $style=array($white,$white,$gray,$white,$white);
    37.     imagesetstyle($canvas,$style);
    38.     imageline($canvas,55,$c,1160,$c,IMG_COLOR_STYLED);
    39. }
    40. // by Y | LINE TIME COORDINATES
    41.  
    42.  
    43. $p=67;
    44. for($f=0; $f<9; $f++) {
    45.     imageline($canvas, $p, 15, $p, 485, $bbb);
    46. for($h=0; $h<24; $h++) {
    47.      imagedashedline($canvas, $p, 15, $p, 485, $white);
    48.     $p+=5;
    49. }
    50.  
    51. }
    52.  
    53. imageline($canvas, 67, 15, 67, 485, $red);
    54. //imageline($canvas, 72, 15, 72, 485, $red);
    55.  
    56.  
    57.  
    58. // by Y | TEXT PRICE COORDINATES
    59. $z=468;
    60. $p=$min_tickPrice;
    61. for($n=0; $n<19; $n++) {
    62.     imagestring($canvas, 2, 12, $z, number_format($p,4), $boldbl);
    63.     $p+=$tickStep;
    64.     $z-=25;
    65. }
    66.  
    67. //imagestring($canvas, 2, 450, 510, "TIME", $boldbl);
    68. imagestring($canvas, 2, 40, 530, " Date from: ".$DateTime[0], $boldbl);
    69.  
    70. // *** END SYSTEM COORDINATES ***
    71.  
    72. imagefilledellipse($canvas, 93/*Date*/, 300/*Price*/, 6, 6, $red);
    73.  
    74. imagejpeg($canvas);
    75. imagedestroy($canvas);
    76. ?>
    Подскажите как сделать что бы imagefilledellipse($canvas, 93/*Date*/, 300/*Price*/, 6, 6, $red);
    задавать не по пикселям, а по дате и цене
     
  2. mkramer

    mkramer Суперстар

    С нами с:
    20 июн 2012
    Сообщения:
    5.931
    Симпатии:
    1.072
    Выполнить рассчёт цены деления в пикселах, умножить, сложить, разделить что надо - короче, подумать головой. imagefilledellipse понимает только пикселы,
     
  3. lemonl

    lemonl Активный пользователь

    С нами с:
    10 июн 2009
    Сообщения:
    124
    Симпатии:
    0

    Вернее так ... для начала мы вводим дату(2018-03-22 16:00), цену(1,2587) которая конвертируется в пиксели которые далее передаются в imagefilledellipse