Записки о софтверном бизнесе

Скругленные прямоугольники повсюду

September 7th, 2010 Posted in Бизнес, Технологии

Май 1981 года.

Билл Аткинсон работал в основном из дома, но каждый раз когда у него получалось что-то особенное он спешил в Apple похвастаться. В этот раз он повяился в офисе в Texaco Towers чтобы показать реализацию рисования овалов, которая использовала очень хитрый алгоритм.

Билл добавил новый код к QuickDraw (который в то время все еще назывался LisaGraf), который рисовал окружности и овалы потрясающе быстро. Это не так просто было сделать на Макинтоше, поскольку это требует извлечение большого количества квадратных корней, в то время как 68000 процессор в Lisa и Macinthosh не поддерживал операции с плавающей запятой. Но Биллу удалось найти очень изящное решение, которое использовало только сложение и вычитание. Ему удалось обойтись даже без умножения и деления, что 68000 конечно умел, но делал это не очень быстро.

Его решение строилось на том факте, что сумма последовательных нечетных всегда является квадратом целого числа (например, 1 + 3 = 4, 1 + 3 + 5 = 9, 1 + 3 + 5 + 7 = 16, итд). Таким образом он мог вычислить когда в цикле нужно было увеличить соотвествующую координату. Это позволило QuickDraw рисовать овалы очень быстро.

Билл запустил демо и быстро заполнил экран Lisa овалами разной величины, быстрее чем кто-либо мог себе представить. Однако что-то беспокоило Стива Джобса. "Ладно, окружности и овалы это здорово, но как насчет прямоугольников со скругленными углами? Мы можем сделать это тоже?"

"Нет, это невозможно. Более того, я не думаю, что это вообще нам может когда либо понадобиться". Я думаю, что Билл был слегка растроен, что Стив не был в восторге от его новых алгоритмов и хотел чего-то еще.

Стив внезапно вошел в раж. "Скругленные прямоугольники окружают нас повсюду. Ты только посмотри вокруг себя." Действительно, он был прав, кругом было полно таких предметов. Затем он показал на улицу. "Посмотри снаружи, там их еще больше, они со всех сторон". Он потащил Билла на улицу и они сделали круг вокруг здания. Стив показывал на каждый скругленный прямоугольник, который встречался им на пути.

Наконец Стив и Билл подошли к знаку "No parking", который тоже обладал скругленными углами. "Ладно, я сдаюсь", сказал Билл. "Я посмотрю, что можно сделать". Он пошел домой и продолжил работу.

Билл вернулся в Texaco Towers на следующий день с большой улыбкой на лице. Он показал демку, которая рисовала прямоугольники с замечательно скругленными углами и делала это потрясающе быстро. Он добавил этот код в LisaGraf, назвав этот примитив "RoundRects". Через несколько месяцев скругленные прямоугольники проникли во все элементы пользовательского интерфейса и стали незаменимы.

Оригинал на английском вот здесь.

--------------------------------------

От себя добавлю. Прошло почти 30 лет. Microsoft вот-вот добавит поддержку отрисовки скругленных прямоугольников средствами CSS в Internet Explorer 9.

  1. 11 Responses to “Скругленные прямоугольники повсюду”

  2. By Maaal on Sep 8, 2010

    Очень интересно. Аткинсон гений. Отжиг про IE в самую тему.

  3. By Евгений on Sep 8, 2010

    Опечатки в статье:
    1. Действительно, он был прав, кругом было _полдно_
    2. Он потащил Билла на улицу и они сделали вокруг здания. – что они сделали вокруг здания? :)
    3. Далее “рпямоугольник”
    4. Наконец (тут надо запятую) Стив и _БИлл_

  4. By paprike on Sep 8, 2010

    Это не гениальность, я еще в школе заметил эту закономерность

  5. By none on Sep 8, 2010

    Пример в оригинале облегчает понимание: “For example, 1 + 3 = 4, 1 + 3 + 5 = 9, 1 + 3 + 5 + 7 = 16, etc”

  6. By Bolk on Sep 8, 2010

    Про IE — IE умеет рисовать скруглённые углы, просто не средствами CSS, а через VML.

  7. By mankey on Sep 8, 2010

    Maaal, “отжиг″ про border-radius в IE9 вообще не в тему. То есть я в курсе, что Сафари поддерживает это свойство уже года два как, но браузер и графический редактор — несколько разные классы программ, не правда ли?

  8. By fuwaneko on Sep 8, 2010

    Ну вы даёте. «Гений». Когда я учился в университете, таких называли «идиот». http://ru.wikipedia.org/wiki/Алгоритм_Брезенхэма — этому алгоритму уже 50 лет, и он быстрее всего, что только можно придумать.
    А border-radius и в других-то браузерах появился не особо давно.

  9. By KuzEv on Sep 9, 2010

    Cумма последовательных нечетных чисел, начиная с 1, всегда является квадратом количества этих чисел.

  10. By Валентин on Sep 9, 2010

    Про алгоритм Брезенхема для рисования окружностей забыли упомянуть (насколько мне известно, он будет постарше), который вычисляет всего 1/8 всех точек, а остальные – это отражения вычесленных.

    И при чем здесь вообще прямоугольники “мелкомягких”, если спецификация CSS их не предусматривает? Возможность творить подобные “чудеса” появится только в CSS 3… Поэтому, перед тем, как добавлять “от себя”, лучше ознакомьтесь с предметом, о котором говорите…

  11. By Сергей Корнилов on Sep 9, 2010

    Спасибо тем, кто заметил опечатки, все исправил.

  1. 1 Trackback(s)

  2. Sep 8, 2010: Tweets that mention Lifestyle business » Blog Archive » Скругленные прямоугольники повсюду -- Topsy.com

Post a Comment