Pull to refresh
19
0
Alexey Burlakov@Caesar

User

Send message
черт, форматирвоание матриц разъехалось. ну да ладно, должно быть более-менее понятно.
Что-то математики получилось больше чем программирования. Кодом не отделаюсь, придется объяснять.

ну поехали: исходим из предположения что делается пропорциональное масштабирование с коэффициентом k и поворот на угол a.

коэффициенты поворота и масштабирования определяются так:
a = k cos(a)
b = k sin(a)
c = -k sin(a) = -b # вообще в общем случае k для x и y разный, но раз у нас масштабирование пропорциональное, получилось вот такое красивое "-b"
d = k cos(a) = a

сам по себе угол нас в рассчетах не волнует, я это расписал только чтобы показать что c и d зависят от a и b.

tx и ty - это вектор переноса начала координат, как я помню.

для начала посчитаем a и b. для удобства принимаем одну из точек касания за начало координат. тогда переноса не будет (tx и ty = 0)

относительные координаты второй точки (стартовые и текущие):

dstartx = startx1 - startx2
dstarty = starty1 - starty2

dlocx = locx1 - locx2
dlocy = locy1 - locy2

итого мы имеем такое вот преобразование:

| a b 0||dstartx| |dlocx|
|-b a 0||dstarty| = |dlocy|
| 0 0 1|| 1 | | 1 |


выписываем уравнения, решаем относительно a и b и получаем такие результаты:

b = (dlocx * dstarty - dstartx * dlocy) / (dstartx^2 + dstarty^2)
a = (dlocx * dstartx + dlocy * dstarty) / (dstartx^2 + dstarty^2)

осталось вычислить tx и ty. для этого вернемся обратно к изначальной системе координат и рассмотрим перенос первой точки (которую мы выше принимали за начало):


| a b tx| |startx1| |locx1|
|-b a ty| |starty1| = |locy1|
| 0 0 1| | 1 | | 1 |


расписываем в систему уравнений, получаем вектор переноса:
tx = locx1 - a * startx1 - b * starty1
ty = locy1 + b * startx1 - a * starty1

ну вот, имеем все данные для масштабирования, поворота и переноса:

b = (dlocx * dstarty - dstartx * dlocy) / (dstartx^2 + dstarty^2)
a = (dlocx * dstartx + dlocy * dstarty) / (dstartx^2 + dstarty^2)
c = - b
d = a

tx = locx1 - a * startx1 - b * starty1
ty = locy1 + b * startx1 - a * starty1

я, естественно, не гарантирую что это заработает: я мог ошибиться в нумерации строк-столбцов в матрице (черт их знает что они имели ввиду под [1,2] - первый столбец и вторую строку или первую строку и второй столбец), мог напутать знаки при a и b, ввиду того сто программистская система координат имеет нестандартную по математическим меркам ориентацию оси y, но в целом теория, как мне кажется, должна быть верна.

Это был вариант в котором изображение "прилипает" к точкам касания. Как мне кажется данное условие - обязательное для интуитивности мультитач-интерфейса. Как несложно заметить, чтобы найти все коэффициенты, мы вынуждены были сделать предположение о двух переменных (kx = ky = k). Несложно догадаться, что если ввести третью точку касания и "прилепить" изображение ещё и к ней, то можно посчитать матрицу аффинного преобразование в общем виде - с непропорциональным масштабированием.

Математический аппарат там похожий, разве что немного с другой стороны придется зайти (так легко подмена системы координат не проканает).

Удачи (-:

Если это заработает - пожалуйста, дайте знать.
я, к сожалению, не умею на этом писать.

однако, думаю, имея формулы для коэффициента масштабирования и угла поворота вам не составит труда написать код.

или, лучше так: там есть affineTransform который поймёт целиком матрицу аффинного преобразования? Так можно двух зайцев сразу - и масштабирование и перемещение, и поворот. псевдокод я сейчас напишу.
а, ну да. одновременно с масштабированием надо и перетаскивать, чтобы под пальцем при масштабировании всегда была одна и та же точка изначальной картинки. С "простым" методом выше работать не будет. с вашим и остальными двумя моими - будет.
метод рассчета коэффициентов антиинтуитивен. Если я правильно понял код, то при изначальном касании, скажем, строго на одной горизонтали, у меня получится стартовая разница в 0.05, и если я чууть-чуть один палец с этой горизонтали сдвину, вертикальный размер логотипа "выстрелит" в неприлично большие значения.

предлагаю такие варианты:

Простой: если стартовая разница по оси меньше, скажем, пятой части экрана, то считать её этой самой пятой частью.
Компромиссный: сделать пропорциональное масштабирование. текущее расстойние между пальцами делим на стартовое.
Красивый: сделать пропорциональное масштабирование + поворот для абсолютно интуитивности (-:
ну неудивительно, ибо каких-то других литий-ионных пока не изобрели (-:
"быстро" - понятие относительное. Я имел ввиду что возможно 3.5 часа - не предел для аккумуляторов Теслы. Однако не стоит понимать как будто я хотел сказать "на самом деле они заряжаются за 10 минут".

И да, я в курсе режима зарядки литий-ионных аккумуляторов.
а, вот оно как. спасибо.
миром правят масоны, ага (-:
у меня есть подозрение что в этой тесле пак аккумуляторов с очень большим количеством элементов, подключенных параллельно друг другу. Это можно заряжать быстро, но зарядный ток будет просто фантастическим. А он и в текущем варианте 70 ампер от американской сети. Это довольно много даже по 120-вольтовым меркам. Провода наверное с палец толщиной.
по российским понятием передачи там три (-:

на четырехскоростных коробках для двсных машин четвертая тоже обычно 1:1. Это в штатах называется final или direct drive и передачей не считается. Но русские люди всё равно говорят "четыре скорости", а не "три плюс прямая". Ну это как с этажами. У нас первый и второй этаж, у них - ground floor и над ним первый. Чисто культурное различие.
на тесле именно литий-ионные стоят.
справедливости ради стоит отметить, что электростанция работает с большим КПД, чем ДВС (и не надо мне говорить что КПД - это меряние пиписьками. Можно ведь оценивать всю цепочку от топлива к потребителю, а не только последнее звено) и гораздо чище в плане выбросов из рассчета на единицу производимой энергии.

правда, учитывая многочисленные потери на пути до двигателя машины, думаю, будет вполне сравнимо с ДВС. Может меньше, может больше, гринпис его знает...
Если этот "любой" будет мыслить действительно логически, то он рано или поздно дойдет до нескольких очевидных мыслей:

1. prking электромобилю не нужна, ибо для него нет понялия холостого хода. На стоянке можно просто не крутить мотор.
2. Заднюю передачу логично и правильно делать реверсом двигателя.
3. Предположительно самая достоверная информация - на сайте производителя.

А на сайте производителя на странице технических характеристик написано следующее:

Gear Ratio Overall
First: 4.20:1 14.3:1
Second: 2.17:1 7.4:1
Final Drive: 3.41:1
Reverse: reverse direction of motor

http://www.teslamotors.com/performance/tech_specs.php
как я писал где-то выше, на оффсайте сказано про три передачи. Максимальную тягу их двигатель выдает что-то до восьми, насколько помню, тысяч. Где-то там-же на восьми тысячах у него максимальный КПД.

Задний ход действительно сделан реверсом двигателя, так что получается ещё три таких-же задних передачи. Наверняка это машина, которая задним ходом ездит быстрее всех... (-:
точно, ошибся. но качественно на результаты это всё равно не влияет
ну вот например: http://tramnn.narod.ru/museum/mtb82/mtb82_1.html

"Тормозная система комбинированная - при движении со скоростью выше 55 км/ч осуществляется рекуперативное торможение двигателем; затем вступает в действие электродинамический тормоз, а для окончательного или экстренного торможения используются пневматический и механический ручной тормоза."

вряд-ли электросеть можно "зарядить", думаю просто создает дополнительную ЭДС в цепи, которая работает на другие троллейбусы, висящие на том же сегменте токопровода, и тем самым снижает общую нагрузку на подстанцию.

Я не уверен как дело обстоит сейчас, поскольку не являюсь специалистом ни в электроприводе, ни в энергоснабжении, ни в общественном транспорте. Всё что я знаю по этой теме можно легко почерпнуть их университетского курса электротехники и недолгого гугления про троллейбусы.
ну тут простая экономика - амортизацию за автомобиль + стоимость обслуживания + электричество делим на пробег, получаем цену за километр.

Электродвигатели как правило имеют куда больший ресурс и дешевое обслуживание (т.е. они зачастую вообще необслуживаемые), чем ДВС. Единственная по настоящему дорогая вещь, которая в этой машине имеет крайне ограниченный (и хорошо предсказуемый) ресурс - это аккумулятор.

Веселье в том, что он почти не зависит от пробега: дело в том что литий-ионные аккумуляторы теряют в ёмкости просто со временем, даже если их не использовать. Ресурс зависит ещё от температуры, но это не особо существенно - не думаю что при использовании он будет греться сильнее чем просто в жаркий день на стоянке.

За отсутствием сколько-либо полных данных об аккумуляторе сказать что-то сложно. Будем ждать дальнейших публикаций на оффсайте.

Все остальные детали как на обычной машине. Покрышки, трансмиссия (там внизу по камментам заявляют что трансмиссия вообще не нужна - врут. на оффсайте написано про три передачи), прочие мелочи типа неходового оборудования и т.д.
хм, действительно, информация про цент за милю на оффсайте написана как раз в разделе про зарядку батареи.

ну давайте посчитаем: полная зарядка 3.5 часа (12600 секунд), на сайте пишут что кушает при этом 70 ампер. Предположим что это для америки, значит напряжение 110 вольт.

черт, действительно, чуть меньше 100 КДж, примерно 27 КВт*ч. По российским ценам вообще полцента.

не врут. вы были правы (-:
...а так же троллейбусах.

Information

Rating
Does not participate
Location
Новосибирская обл., Россия
Date of birth
Registered
Activity