Типо

ZX evolution software and hardware

Postby robat_e » 13 Jan 2011, 06:57

гы. вот до чего доводит рисовательство мышкой :) еще раз повторюсь - qaop+space=рулез
robat_e
 
Posts: 1269
Joined: 08 Apr 2007, 07:34
Group: Registered users

Postby CAMAHACYKE » 13 Jan 2011, 08:53

jdigreze wrote:Мышкой не пробовал медленнее вошкать?

Привычка - вторая натура. Иногда легче забить чем переучиться.
deathsoft wrote:Тут опять же лучше не в лужу пердеть, а матчасть курить Линейная интерполяция

Мля, ты че, в серьёз предлагаешь на спектрум в драйвер мыши все эти вычисления повесить? И еще изйэбнуццо што б было фреймово?
И даже в этом случае если от руки бысто проводишь овал он имхо не плавным, а ломаным выйдет.
deathsoft wrote:Если опросов слишком дохуя, например 20000 за фрейм то у тебя просто точки будут на одну и туже координату попадать (тупо друг поверх друга будешь лепить, но при этом если мышью резко повести линия все равно с разрывом будет).

Ну если точку дважды в одну координату поставить - хуже не станет. А что бы разрывов не было нужно просто опрос чаще проводить. У меня при 15 чтениях на фрейм разрывов не было.
User avatar
CAMAHACYKE
 
Posts: 510
Joined: 26 Sep 2007, 19:27
Group: Registered users

Postby CAMAHACYKE » 13 Jan 2011, 08:57

robat_e wrote:гы. вот до чего доводит рисовательство мышкой еще раз повторюсь - qaop+space=рулез

Ну я не могу так вычерчивать, я рисую быстрыми неряшилвыми штрихами, а потом убираю лишнее и добавляю недостающее, увеличением не пользуюсь, когда надо точно поставить точку - замедляю мышь. Так что твоя манера - твоя особенность. Не могут же все рисовать как РобатЁ!
User avatar
CAMAHACYKE
 
Posts: 510
Joined: 26 Sep 2007, 19:27
Group: Registered users

Postby psb » 13 Jan 2011, 09:04

не, описываемая проблема - понятная. чаще опрашивают именно для того, чтобы более четко повторять движение мыши. даже если рисовать линию, при резких движениях она будет ломаная. может у CAMAHACYKE метод рисования такой:)
даже на реалах в конце 90х очень частый опрос не считался ламерством:) даже наоборот:)
psb
 
Posts: 31
Joined: 05 May 2010, 08:57
Group: Registered users

Postby deathsoft » 13 Jan 2011, 13:27

CAMAHACYKE wrote:А что бы разрывов не было нужно просто опрос чаще проводить.

Чтобы разрывов не было, надо диапазон дельт выдаваемых мышью (мышь только приращения отдает а не абсолютные координаты) привести к диапазону понимаемому спектрумом (-128...+127 или 0..255, я хз какой там диапазон) а если брать просто младший байт от дельты то будешь получать просто рандом и мышь будет просто дрочится по экрану из угла в угол. 15 опросов за фрейм - это 1.33мс на опрос, за 1.33мс ты мышь вообще никуда не сдвинешь. Даже 1 раз за фрейм - это 20мс врядли ты мышь за это время сдвигаешь дальше чем на пару милиметров.

А теперь посмотри на сколько милиметров ты двигаешь мышь, чтобы курсор проехал весь экран (хотябы по горизонтали), там всего 256 точек, сколько времени это занимает, и посчитай сколько опросов для этого нужно.
User avatar
deathsoft
 
Posts: 4744
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby CAMAHACYKE » 13 Jan 2011, 13:37

Поэкспериментировал в эмуляторе, который Дэзсофт саппортит (знаешь ведь Дэзсофта?) - отлично реагирует на частый опрос.
Попробовал сделать опрос 200 раз в секунду, это по 4 опроса за фрейм, с применением примитивного алгоритма заполнения разрывов между точками и вынужден с тобой согласиться :
deathsoft wrote:при опросе 60-200 раз в секунду (это всего 1-3 раза за фрейм) линии без разрывов в редакторах получаются

получается вроде бы нормально, косяков не обнаруживаю.
Поэкспериментирую еще.
User avatar
CAMAHACYKE
 
Posts: 510
Joined: 26 Sep 2007, 19:27
Group: Registered users

Postby deathsoft » 13 Jan 2011, 13:59

CAMAHACYKE wrote:Поэкспериментирую еще.

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

Для спектрума дырки между точками надо заполнять вот по этому алгоритму Алгоритм Брезенхема (он без деления), и никак иначе
User avatar
deathsoft
 
Posts: 4744
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby CAMAHACYKE » 13 Jan 2011, 19:01

deathsoft wrote:Для спектрума дырки между точками надо заполнять вот по этому алгоритму Алгоритм Брезенхема (он без деления), и никак иначе

Ну ты ж понимаешь что не получится совсем без деления, ведь для меньшей дельты по любому величину ошибки надо вычислять!
Это во-первых.
А во-вторых все это имеет смысл делать если скорость опроса мыши можно увеличить хотя бы в 3 раза, а лучше в 4! Иначе за фрейм слишком большие промежутки между точками и плавные линии станут сильно ломанными. Тогда придется либо по черепашьи елозить мышь, либо вообще нах ее выкинуть и чертить как робат кнопками! В принципе кроме рисования, ну еще ЧВ мышь больше нигде на спектруме и нужна так особенно что бы иметь решающее значение.
User avatar
CAMAHACYKE
 
Posts: 510
Joined: 26 Sep 2007, 19:27
Group: Registered users

Postby deathsoft » 13 Jan 2011, 19:04

CAMAHACYKE wrote:Ну ты ж понимаешь что не получится совсем без деления, ведь для меньшей дельты по любому величину ошибки надо вычислять!
Это во-первых.

Я же ссылку дал, смотри там оптимизированный алгоритм, там только суммы и разности ЦЕДЫХ чисел.

Проблема такого подхода — в том, что с вещественными величинами, такими как error и deltaerr, компьютеры работают относительно медленно. Кроме того, при вычислениях с плавающей точкой может накапливаться ошибка. По этим причинам, лучше работать только с целыми числами. Это можно сделать, если умножить все используемые вещественные величины на deltax. Единственная проблема — с константой 0.5 — но в данном случае достаточно умножить обе части неравенства на 2.
Получаем следующий код:

Code: Select all
function line(x0, x1, y0, y1)
     int deltax := abs(x1 - x0)
     int deltay := abs(y1 - y0)
     int error := 0
     int deltaerr := deltay
     int y := y0
     for x from x0 to x1
         plot(x,y)
         error := error + deltaerr
         if 2 * error >= deltax
             y := y + 1
             error := error - deltax

Где тут хоть одно деление?
User avatar
deathsoft
 
Posts: 4744
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby CAMAHACYKE » 13 Jan 2011, 19:53

Чего ты в меня этими буковами тычешь? Я тут только "еггог" понимаю. Ну еще плот, если он такой же как в басике. Догадываюсь что фор это цикл, а что такое инт, и что за двоеточие и равно? Откуда берется начальное значение наименьшей дельты (той которую надо прибавлять к ошибке перед тем как сравнивать со значением 0,5)?
Может ты думаешь что я програмист? Так вот ты совсем не так думаешь!
User avatar
CAMAHACYKE
 
Posts: 510
Joined: 26 Sep 2007, 19:27
Group: Registered users

PreviousNext

Return to Пентева - софт и железо

Who is online

Users browsing this forum: No registered users and 41 guests

cron