???
Математика на уровне МГУ

Показано с 1 по 8 из 8

Тема: Убираем нелинейность без переделки

  1. #1
    Заявка на ПМЖ
    Регистрация
    28.08.2011
    Возраст
    40
    Сообщений
    15

    Убираем нелинейность без переделки

    Данный пост не претендует на истину, всё описанное очень субъективно.
    Купив в своё время х52 начал читать форумы и узнал о "зловещей" нелинейности двух главных цифровых осей. Конечно-же я тоже переделал свой х52. Но результатом я лично остался недоволен, почему? Убрав нелинейность, я получил относительно неточный джой в центре, мне даже пришлось выставлять мёртвые зоны, чего раньше я не делал. Более того, мне пришлось накручивать кривые отклика в настройках управления (я играю в ДКС Мире, как и что в других вообще без понятия). Иными словами я, убрав аппаратную нелинейность, потом добавил её программно, тогда я себе и задал вопрос – а зачем я это всё делал? Ну да ладно сделал и ладно.
    Затем, общаясь на форуме, зашёл у меня спор с другим обладателем х52 по поводу всё той же нелинейности. Говорю ему, если у тебя новый джой на гарантии, то необязательно его разбирать, можно просто выкрутить кривую отклика в обратную сторону и получишь прямой отклик на РУСе. На что он со мной не согласился, мол, так а квадрат в джой-тестере как рисовался, так и рисуется. Ну, в общем, у меня и у него не было желания доказывать свою правоту, каждый остался при своём.
    Меня эта тема не интересовала, меня интересовала тема дрожания нецифровых осей и я её успешно решил. http://www.sukhoi.ru/forum/showthrea...31#post2012131
    А потом в один день мне в голову пришла мысль, а что если с помощью этого-же метода убрать нелинейность? Суть метода в принципе практически ничем не отличается от настройки кривой отклика в самой игре, НО теперь можно будет рисовать заветные круги в джой-тестере. И если человек не хочет разбирать свой джой, или он по своим «религиозным» убеждения уверен, что самое главное это круги в джойтестере, то этот метод для него.
    В общем ближе к делу. Ссылки на программы и методы их установки я давал в своём посте про дрожание осей.
    А здесь я опишу скрипт, который убирает нелинейность.
    //**********************
    var.x = joystick1.x //читаем в переменную х состояние оси х
    var.y = joystick1.y //читаем в переменную y состояние оси y
    //**********************
    if var.x<0 then
    var.x1 = |var.x|
    var.x1 = sqrt(var.x1)
    var.x1 *=-1
    ppjoy.Analog0 = Smooth(var.x1,10,0.0001)
    else
    var.x1 = sqrt(var.x)
    ppjoy.Analog0 = Smooth(var.x1,10,0.0001)
    end if
    //**********************
    if var.y<0 then
    var.y1 = |var.y|
    var.y1 = sqrt(var.y1)
    var.y1 *=-1
    ppjoy.Analog1 = Smooth(var.y1,10,0.0001)
    else
    var.y1 = sqrt(var.y)
    ppjoy.Analog1 = Smooth(var.y1,10,0.0001)
    end if
    //**********************

    Дам некоторый комментарий. Первая нелинейная ф-ция которая мне вспомнилась это квадрат числа, но поскольку значения оси принимают значения от -1 до 1 она сама собой отпала. Следующей была куб. Чтобы из нелинейной ф-ции х в кубе получить линейную мне надо был корень в степени 3, но у меня почему-то не получилось заставить работать ф-цию x в степени y, поэтому я махнул рукой и взял обыкновенный квадратный корень, вот тут и возникла проблема с чётностью, поэтому я проверяю состояние оси и если она меньше 0 то я беру корень из модуля оси а уже затем умножаю его на -1.
    Ну и легенькое сглаживание при записи значения в ось виртуального джоя, но это совсем уже индивидуально, многие этого не любят категорически, можно убрать при желании.
    В результате получил такой результат:
    До
    Нажмите на изображение для увеличения. 

Название:	NLA.png 
Просмотров:	222 
Размер:	18.5 Кб 
ID:	170641
    После
    Нажмите на изображение для увеличения. 

Название:	LA.png 
Просмотров:	255 
Размер:	19.6 Кб 
ID:	170642
    Надеюсь кому-то пригодиться!

  2. #2
    Заявка на ПМЖ
    Регистрация
    28.08.2011
    Возраст
    40
    Сообщений
    15

    Re: Убираем нелинейность без переделки

    Добавлю ещё пару строк. Поскольку в первой редакции скрипта я использовал ф-цию квадратного корня, то скрипт имел характер константы.
    Сегодня переделал. Как я уже упоминал ф-ция power(x,y) у меня почему-то не работает, поэтому я немного схитрил и пошёл другим путём.
    Вместо var.x1 = sqrt(var.x1), я использовал var.x1 = exp(0.58*ln(var.x1)).
    Тоест x в степени y я записал как exp(y*ln(x)). в данном случае 0,58 это 1/7, тоесть я беру корень в степени 1/7, квадратный както великоват оказался.
    Меняя это значение вы можете менять кривую отклика осей.

    Результат:
    Вложение 170657

  3. #3

    Re: Убираем нелинейность без переделки

    очень красиво, а теперь для чайников, если не сложно, что куда нужно вствить? ))))
    PPJoy можно ли заменить на VJoy?

  4. #4
    Заявка на ПМЖ
    Регистрация
    28.08.2011
    Возраст
    40
    Сообщений
    15

    Re: Убираем нелинейность без переделки

    Да ничего никуда вставлять не надо, когда я искал способ, мне попадался VJoy и, если я не ошибаюсь, он тоже вполне подходит, но я не пробовал, у вас есть прекрасная возможность это сделать. Если у вас уже стоит VJoy, то вам необходимо только скачать GlovePIE(даже устанавливать не надо) и запустить скрипт. Единственно что в скрипте вместо оси ppjoy.AnalogХ прийдётся писать имя виртуального джоя, вероятней всего VJoy.AnalogХ.

  5. #5

    Re: Убираем нелинейность без переделки

    вот спасибо, вечером попробую,
    уж очень не хочется курочить новый джойстик

  6. #6
    Заявка на ПМЖ
    Регистрация
    28.08.2011
    Возраст
    40
    Сообщений
    15

    Re: Убираем нелинейность без переделки

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

  7. #7
    Зашедший Аватар для Lordus
    Регистрация
    08.07.2005
    Адрес
    Белгород
    Возраст
    40
    Сообщений
    56

    Re: Убираем нелинейность без переделки

    Другая сторона медали физической переделки джоя, например х52про, это то что убирается люфтящая шестеренчатая передача. В итоге только лучше становится.

    По кондору http://www.sukhoi.ru/forum/showthrea...t=40261&page=2

  8. #8
    Заявка на ПМЖ
    Регистрация
    28.08.2011
    Возраст
    40
    Сообщений
    15

    Re: Убираем нелинейность без переделки

    Оно то возможно и так, но лично у меня центр стал очень не точным.

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •