Обсуждение:Алгоритм Брезенхэма (KQvr';yuny&Glikjnmb >jy[yu]zbg)
Проект «Информационные технологии» (уровень IV, важность для проекта средняя)
Эта статья тематически связана с вики-проектом «Информационные технологии», цель которого — создание и улучшение статей по темам, связанным с информационными технологиями. Вы можете её отредактировать, а также присоединиться к проекту, принять участие в его обсуждении и поработать над требуемыми статьями. |
Untitled
[править код]А не стоит ли сменить название? Ведь есть ещё и инкрементный алгоритм построения окружности, тоже вроде носящий носящий имя Брезенхэма. --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;
Данный код не является явным для "простых обывателей" - лучше добавить переменную temp и с её помощью поменять местами dx<->dy;
dy:=dx-dy;
dx:=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)