Обсуждение:Алгоритм Брезенхэма

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

А не стоит ли сменить название? Ведь есть ещё и инкрементный алгоритм построения окружности, тоже вроде носящий носящий имя Брезенхэма. --Solon 15:10, 1 сентября 2005 (UTC)[ответить]

Эти алгоритмы сходны, так что можно их в одной статье описать. Лий -толк- 16:11, 1 сентября 2005 (UTC)[ответить]
Если никто не против, я выложил свою реализацию для рисования окружностей. Vas3k 16:18, 21 сентября 2009 (UTC)[ответить]

Автор, напиши полный алгоритм в псевдокоде (а лучше на java:) )! Дано: четыре целых числа - две точки на плоскости, задача - построить между ними линию. 193.232.121.106 01:07, 15 сентября 2008 (UTC)[ответить]


>bydlo_putPixel (x, y); >bydlo это что еще такое? 78.111.155.2 16:21, 14 ноября 2010 (UTC)[ответить]


Проверил реализацию построения окружности на C++. Рисуется восьмиугольник, а не окружность; нет даже намёка на дуги. SpyderDFX--212.193.74.245 06:34, 25 ноября 2010 (UTC)[ответить]


"Умножение на 2 для целых чисел можно реализовать битовым сдвигом влево. Однако, если число отрицательное, при сдвиге пропадёт бит знака." А при умножении двух отрицательных знак не пропадает?

Умножение двух чисел -- это возведение в квадрат -- не имеет отношения к делу. -- NZeemin 07:42, 5 октября 2012 (UTC)[ответить]
Ааа, точно. А то я всё сижу и думаю какой смысл в if(error2 > -deltaY) {. Совсем голова не варит. Но и кстати PascalABC реализацию бы в си синтаксис, там на порядок понятнее всё... А тут уже с выкрутасами. И координату z приделать лихо можно.

Код ObjectPascal[править код]

dx:=dx+dy;
dy:=dx-dy;
dx:=dx-dy;
Данный код не является явным для "простых обывателей" - лучше добавить переменную temp и с её помощью поменять местами dx<->dy; var
temp: integer;
begin
....
temp:=dx;
dx:=dy;
dy:=temp;
...
end;

Конечно это мое мнение, но для понимания это лучше всего и к тому же не факт правильности алгоритма при выходе суммы dx+dy за пределы границ типа Integer.!! Прошу взять во внимание.

109.86.159.57 14:13, 26 марта 2011 (UTC)[ответить]

Реализация на C++:[править код]

       if(x1 == x2 && y1 == y2)
           break;

не лучшее решении к примеру при вызове drawLine(0, 250, 200, 200) этот алгоритм "промахивается" мимо последней точки и улетает в никуда. --82.114.155.10 05:23, 5 августа 2011 (UTC)[ответить]

Даушь. Лучше сразу посчитать сколько будет "пиксеелй", и от этого отходить. типо как for (i = (deltaX > deltaY)?deltaX: deltaY; i > 0; i--) { } 37.78.196.174 12:12, 12 апреля 2013 (UTC)[ответить]

Переименование "БрезенхЭма" в "Брезенхема"[править код]

Просьба к участникам поправить название статьи -- 178.49.155.97 16:11, 31 мая 2012 (UTC)[ответить]

А какая разница, всё равно он Брезенем :) --М. Ю. (yms) 19:30, 4 августа 2014 (UTC)[ответить]

Представление целых чисел[править код]

Уважаемые участники Википедии! Прежде чем отменять поправку в строке "Умножение на 2 для целых чисел можно реализовать битовым сдвигом влево. Однако, если число отрицательное, при сдвиге пропадёт бит знака.", прочитайте пожалуйста статьи Прямой код, Обратный код и Дополнительный код (представление числа). Не вводите читателей в заблуждение! -- SergeyShpagin 18:56, 7 декабря 2014 (UTC)[ответить]

Уважаемый, внимательно перечитайте статью Обратный код ещё раз. При умножении чисел в обратном коде, путём сдвига влево, в отрицательном числе бит знака действительно не пропадёт, однако появится искажение другого характера. -- 121.129.204.143 07:32, 17 июля 2015 (UTC)[ответить]