Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
70 / 12 / 4
Регистрация: 17.01.2017
Сообщений: 524
1

Рисование кривых Безье

14.08.2017, 16:34. Показов 2499. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
На одном сайте нашла статью, как чертить линии. На другом класс, который может
создавать кривую Бизье.
Покопавшись в коде мне удалось создать кривую Бизье, но точки генерируются
случайным образом. Как мне указать свои точки, по которым бы прогладывалась
кривая Безье вот код.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php
set_time_limit(100);
 
define('GRAPH_WIDTH',  500);
define('GRAPH_HEIGHT', 400);
 
include_once ('classes/Plot.php');
include_once ('classes/CubicSplines.php');
include_once ('classes/SmoothCurve.class.php');
include_once ('classes/BezierCurve.class.php');
 
$iPoints = 5;
$dx = (GRAPH_WIDTH - 40) / ($iPoints - 1);
$x = 20;
 
for ($i = 0; $i < $iPoints; $i++) {
   $y = rand(20, GRAPH_HEIGHT - 20);
   $aCoords[$x] = $y;
   $x+= $dx;
    
}
$vImagegHeight = GRAPH_HEIGHT + 30;
$vImage = imagecreatetruecolor(GRAPH_WIDTH + 50, $vImagegHeight);
 
$vBgColor = imagecolorallocate($vImage, 160, 160, 160);
$vTextColor = imagecolorallocate($vImage, 0, 0, 0);
$vAxisColor = imagecolorallocate($vImage, 0, 0, 0);
$vDotColor  = imagecolorallocate($vImage, 192, 64, 64);
 
imagefill($vImage, 0, 0, $vBgColor);
 
$oPlot = new Plot($aCoords);
$oPlot->drawDots($vImage, $vDotColor, 10, GRAPH_HEIGHT, 8);
 
$oCurve = new CubicSplines();
$vColor = imagecolorallocate($vImage, 225, 64, 64);
 
$oBizie = new BezierCurve();
$colors = imagecolorallocate($vImage, 64, 192, 192);
$titles = 'Bezier curve';
 
$iStart = microtime(1);
 
    $start = microtime(1);
    if ($oBizie)
    {
        $oBizie->setCoords($aCoords, 1);
        $r = $oBizie->process();
        if($r) $curveGraph = new Plot($r);
        else continue;
    }
    else
    {
        $curveGraph = $oBizie;
    }
 
 
    unset($oBizie);
 
  $curveGraph->drawLine($vImage, $vColor, 10, GRAPH_HEIGHT);
   
 
 
 
$sTime = sprintf("%1.4f", microtime(1) - $iStart);
 
imagefilledrectangle($vImage, 0, GRAPH_HEIGHT, GRAPH_WIDTH + 50, $vImagegHeight, $vBgColor);
 
$oPlot->drawAxis($vImage, $vAxisColor, 10, GRAPH_HEIGHT);
$iPanelY = GRAPH_HEIGHT;
 
imagefilledrectangle($vImage, 10, $iPanelY + 10, 20, $iPanelY + 20, $vColor);
imagerectangle($vImage, 10, $iPanelY + 10, 20, $iPanelY + 20, $vAxisColor);
imagettftext($vImage, 10, 0, 30, $iPanelY + 20, $vTextColor, 'Ds-digib.ttf', 'Кубические сплайны в PHP:         ' . $sTime . ' sec');
 
header("Content-type: image/png");
imagepng($vImage);
imagedestroy($vImage);
?>
На всякий случай выложу весь архив вместе с классами.
CurveBezier.rar
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.08.2017, 16:34
Ответы с готовыми решениями:

Рисование линий и кривых Безье, 2D-фигур
Интересует вопрос, как отрисовать в Unity прямую/кривую линию заданных толщины и цвета, а также...

Сравнить множество кривых Безье
Тут много писанины, что бы понятно было &quot;откуда ноги растут&quot;, ее смело можно пропустить истинным...

Отрисовка кривых Безье OpenGL(C++)
Здравствуйте!!! Помогите пожалуйста нубу - необходимо нарисовать кривые Безье, но с инструментарием...

Нарисовать астроиду из кривых Безье
Здравствуйте, помогите, пожалуйста, реализовать рисование астроиды из кривых Безье 2-ой степени.

1
2169 / 1652 / 840
Регистрация: 10.01.2015
Сообщений: 5,190
15.08.2017, 14:37 2
ИМХО, для этой задачи лучше подойдет canvas, поскольку графики и иже с ними обычно реализуются на стороне клиента.
0
15.08.2017, 14:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.08.2017, 14:37
Помогаю со студенческими работами здесь

Объединение кривых Безье (нахождение контрольных точек)
Здравствуйте, нужна помощь в восстановлении кубической кривой Безье. Суть проблемы: изначально...

Залить фигуру, нарисованную с помощью кривых Безье
Здравствуйте. С помощью кривых Безье я нарисовал замкнутую фигуру (цветок). Теперь его нужно залить...

Написать свой алгоритм рисования кривых Безье
Доброго времени суток. Ребят появилось задание написать по комп графике реализацию рисования Кривых...

Можно ли в кривых безье использовать массив точек а не 4 точки
можно ли в кривых безье использовать массив точек а не 4 точки если да то как?

Плавность рисования отдельных кривых Безье на основании перемещения соединяющей точки
Всем доброго времени суток:). Суть проблемы состоит в следующем: 1. У меня есть приложение на Qt...

Рисование кривой Безье по трем точкам
Доброго утра, форумчане. Надо нарисовать на форме кривую Безье по трём кликам мыши. Как такое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru