Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    119

    [VB.NET] Calcolo .... non ci arrivo

    Sempre sui joystick
    Il valore massimo impostato nel dx è 99
    quindi il joy in posizione
    centrale mi da 50
    tutto a sx 1
    tutto a dx 99

    ora vorrei limitare il valore ma senza variare l'impostazione massima 99 mantenendo il valore 50 nella posizione centrale.
    Cioè vorrei avere che
    tutto a sx mi dia un valore tipo 20
    tutto a dx mi dia un valore tipo 80
    pur mantenendo il valore 50 al centro.

    Come lo faccio questo calcolo ?

    Grazie, Alberto

  2. #2
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308
    x' = 60 (x-1) / 99 + 20

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    119
    perchè x' ?
    60 ? (x-1)

  4. #4
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308
    Questo è il calcolo per cui se x (qualunque cosa sia, per esempio la posizione del joy) va da 1 a 100, x' (nuovo valore di posizione del joy) va da 20 a 80 e si mantiene lo stesso centro a 50.
    O forse non ho capito un tubo di quello che cercavi?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sembra che tu non sappia che

    60 (x-1)

    significhi 60 moltiplicato x-1
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    x'=(x-base)/range*nuovorange+nuovabase

    Dove base è il valore di partenza e range è la differenza fra valore massimo e minimo
    Questa è l'equazione di escocat
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    119
    Ora so che non sapevo anche questa!!
    @escocat: hai capito benissimo !!

    Questo pezzo di codice è nel polling del joystick.

    SendXVal contiene il valore della posizione dell'asse precedente
    Viene confrontato se il valore corrente è diverso da quello precedente e
    se diverso invia sulla seriale il nuovo valore

    If SendXval <> CurrXval Then
    'Formatto la stringa se inferiore a 10 aggiungendo uno 0
    ComCamera.Write("#P" & String.Format("{0:d2}", CurrXval) & Chr(13))
    SendXval = CurrXval
    End If

    dato ciò come potrei applicare questo calcolo ?

    Grazie, Alberto

  8. #8
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308
    CurrXval = (CurrXval - base) / range * nuovorange + nuovabase

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    119
    Minchia non ci arrivo

    CurrXval = (CurrXval - base) / range * nuovorange + nuovabase

    Se CurrXVal è il valore dell'asse e range è 99 cioè il valore massimo dell'asse
    base è = CurrXVal ?
    nuovorange e nuovabase che valore assumono?

    Grazie ancora, Alberto

  10. #10
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308
    Nelle condizioni iniziali, CurrXval assume valori da 1 a 100. Giusto? E la metà sta dunque a 50. In queste condizioni iniziali

    base = 1
    range = 99 (=100-1)

    Tu vuoi che CurrXval vada, invece, da 20 a 80, mantenendo il centro a 50. Dunque:

    nuovabase = 20
    nuovorange = 80 - 20 = 60

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.