второй вариант — это использовать честную координату (ну, почти честную) для расчета начала строки, а для следующих — алгоритм брезенхема.
Брезенхем же в чем — есть виртуальная шестеренка с К зубцами (если использовать вашу КПДВ и рисовать строки слева направо от 0,0 до W,0 и снизу вверх), на каждый ее шаг «поворота» увеличиваем координату х на 1, а как сделает полный оборот — увеличиваем координату у на 1, т.д — по крайней мере до угла 45 градусов :)
Если больше 45 — то там по столбцам нужно идти. Но идея от єтого не меняется.
При угле поворота картинки 0 градусов — К равно W (т.е. ни разу у не увеличивается), при 45 — К равно 1 (т.е. у увелчивается так же как и х — а каждом шаге).
Так как строчки идут параллельно, то у всех у них будет одинаковый угол — и параметр К. Отличаться только будет координата начала и фаза виртуальной «шестерни». Так что нужно будет честно вычислить только в начале кадра — куда придет 0,0 и какая в этой точке фаза (интуитивно кажется — что можно задать равной 0 — типа начало, но хз, надо нарисовать или попробовать).
После этого — для каждой следуюущей строки можно вычислять только стартовую х_і координату (а у — получить из брезенхема, так как это y_0 + i — (х_0 — х_і) / К. Заодно и дырок между строчками не будет). Начальная фаза при этом будет равна (х_0 — х_і) mod К.
Далее — можно заметить еще, что если размеры (H, W) исходного и результирующего прямоугольников равны, и мы делаем поворот вокруг цента, то если мы сейчас читаем из точки с координатой (х_і, у_і), и после преобразования, ее координаты (х2_і, у2_і) находятся вне результирующего прямоугольника, то это значит, что в результирующем прямоугольнике есть точка (х_і, H — у_і), у которой нужно выставить цвет фона :)
(В принципе, это соображение будет работать при любом угле поворота… вроде бы ...)
если это все можно выразить на верилоге — было бы интересно посмотреть результат :DDD
ничего не знаю в верилоге — а вы можете не записывать, а вычитывать данные по заданному адресу?
Тогда можно было бы рисовать тем же формулами, но с вращением координат чтения — что решало бы и проблемы с пропусками точек и с фоном, когда нет данных по краям :)
Ну или сделать конвейер — выделить два массива (рабочий=0 и буфер=1) и текущую точку просто писать в буфер, а на экран в эту же точку выводить из повернутых координат буфера (который был прошлым кадром). После прохода — поменять ссылки на них (рабочий=1 а буфер=0) %)
PS: подумалось — это ж значит можно синтезировать килограммами эту штуку, а потом:
отмерил грамм сто, обработал смесью S1S2, и после внедрения получил одну функцию,
отмерил еще грамм сто, обработал S4 и получил другую функцию,
и т.д. — и не надо перенастраивать производство туда-сюда, а от массовости — цена этих сто грамм совсем другая будет %)
обычно такие программированные бактерии такие нежные, что они в на воле не живут (или их заранее специально лишают умения вырабатывать нужные ферменты, которые потом им добавляют в питательную среду).
Вообще — любой лишний кусок ДНК (т.е. внедренная программа) — только мешает клетке жить и требует дополнительной энергии+веществ на свою работу %)
мм… не совсем очевидно. Увеличение числа роботов — увеличивает продуктивность своего владельца. Как в той шутке про демократию в древней греции, что это: "когда все равны, богаты и даже у самого захудалого землепашца не менее трех рабов" ;)
А вот появление ИИ и даже самых слабых мозов у этих роботов — явным образом и радикально уменьшает занятость...
А, и на закуску — авторы сообщают, что те ~100 функций, которые они сконструировали, они запускали (т.е. внедрили в хромосомы клеток "закладочку", добавили настроечных ферментов и активатора и убедились, что светится зеленым, когда нужно, и не светится — когда не нужно) в клетках печени мышей >:-D
А) Ализар — такой ализар!
Б) Я не настоящий сварщик, но, судя по оригинальной статье — им удалось найти способ, чтобы при помощи пары одинаковых ферментов сделать универсальный логический элемент, который потом можно единообразным соединять в большие цепочки формул.
Собственно — изображения в статье:
0) обозначения — GFP=GreenFluorescentProtein=белок светящийся зеленым. перевернутый — записан в обратную сторону. стрелочка — это маркер начала (без него не начнется считывание цепочки). Т — терминатор, на нем считывание принудительно останавливается. цветные треугольники — разные маркеры, пакманы — ферменты (тоже белки, как и GFP, только для других целей)
картинка 1) традиционный подход — фермент А вырезает красные маркеры, фермент В — синие, на выходе — какой-то из четырех белков (разной фиолетовости)
картинка 2)
а= показана работа фермента рекомбиназы (вырезает блокирующий терминатор) и интегразы (переворачивает белок), обащается внимание, что ферменты работают только со своими маркерами.
б=показано, насколько они специфично подходят друг к другу. т.е. позволяют создавать цепочки (т.е. чтобы вместо GFP вырабатывать другой фермент), которые не будет мешать друг другу.
с=пример "6-И", когда нужно присутствие всех 6 ферментов, чтобы "перевернуть" признак старта в нормальное состояние, убрать все терминаторы и также "перевернуть" результирующий белок. ( заметьте, что комбинация 111110 таки дает небольшое свечение :) И вообще — при наличии первого фермента — больше шансов для ошибки %) )
рисунок 3) подробно расписан их универсальный логический элемент. В принципе — то же, что и на картинке 1, только с добавлением 4х "настроечных" маркеров (розовый, голубой, оранжевый и коричневый). Так что при отсутствии и А и В — работает участок Z00, при А — Z10 (Z00 и Z01 — вырезаны), при В — Z01 (ибо вырезан веськусок с Z00 по Z10), а когда и А и В — то там остается только Z11. Причем, по умолчанию — ни один из них не работает без своих активаторов (S1-S4)
Смысл этого всего — что достаточно только 2х белков-ферментов "посредине" с разными маркерами, и набора разнообразных маркеров, чтобы из входа "белок-активатор" получить "белок-результат" по нужной формуле: активатор А+В ==>( ф-ция(A,B)->C, ф-ция(A,B)->D, ф-ция(C,D)->E,… ) ==> ф-ция(*, Е)->результат F.
Обратите внимание, что такие вычисляются только один раз — при первом проходе, а дальше продолжают выдавать один и тот же результат (изза того, что ферменты вырезают и поворачивают). Хотя, насколько я понял оригинальную статью, дополнительный недеструктивный активатор (который можно включать и выключать) можно влючить в самую последнюю цепочку — чтобы не делать холостую работу. А для нового вычисления — внедрять исходную комбинацию заново %)
однако, я повторюсь — я не в теме вообще, а просто водянистость перевода заставила почитать оригинальную статью %)
1) во-первых, сам по себе никто не будет добавлять себе забот (а тем более — "власть имущие"), так что сначала будут нео-луддиты, а только потом уже "отрыв тела от стула и поработать"
2) во-вторых, каким будет новое "правильное" распределение налогов — никто на самом деле не знает. То ли роботов облагать доп.налогом, то ли людям давать пособия %)
Оно использовалось для поиска G из формулы
F = G * m1 * m2 / R^2
массы шаров известны, расстояние — меняется при помощи поворотного круга под потолком.
Сила — действует на коромысло маленьких шаров ( как и на подвес больших) и уравновешивается (умноженное на длину рычага) отклонением подвеса. Вот, наблюдая за этим отклонением (ИМХО там такой длинный микросокоп, а не телескоп), считают отклонение, переводят в силу и получают G.
ИМХО, для нахождения массы земли можно делать проще — если посчитать соотношение, с какой скоростью убывает сила притяжения к эталонному шару, то посмотрев — с какой скоростью убывает притяжение к Земле, то из их отношений можно найти отношение массы Земли к массе шара, и далее — массу Земли %)
… ну, хотя фраза «я бы на месте Маска» должна принадлежать Маску или, на худой конец, Гвинн Шотвелл :), однако лично я первому такому клиенту запустил бы бесплатно. Вот второму и последующим желающем летать на однажды-летавшей, уже -10%. Дваждылетавшей -30%, ну и т.д.
Но, ни я, ни вы — не Маск, поэтому — может это и странно, а может, такая скидка самая логичная (если бы были Маском :) )
да ладно, военщина всегда будет запускать только своими ракетчиками. Вон, ULA — сколько получала и получает денег без всяких полетов «за поддержание работоспособности технологий».
Так что и Роскосмос не останется ни без денег, ни без заказов ;)
пока запускают не фонтанами или лифтами, а химическими ракетами — запуски не переносить не выйдет %)
погода, левые самолеты, цунами постоянно будут вносить фактор неопределенности…
однако, несмотря на это все, инженеров SpaceX долго уговаривать на эксперименты не нужно — у них и ракета летает версии 1.2R FT :)
1)… это у меня рука устала писать «первая ступень», поэтому вместо корректного «первая ступень» — там то «ракета», то «ускоритель» %)
Но, я думаю — все понимают, что имеется в виду…
2) Все цифры в тексте — по американским стандартам. Я рядом писал время по гринвичу и имперские меры в единицы Си переводил, но даты решил оставить оригинальные. Так что по владивостоку — может и 1 апреля будет запуск :)
3) главное для меня было — что про SES10 я-то знал, а вот куда они остальные приземлившиеся ступени будут переиспользовать — нет, и тут попалась новость с этого сайта.
напишите лучше что у вас с девушкой вышло в итоге — вот что действительно интересно! :)
Брезенхем же в чем — есть виртуальная шестеренка с К зубцами (если использовать вашу КПДВ и рисовать строки слева направо от 0,0 до W,0 и снизу вверх), на каждый ее шаг «поворота» увеличиваем координату х на 1, а как сделает полный оборот — увеличиваем координату у на 1, т.д — по крайней мере до угла 45 градусов :)
Если больше 45 — то там по столбцам нужно идти. Но идея от єтого не меняется.
При угле поворота картинки 0 градусов — К равно W (т.е. ни разу у не увеличивается), при 45 — К равно 1 (т.е. у увелчивается так же как и х — а каждом шаге).
Так как строчки идут параллельно, то у всех у них будет одинаковый угол — и параметр К. Отличаться только будет координата начала и фаза виртуальной «шестерни». Так что нужно будет честно вычислить только в начале кадра — куда придет 0,0 и какая в этой точке фаза (интуитивно кажется — что можно задать равной 0 — типа начало, но хз, надо нарисовать или попробовать).
После этого — для каждой следуюущей строки можно вычислять только стартовую х_і координату (а у — получить из брезенхема, так как это y_0 + i — (х_0 — х_і) / К. Заодно и дырок между строчками не будет). Начальная фаза при этом будет равна (х_0 — х_і) mod К.
Далее — можно заметить еще, что если размеры (H, W) исходного и результирующего прямоугольников равны, и мы делаем поворот вокруг цента, то если мы сейчас читаем из точки с координатой (х_і, у_і), и после преобразования, ее координаты (х2_і, у2_і) находятся вне результирующего прямоугольника, то это значит, что в результирующем прямоугольнике есть точка (х_і, H — у_і), у которой нужно выставить цвет фона :)
(В принципе, это соображение будет работать при любом угле поворота… вроде бы ...)
если это все можно выразить на верилоге — было бы интересно посмотреть результат :DDD
Тогда можно было бы рисовать тем же формулами, но с вращением координат чтения — что решало бы и проблемы с пропусками точек и с фоном, когда нет данных по краям :)
Ну или сделать конвейер — выделить два массива (рабочий=0 и буфер=1) и текущую точку просто писать в буфер, а на экран в эту же точку выводить из повернутых координат буфера (который был прошлым кадром). После прохода — поменять ссылки на них (рабочий=1 а буфер=0) %)
PS: подумалось — это ж значит можно синтезировать килограммами эту штуку, а потом:
отмерил грамм сто, обработал смесью S1S2, и после внедрения получил одну функцию,
отмерил еще грамм сто, обработал S4 и получил другую функцию,
и т.д. — и не надо перенастраивать производство туда-сюда, а от массовости — цена этих сто грамм совсем другая будет %)
обычно такие программированные бактерии такие нежные, что они в на воле не живут (или их заранее специально лишают умения вырабатывать нужные ферменты, которые потом им добавляют в питательную среду).
Вообще — любой лишний кусок ДНК (т.е. внедренная программа) — только мешает клетке жить и требует дополнительной энергии+веществ на свою работу %)
мм… не совсем очевидно. Увеличение числа роботов — увеличивает продуктивность своего владельца. Как в той шутке про демократию в древней греции, что это: "когда все равны, богаты и даже у самого захудалого землепашца не менее трех рабов" ;)
А вот появление ИИ и даже самых слабых мозов у этих роботов — явным образом и радикально уменьшает занятость...
А, и на закуску — авторы сообщают, что те ~100 функций, которые они сконструировали, они запускали (т.е. внедрили в хромосомы клеток "закладочку", добавили настроечных ферментов и активатора и убедились, что светится зеленым, когда нужно, и не светится — когда не нужно) в клетках печени мышей >:-D
А) Ализар — такой ализар!
Б) Я не настоящий сварщик, но, судя по оригинальной статье — им удалось найти способ, чтобы при помощи пары одинаковых ферментов сделать универсальный логический элемент, который потом можно единообразным соединять в большие цепочки формул.
Собственно — изображения в статье:
0) обозначения — GFP=GreenFluorescentProtein=белок светящийся зеленым. перевернутый — записан в обратную сторону. стрелочка — это маркер начала (без него не начнется считывание цепочки). Т — терминатор, на нем считывание принудительно останавливается. цветные треугольники — разные маркеры, пакманы — ферменты (тоже белки, как и GFP, только для других целей)
картинка 1) традиционный подход — фермент А вырезает красные маркеры, фермент В — синие, на выходе — какой-то из четырех белков (разной фиолетовости)
картинка 2)
а= показана работа фермента рекомбиназы (вырезает блокирующий терминатор) и интегразы (переворачивает белок), обащается внимание, что ферменты работают только со своими маркерами.
б=показано, насколько они специфично подходят друг к другу. т.е. позволяют создавать цепочки (т.е. чтобы вместо GFP вырабатывать другой фермент), которые не будет мешать друг другу.
с=пример "6-И", когда нужно присутствие всех 6 ферментов, чтобы "перевернуть" признак старта в нормальное состояние, убрать все терминаторы и также "перевернуть" результирующий белок. ( заметьте, что комбинация 111110 таки дает небольшое свечение :) И вообще — при наличии первого фермента — больше шансов для ошибки %) )
рисунок 3) подробно расписан их универсальный логический элемент. В принципе — то же, что и на картинке 1, только с добавлением 4х "настроечных" маркеров (розовый, голубой, оранжевый и коричневый). Так что при отсутствии и А и В — работает участок Z00, при А — Z10 (Z00 и Z01 — вырезаны), при В — Z01 (ибо вырезан веськусок с Z00 по Z10), а когда и А и В — то там остается только Z11. Причем, по умолчанию — ни один из них не работает без своих активаторов (S1-S4)
Смысл этого всего — что достаточно только 2х белков-ферментов "посредине" с разными маркерами, и набора разнообразных маркеров, чтобы из входа "белок-активатор" получить "белок-результат" по нужной формуле: активатор А+В ==>( ф-ция(A,B)->C, ф-ция(A,B)->D, ф-ция(C,D)->E,… ) ==> ф-ция(*, Е)->результат F.
Обратите внимание, что такие вычисляются только один раз — при первом проходе, а дальше продолжают выдавать один и тот же результат (изза того, что ферменты вырезают и поворачивают). Хотя, насколько я понял оригинальную статью, дополнительный недеструктивный активатор (который можно включать и выключать) можно влючить в самую последнюю цепочку — чтобы не делать холостую работу. А для нового вычисления — внедрять исходную комбинацию заново %)
однако, я повторюсь — я не в теме вообще, а просто водянистость перевода заставила почитать оригинальную статью %)
1) во-первых, сам по себе никто не будет добавлять себе забот (а тем более — "власть имущие"), так что сначала будут нео-луддиты, а только потом уже "отрыв тела от стула и поработать"
2) во-вторых, каким будет новое "правильное" распределение налогов — никто на самом деле не знает. То ли роботов облагать доп.налогом, то ли людям давать пособия %)
это, скорее всего из-за тяготения к древнегреческому (ибо алфавит) происхождению имен.
Оно использовалось для поиска G из формулы
F = G * m1 * m2 / R^2
массы шаров известны, расстояние — меняется при помощи поворотного круга под потолком.
Сила — действует на коромысло маленьких шаров ( как и на подвес больших) и уравновешивается (умноженное на длину рычага) отклонением подвеса. Вот, наблюдая за этим отклонением (ИМХО там такой длинный микросокоп, а не телескоп), считают отклонение, переводят в силу и получают G.
ИМХО, для нахождения массы земли можно делать проще — если посчитать соотношение, с какой скоростью убывает сила притяжения к эталонному шару, то посмотрев — с какой скоростью убывает притяжение к Земле, то из их отношений можно найти отношение массы Земли к массе шара, и далее — массу Земли %)
Но, ни я, ни вы — не Маск, поэтому — может это и странно, а может, такая скидка самая логичная (если бы были Маском :) )
Так что и Роскосмос не останется ни без денег, ни без заказов ;)
погода, левые самолеты, цунами постоянно будут вносить фактор неопределенности…
однако, несмотря на это все, инженеров SpaceX долго уговаривать на эксперименты не нужно — у них и ракета летает версии 1.2R FT :)
Но, я думаю — все понимают, что имеется в виду…
2) Все цифры в тексте — по американским стандартам. Я рядом писал время по гринвичу и имперские меры в единицы Си переводил, но даты решил оставить оригинальные. Так что по владивостоку — может и 1 апреля будет запуск :)
3) главное для меня было — что про SES10 я-то знал, а вот куда они остальные приземлившиеся ступени будут переиспользовать — нет, и тут попалась новость с этого сайта.