Здравствуйте, Кодт, Вы писали:
К>Две точки, так же, как и точка и размер — это некорректные способы задания прямоугольника. Что, если "верхняя левая" точка находится ниже "правой нижней"? В какую сторону от опорной точки отсчитывается размер?
Об этом можно "договориться". Например, считать что в первом случае задается левая верхняя и правая нижняя точка, а во втором случае — левая верхняя точка. Суть дискуссии не в этом, а в том, какои ИЗ ЭТИХ двух способов семантически богаче.
К>Прямоугольник можно задать двумя отрезками — проекциями на оси координат. Т.е. [x1,x2]*[y1,y2] (Так даже корректнее в теоретико-множественном смысле). К>Каждый из отрезков задаётся К>- упорядоченной парой чисел (x1,x2), x1<=x2 --> [x1,x2] К>- парой координата,размер (x,dx), dx>=0, --> [x,x+dx] К>или К>- неупорядоченной парой (x1,x2) --> [min(x1,x2),max(x1,x2)] либо [x1,max(x1,x2)], либо [min(x1,x2),x2] К>- аналогично, координатой и произвольной дельтой К>кстати, необязательно считать опорные точки концевыми К>- (x,dx) --> [x-|dx/2|,x+|dx/2|]
К>Именно из-за последнего пункта можно утверждать: точка,размеры более богата, чем пара точек.
Нет, не следует. Отсюда следует что точка, размеры и (как Вы называете) опции выравнивания — более богата, чем пара точек. И это дополнительное богатство добавляется за счет двух дополнительных степеней свободы, за счет опций варавнивания.
Я же утверждаю, что оба описанных мной варианта эквиваленты с точки зрения семантики, т.е. несут в себе равное количество смысловой нагрузки (прошу обратить внимание, что именно равное количество смысловой нагрузки, но не одинаковую смысловую нагрузку. Смысловую нагрузку можно измерить количеством информации, в обоих случаях оно одинаково и, очевидно, равно 4 * sizeof(T) * 8 бит, где Т — используемый тип данных.
Вы с этим согласны?
К>Итого, мой выбор — опорная точка,размеры,опции выравнивания.
Боюсь что такая гибкость в 90% случаев избыточна, хотя конечно это более правильный вариант. Вот MS выбирает первый вариант, Sun — второй.