из вкусностей, пришедших вместе с отслеживением мёржей, стоит отметить, что теперь не нужно помнить на какой ревизии в последний раз в бранч мёржились изменения из транка, т.к. при очередном мёрже клиент возьмёт эти данные из svn:mergeinfo.
Разрешение конфликтов, правда, на мой взгляд, не улучшило ситуацию - особо проще не стало. Лучше бы они как-то доработали систему, чтобы не находила конфликты там, где их быть не должно.
для sparce checkouts пока тоже реального применения не нашел, но это видимо специфика моих репозиториев.
и это повод ожидать от него такого поведения? Меня вот, например, устраивает ситуация с self в пхп и он ведет себя именно так, как я от него ожидаю. Я программист. Язык создан для меня.
это частный случай. с ноутбуками у линукса часто бывают аппаратные проблемы. К счастью эта ситуация постепенно овыравнивается (производители ноутбучного железа начинают писать дрова под линукс). Сони, видимо, пока не сподобилась.
проблема в том, что вы сначала придумываете что там будет такой паттерн, там сякой и пытаетесь _это_ как-то автоматизировать в рамках ПХП. Это паттерны _проектирования_. Не прогарммирования, а проектирования.
Да, иногда в языке есть средства для удобной реализации запроектированных на паттернах решений, иногда их можно создать средствами языка. Но вот лично мне за шесть лет коммерческого прграммирования ситуации, где такие низкоуровневые по ООП-понятиям вещи надо было реализовывать "в общем виде" встречались ой-как редко.
За очевидным, опять-же, исключением тех случаев, когда язык позволяет это сделать легко и естественно.
т.е. вы исключаете ситуацию работы с несколькими базами данных?
мне тоже кажется что здесь уместнее фабрика, отдающая либо готовое соединение, либо делающая новое в зависимости от того какую базу хотим и есть ли готовое соединение.
видимо именно потому что по модулю брал и не получается поворот. попробуй сделать startx2 - startx1, как я написал выше - должны работать повороты на все 360...
ааа! совсем забыл добавить. в случае с тремя точками нельзя допускать чтобы они лежали на одной прямой. Если конкретнее, то разумные коэффииенты и точность вычислений будет при некоей разумной ненулевой площади треугольника с вершинами в точках касания.
Площадь треугольника по координатам вычисляется по восьмой формуле из википедии
Не забываем взять результат по модулю.
Думаю при уменьшении площади меньше какой-то величины просто прекращать какие-либо преобразования и ждать пока она не увеличится снова. Если пальцы изначально на одной прямой стоят, то ждать пока площадь не увеличится и толко после этого запоминать стартовые координаты.
получаются нехитрые уравнения, которые надо решить относительно a, b, c, d, tx и ty (сразу перегруппирую чтобы удобнее было решать):
a x1 + b y1 + tx = x1'
a x2 + b y2 + tx = x2'
a x3 + b y3 + tx = x3'
c x1 + d y1 + ty = y1'
c x2 + d y2 + ty = y2'
c x3 + d y3 + ty = y3'
если из первого и второго вычасть третье, появляется лйгкий путь вычислить a и b:
a (x1 - x3) + b (y1 - y3) = x1' - x3';
a (x2 - x3) + b (y2 - y3) = x2' - x3';
(этот шаг эквивалентен трюку с переносом начала координат в одну из точек касания, который проделан камментом выше).
аналогично делается для второй тройки уравнений для c и d:
c (x1 - x3) + d (y1 - y3) = y1' - y3';
c (x2 - x3) + d (y2 - y3) = y2' - y3';
в общем виде вычисляются коэффициенты. потом подставляются в оставшиеся третье и шестое уравнения и получаются tx и ty.
формулы там хоть и простые, но крайне громоздкие, а времени у меня уже нет. Кто в школе не прогуливал математику, думаю, справятся. Кто не прогуливал в институте линейку, думаю, справятся побыстрее меня.
Разрешение конфликтов, правда, на мой взгляд, не улучшило ситуацию - особо проще не стало. Лучше бы они как-то доработали систему, чтобы не находила конфликты там, где их быть не должно.
для sparce checkouts пока тоже реального применения не нашел, но это видимо специфика моих репозиториев.
В чем проблема? (-:
Да, иногда в языке есть средства для удобной реализации запроектированных на паттернах решений, иногда их можно создать средствами языка. Но вот лично мне за шесть лет коммерческого прграммирования ситуации, где такие низкоуровневые по ООП-понятиям вещи надо было реализовывать "в общем виде" встречались ой-как редко.
За очевидным, опять-же, исключением тех случаев, когда язык позволяет это сделать легко и естественно.
мне тоже кажется что здесь уместнее фабрика, отдающая либо готовое соединение, либо делающая новое в зависимости от того какую базу хотим и есть ли готовое соединение.
надеюсь это скоро закончится.
Площадь треугольника по координатам вычисляется по восьмой формуле из википедии
Не забываем взять результат по модулю.
Думаю при уменьшении площади меньше какой-то величины просто прекращать какие-либо преобразования и ждать пока она не увеличится снова. Если пальцы изначально на одной прямой стоят, то ждать пока площадь не увеличится и толко после этого запоминать стартовые координаты.
имеем матрицу и три пары векторов в гомогенных координатах:
A =
|a b tx|
|c d ty|
|0 0 1|
start1 = (x1, y1, 1); start2 = (x2, y2, 1); start3 = (x3, y3, 1);
loc1 = (x1', y1', 1); loc2 = (x2', y2', 1); loc3 = (x3', y3', 1);
известно что:
|A||start1| = |loc1|
|A||start2| = |loc2|
|A||start3| = |loc3|
получаются нехитрые уравнения, которые надо решить относительно a, b, c, d, tx и ty (сразу перегруппирую чтобы удобнее было решать):
a x1 + b y1 + tx = x1'
a x2 + b y2 + tx = x2'
a x3 + b y3 + tx = x3'
c x1 + d y1 + ty = y1'
c x2 + d y2 + ty = y2'
c x3 + d y3 + ty = y3'
если из первого и второго вычасть третье, появляется лйгкий путь вычислить a и b:
a (x1 - x3) + b (y1 - y3) = x1' - x3';
a (x2 - x3) + b (y2 - y3) = x2' - x3';
(этот шаг эквивалентен трюку с переносом начала координат в одну из точек касания, который проделан камментом выше).
аналогично делается для второй тройки уравнений для c и d:
c (x1 - x3) + d (y1 - y3) = y1' - y3';
c (x2 - x3) + d (y2 - y3) = y2' - y3';
в общем виде вычисляются коэффициенты. потом подставляются в оставшиеся третье и шестое уравнения и получаются tx и ty.
формулы там хоть и простые, но крайне громоздкие, а времени у меня уже нет. Кто в школе не прогуливал математику, думаю, справятся. Кто не прогуливал в институте линейку, думаю, справятся побыстрее меня.
Enjoy!
dstartx = startx2 - startx1
dstarty = starty2 - starty1
dlocx = locx2 - locx1
dlocy = locy2 - locy1
иначе у нас всё совсем не туда двигаться будет (-: