Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Di quale angolo debbo ruotare?

Problemi curiosi e quiz vari.

Moderatore: Foto Utentecarlomariamanenti

0
voti

[1] Di quale angolo debbo ruotare?

Messaggioda Foto UtenteEcoTan » 9 apr 2019, 15:49

Un problema pratico:
conosciamo due angoli: un angolo attuale e un angolo desiderato, entrambi riferiti sul piano alla stessa semiretta e misurati positivamente in senso antiorario. Entrambi gli angoli sono misurati in radianti e sono noti numericamente, con valori sempre compresi fra zero e 2*pigreco e qui sta la difficoltà.
Vorrei semplicemente determinare l'angolo, positivo o negativo, di cui dobbiamo incrementare l'angolo attuale per portarlo a coincidere con l'angolo desiderato, per la via più breve che certamente sarà <= di mezzo giro verso destra o sinistra. Sembra una banalità ma se cerco di scrivere un programma che a partire dai due angoli, attuale e desiderato, calcola in tutti i casi la rotazione più breve definita come sopra, stento parecchio.
Avatar utente
Foto UtenteEcoTan
5.320 4 10 13
Expert EY
Expert EY
 
Messaggi: 3145
Iscritto il: 29 gen 2014, 8:54

0
voti

[2] Re: Di quale angolo debbo ruotare?

Messaggioda Foto Utenterichiurci » 9 apr 2019, 15:54

Desiderato-attuale= rotazione necessaria, il segno indica il verso di rotazione....non capisco il problema che hai
Avatar utente
Foto Utenterichiurci
27,1k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7429
Iscritto il: 2 apr 2013, 16:08

0
voti

[3] Re: Di quale angolo debbo ruotare?

Messaggioda Foto UtenteDrCox » 9 apr 2019, 16:17

richiurci ha scritto:Desiderato-attuale= rotazione necessaria, il segno indica il verso di rotazione....non capisco il problema che hai

Vuole ruotare nella direzione a distanza minima. Se angolo finale=359° ed angolo iniziale=1°, non vuole ruotare in senso antiorario di 358°, ma vuole andare in senso orario di 2°

Un modo è calcolare la differenza tra l'angolo finale ed iniziale \delta = \Theta_f - \Theta_i ed entri in un IF:
- se |\delta| < \pi, ruoti in senso antiorario di \delta (nota che può essere negativo, portandoti di fatto ad una rotazione in senso orario)
- se |\delta| > \pi, ruoti in senso orario di |2\pi - \delta|\text{sgn}(\delta)

Poi possiamo ragionare su quale sia il modo realmente più efficiente.
Vuoi evitare degli IF? Si può compattare tutto in un'unica espressione. Quali funzioni hai a disposizione? Puoi usare ad esempio le funzioni arcotangente/segno?
"The past is not really the past until it has been registered. Or put another way, the past has no meaning or existence unless it exists as a record in the present."
John Archibald Wheeler
Avatar utente
Foto UtenteDrCox
2.290 1 8 12
Master
Master
 
Messaggi: 569
Iscritto il: 8 giu 2010, 21:42
Località: Zurigo

0
voti

[4] Re: Di quale angolo debbo ruotare?

Messaggioda Foto UtenteEcoTan » 9 apr 2019, 16:45

Purtroppo mi sono spiegato malissimo, adesso cerco di rimediare.
Non è che debbo calcolare propriamente l'angolo.
Il programma comanda i motori di un robottino perciò in base alla conoscenza dei due angoli, attuale e desiderato, entrambi espressi fra zero e 2*pigreco, bisogna trovare quanto segue:
1) Se bisogna ruotare verso destra o verso sinistra per la via più breve
2) quale è la condizione logica che bisogna testare, riguardante l'angolo attuale (corrente cioè variabile in tempo reale) e l'angolo desiderato (costante fisso), per arrestare il movimento di rotazione allorchè la direzione desiderata è stata raggiunta (o oltrepassata di poco).
Avatar utente
Foto UtenteEcoTan
5.320 4 10 13
Expert EY
Expert EY
 
Messaggi: 3145
Iscritto il: 29 gen 2014, 8:54

0
voti

[5] Re: Di quale angolo debbo ruotare?

Messaggioda Foto UtenteDrCox » 9 apr 2019, 17:13

EcoTan ha scritto:1) Se bisogna ruotare verso destra o verso sinistra per la via più breve


Per questo punto direi che vale la mia precedente risposta

EcoTan ha scritto:2) quale è la condizione logica che bisogna testare, riguardante l'angolo attuale (corrente cioè variabile in tempo reale) e l'angolo desiderato (costante fisso), per arrestare il movimento di rotazione allorchè la direzione desiderata è stata raggiunta (o oltrepassata di poco).

Per questo punto devi solo verificare se c'è un cambio di segno in \delta = \Theta_f - \Theta_i. Appena il segno si inverte hai raggiunto l'angolo.
Non testare la condizione \delta = \Theta_f - \Theta_i = 0 in quanto lo zero esatto è impossibile da beccare.
"The past is not really the past until it has been registered. Or put another way, the past has no meaning or existence unless it exists as a record in the present."
John Archibald Wheeler
Avatar utente
Foto UtenteDrCox
2.290 1 8 12
Master
Master
 
Messaggi: 569
Iscritto il: 8 giu 2010, 21:42
Località: Zurigo

0
voti

[6] Re: Di quale angolo debbo ruotare?

Messaggioda Foto UtenteEcoTan » 9 apr 2019, 17:41

DrCox ha scritto:Un modo è calcolare la differenza tra l'angolo finale ed iniziale \delta = \Theta_f - \Theta_i ed entri in un IF:
- se |\delta| < \pi, ruoti in senso antiorario di \delta (nota che può essere negativo, portandoti di fatto ad una rotazione in senso orario)
- se |\delta| > \pi, ruoti in senso orario di |2\pi - \delta|\text{sgn}(\delta)

Se finale=1, iniziale=359, delta=-358 vale la seconda ipotesi e quella differenza di cui debbo ricavare il modulo
|2\pi - \delta|\text{sgn}(\delta)
essendo delta negativo, viene eccessiva
Avatar utente
Foto UtenteEcoTan
5.320 4 10 13
Expert EY
Expert EY
 
Messaggi: 3145
Iscritto il: 29 gen 2014, 8:54

0
voti

[7] Re: Di quale angolo debbo ruotare?

Messaggioda Foto UtenteDrCox » 9 apr 2019, 17:50

EcoTan ha scritto:Se finale=1, iniziale=359, delta=-358 vale la seconda ipotesi e quella differenza di cui debbo ricavare il modulo
|2\pi - \delta|\text{sgn}(\delta)
essendo delta negativo, viene eccessiva

Giusto, svista, il modulo va sul delta
"The past is not really the past until it has been registered. Or put another way, the past has no meaning or existence unless it exists as a record in the present."
John Archibald Wheeler
Avatar utente
Foto UtenteDrCox
2.290 1 8 12
Master
Master
 
Messaggi: 569
Iscritto il: 8 giu 2010, 21:42
Località: Zurigo


Torna a Ah, ci sono!

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite