Форум программистов, компьютерный форум, киберфорум
JavaScript: HTML5 Canvas
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 62

Алгоритм Брезенхема

06.06.2016, 00:20. Показов 3931. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите заменить 1 букву. Тут 1 буква "С", а надо "Д"
PHP/HTML
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<!DOCTYPE HTML>
<html>
  <head>
    <style>
      body {
        margin: 10px;
        padding: 10px;
      }
    </style>
  </head>
  <body>
    <canvas id="myCanvas" width="1366" height="768"></canvas>
    <script type="text/javascript">
        var canvas = document.getElementById('myCanvas');
        var context = canvas.getContext('2d');
        context.beginPath();
        
        //Первая буква "С"
        drawBrez(240, 100, 260, 120);
        drawBrez(200, 100, 240, 100);
        drawBrez(200, 100, 180, 120);
        drawBrez(180, 120, 180, 200);
        drawBrez(180, 200, 180, 220);
        drawBrez(180, 220, 240, 220);
        drawBrez(240, 220, 260, 200);
        
        //Последняя буква "В"
        drawLuk(300, 100, 340, 100);
        drawLuk(340, 100, 350, 110);
        drawLuk(350, 110, 350, 130);
        drawLuk(350, 130, 340, 140);
        drawLuk(340, 140, 300, 140);
        
        drawLuk(300, 100, 300, 220);
        
        drawLuk(340, 140, 360, 160);
        drawLuk(360, 160, 360, 200);
        drawLuk(300, 220, 340, 220);
        drawLuk(340, 220, 360, 200);
        
        /*метод Брезенхема*/
        function drawBrez(Xd, Yd, Xf, Yf){
            var Dx,Dy,Dx2,Dy2,Dxy,S;
            var Xinc,Yinc,X,Y;
            var col, i;
            col = 5;
            if (Xd < Xf) Xinc = 1; else Xinc = -1;
            if (Yd < Yf) Yinc = 1; else Yinc = -1;
            Dx = Math.abs(Xd - Xf);
            Dy = Math.abs(Yd - Yf);
            Dx2 = Dx + Dx; Dy2 = Dy + Dy;
            X = Xd; Y = Yd;
            context.moveTo(X, Y);
            if (Dx > Dy){
                S = Dy2 - Dx;
                Dxy = Dy2 - Dx2;
                for (i=0; i < Dx; i++){
                    if (S >= 0){
                        Y = Y + Yinc;
                        S = S + Dxy;
                    } else S = S + Dy2;
                    X = X + Xinc;
                    context.lineTo(X, Y);
                }
            }
            else{
                S = Dx2 - Dy;
                Dxy = Dx2 - Dy2;
                for (i=0; i < Dy; i++){
                    if ( S >= 0){
                        X = X + Xinc;
                        S = S + Dxy;
                    } else S = S + Dx2;
                    Y = Y + Yinc;
                    context.lineTo(X, Y);
                }
            }
            context.stroke();
        }
        /*метод Люка*/
        function drawLuk(Xd, Yd, Xf, Yf){
            var Dx,Dy,Cumul;
            var Xinc,Yinc,X,Y;
            var col;
            
            var Dx,Dy,Cumul;
            var Xinc,Yinc,X,Y;
            var col;
            var i;
            X = Xd; Y = Yd; col = 4;
            context.moveTo(X, Y);
            if (Xd < Xf) Xinc = 1; else Xinc = -1;
            if (Yd < Yf) Yinc = 1; else Yinc = -1;
            Dx = Math.abs(Xd - Xf);
            Dy = Math.abs(Yd - Yf);
            if (Dx > Dy){
                Cumul = Dx/2;
                for (i=0; i < Dx; i++){
                    X = X + Xinc;
                    Cumul = Cumul + Dy;
                    if (Cumul >= Dx){
                        Cumul = Cumul - Dx;
                        Y = Y + Yinc;
                    }
                    context.lineTo(X, Y);
                }
            }
            else{
                Cumul = Dy/2;
                for (i=0; i < Dy; i++){
                    Y = Y + Yinc;
                    Cumul = Cumul + Dx;
                    if (Cumul >= Dy){
                        Cumul = Cumul - Dy;
                        X = X + Xinc;
                    }
                    context.lineTo(X, Y);
                }
            }
            context.stroke();
        }
    </script>
  </body>
</html>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.06.2016, 00:20
Ответы с готовыми решениями:

Алгоритм Брезенхема
дорогие форумчане!не могли бы помочь в написании вот такой программки в delphi..... Построить график функции y=x^3. График строится с...

Алгоритм Брезенхема
Написал процедуру, отрезок отлично рисуется в 1 октанте, в 8 октанте не хочет. В чем может быть дело? Перепробовал все. Помогите пожалуйста...

Алгоритм Брезенхема
Есть такой цикл и это кусок кода из этой статьи for (int x = x0; x &lt;= x1; x++) { float t = (x - x0)/(float)(x1 - x0);...

5
Superposition
 Аватар для Padimanskas
950 / 615 / 256
Регистрация: 27.10.2013
Сообщений: 2,083
06.06.2016, 06:03
vladdramachev, Эти алгоритмы уже реализованы внутри canvas API, зачем их воспроизводить снова?
0
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 62
23.06.2016, 19:56  [ТС]
Padimanskas, Ну по заданию так
0
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 62
06.07.2016, 01:52  [ТС]
Padimanskas, Ты поможешь с этим заданием?
0
77 / 40 / 14
Регистрация: 14.01.2016
Сообщений: 203
07.07.2016, 05:24
что тут помогать-то? тупо буква из линий. подбери координаты. пейнт в помощь
0
 Аватар для Уф
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
17.08.2016, 14:48
JavaScript
1
        canvas.onmousemove = function(e) { console.log(e.offsetX, e.offsetY); }
и в консоли видно координаты точки, их пишешь в свою функцию
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.08.2016, 14:48
Помогаю со студенческими работами здесь

алгоритм Брезенхема
нужно построить окружность по алгоритму Брезенхема 1. с вводом центра окружности и радиуса 2. центр окружности задается нажатием на...

Алгоритм Брезенхема
Сегодня дали задание реализовать процедуру рисования линии используя SetPixel. Дали алгоритм Брезенхема: Вот даже написал прогу по...

Алгоритм Брезенхема
Есть такой код: FOR y=y0 TO y1 POINT x,y,5 err=err+difx IF 2*err&gt;=dify THEN x=x+incr err=err-dify ENDIF NEXT y ...

Алгоритм Брезенхема
Построить график функции y=x^2. График строится с помощью отрезков. Для построения отрезков использовать алгоритм Брезенхема.

Алгоритм Брезенхема
Надо написать алгоритм брезенхема чтобы нажимая кнопку нарисовалось 8 линий выходящих из одной точки! Вот мои наброски как сделать?...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru