PDA

View Full Version : Proporzioni


okay
01-09-2005, 07:59
ho a disposizione dei valori reali e devo proporzionarli a valori per il codice:

queste sono velocità reale delle marce
1 130 km/h
2 170 km/h
3 215 km/h
4 242 km/h
5 293 km/h
6 330 km/h

la velocità media è 151.11 km/h

come unico dato ho 27 che è la velocità media dei calcoli del pc

io a mano ho proporzionato i valori delle marce reali a valori del codice tipo:

1 17
2 25
3 30
4 33
5 37
6 41

ma non sono soddisfatto della loro precisione

Allora mi sono ricordato delle proporzioni quelle delle medie e ho fatto questi calcoli:
151.11 : 27 = 330 : x

quindi queste sono le proporzioni calcolate:

1 151.11 : 27 = 130 : 23.22
2 151.11 : 27 = 170 : 30.37
3 151.11 : 27 = 215 : 38.41
4 151.11 : 27 = 242 : 43.24
5 151.11 : 27 = 293 : 52.35
6 151.11 : 27 = 330 : 58.96

ecco anche questi valori, dopo le prove effettuate non mi soddisfano secondo voi il procedimento è giusto oppure ho sbagliato tecnica per rilevare i rapporti oppure è giusto ma ho sbagliato a calcolare??

repne scasb
01-09-2005, 09:01
ho a disposizione dei valori reali e devo proporzionarli a valori per il codice:

queste sono velocità reale delle marce
1 130 km/h
2 170 km/h
3 215 km/h
4 242 km/h
5 293 km/h
6 330 km/h

la velocità media è 151.11 km/h

come unico dato ho 27 che è la velocità media dei calcoli del pc

Quindi, 27 e' equiparabile a 151.11 (credo di aver capito), a meno di conversione sull'unita' di misura.

io a mano ho proporzionato i valori delle marce reali a valori del codice tipo:

1 17
2 25
3 30
4 33
5 37
6 41

ma non sono soddisfatto della loro precisione

Questa conversione non e' lineare.

Allora mi sono ricordato delle proporzioni quelle delle medie e ho fatto questi calcoli:
151.11 : 27 = 330 : x

quindi queste sono le proporzioni calcolate:

1 151.11 : 27 = 130 : 23.22
2 151.11 : 27 = 170 : 30.37
3 151.11 : 27 = 215 : 38.41
4 151.11 : 27 = 242 : 43.24
5 151.11 : 27 = 293 : 52.35
6 151.11 : 27 = 330 : 58.96

ecco anche questi valori, dopo le prove effettuate non mi soddisfano secondo voi il procedimento è giusto oppure ho sbagliato tecnica per rilevare i rapporti oppure è giusto ma ho sbagliato a calcolare??

Questa conversione e' lineare. Desumo che il motivo della "non soddisfazione" dipenda dal fatto che, il rapporto velocita' reale/valore nel codice non e' una costante ma dipende probabilmente dalla velocita' reale medesima. Ossia sia 'v' la velocita' reale, sia 'c' il valore del codice nel punto medio, tu hai estrapolato:

y=v(x)*c/v

dove v(x) e' una velocita' reale generica, e y e' l'equivalente valore di velocita' nel codice. Tu hai assunto che il paramentro di conversione sia una costante ossia che c/v sia una costante pari a 0.178677784395... in realta' e' possibile che la funzione di conversione sia:

y=v(x)*c(x)/v

e che quindi non esista una proporzionalita' lineare tra la velocita' reale e il valore nel codice. E' possibile comunque risolvere il problema, grazie a metodi di interpolazione mediante funzioni non lineari, ma oltre al punto (27,151.11) mi servirebbero altri punti di conversione soddisfacenti.

okay
01-09-2005, 10:42
ciao repne scasb........tx

sto facendo una simulazione e tutto gira sui tempi per metterti sulla strada giusta per aiutarmi allora ti devo dire anche questo e fornirti i dati da te richiesti:

Ho una spline.x (linea) che è formata da tot vertici tra un vertice e l'altro ho la lunghezza del vettore ora sommando tutti i vettori io ottengo totpath che è la lunghezza del circuito/percorso.

Muovo una sfera/e sulla spline.x (linea) che identifica il circuito/percorso con la formula scritta sotto trovo la velocità media a cui deve andare la sfera per compiere un giro in un tot tempo ed è perfetto la sfera compie un giro completo per esempio in 1.39.456 un min 39 sec. e 456 milles

ecco:
pObject[0].VelMedia[i] = TotPath /(60*pObject[0].Tm[i]+pObject[0].Ts[i]+pObject[0].Tl[i]/1000.0); //*3.6

Ad ogni giro assegno i tempi alla sfera in modo random che oscillano tra 1.41.234 e 1.38.234
pObject[0].VelMedia[i] quindi è la velocità media e suo valore oscilla tra 26.33 e 27.33 per compiere un giro completo nel tempo stabilito che è 1.39.456 come puoi vedere dal commento non calcolo *3.6 perchè totpath naturalmente non è in m/s.

Ora (ed è quello che devo rapportare) mi hanno passato le velocità reali in cui la sfera deve avere un andatura media da tratto a tratto che sono in km/h:

TRATTI_VEL[0]=160.0f;
TRATTI_VEL[1]=165.0f;
TRATTI_VEL[2]=75.0f;
TRATTI_VEL[3]=135.5f;
TRATTI_VEL[4]=170.0f;
TRATTI_VEL[5]=225.0f;
TRATTI_VEL[6]=276.0f;
TRATTI_VEL[7]=160.0f;
TRATTI_VEL[8]=170.0f;
TRATTI_VEL[9]=180.0f;
TRATTI_VEL[10]=330.0f;

ecco questi sono le velocità che in questi tratti la sfera deve andare (il motivo sono le curve ecc,ecc) per esmpio nel tratto [0] la sfera deve andare ad una velocità di 160 km/h infatti nel tratto TRATTI_VEL[10]=330.0f; la sfera và a 330 km/h come passa al tratto TRATTI_VEL[0]=160.0f; io faccio questo:

pAI->Agg=(pAI->VelMedia[pAI->GiriTotali]*TRATTI_VEL[10])/pAI->MediaMarce/3.6;
if(pAI->Vel>pAI->Agg)
pAI->Vel-=0.1;
if(pAI->Vel<pAI->Agg)
pAI->Vel+=0.0036;

in questo caso dato che andava a 330 km/h ne diminuisco la velocità fino ad assestarla sui 160 km/h

il mio problema è che funziona ma non faccio più il giro nel tempo stabilito in pratica il tempo che impiega è molto minore invece di girare in 1.38.234 mi gira in 1.30.234.

ho la vaga sensazione che il problema sia quì
if(pAI->Vel>pAI->Agg)
pAI->Vel-=0.1;
if(pAI->Vel<pAI->Agg)
pAI->Vel+=0.0036;

0.1; e 0.0036; sono valori che vanno bene se faccio girare la sfera solo e sempre alla velocità media (cosa che non và bene in quanto un oggetto non può fare curve sempre a 180 km/h)

come invece faccio questo rapporto:
pAI->Agg=(pAI->VelMedia[pAI->GiriTotali]*TRATTI_VEL[10])/pAI->MediaMarce/3.6;
//ovvero (27*330)/(27*3.6)

non riesco a fare il giro nel tempo stabilito

spero di essere stato chiaro (spero!!!)

okay
01-09-2005, 11:10
Aggiunta:

credo che il problema sia l'accelerazione e la frenata:

lo desumo leggendo la tua risposta:

y=v(x)*c/v

dove v(x) e' una velocita' reale generica, e y e' l'equivalente valore di velocita' nel codice. Tu hai assunto che il paramentro di conversione sia una costante ossia che c/v sia una costante pari a 0.178677784395... in realta' e' possibile che la funzione di conversione sia:

y=v(x)*c(x)/v



io invece uso per la velocità e la frenata valori costanti:
pAI->Vel-=0.1;
pAI->Vel+=0.0036;

...... e questi valori sopra non dovrei usarli come costanti (come sopra) ma devono essere rapportati anche loro..... anche se al primo giro è naturale che il tempo sia maggiore di un tot perchè le sfere partono da ferme ma dal secondo giro in poi i tempi dovrebbero essere abbastanza vicini.

Credo che devo trovare questo rapporto di accelerazione e frenata che per il momento non sò come ottenerlo.... cmq in attesa di tue spiegazioni provo a trovarlo

repne scasb
01-09-2005, 11:34
Non mi e' chiaro il problema, dovresti specificare:

0) Velocita' iniziale (credo 0).
1) Velocita' sostenuta per ogni tratto.
2) Lunghezza di ogni tratto.
3) Costante di deceleraizione/accellerazione nei cambi di velocita ad inizio/fine tratto o tempi/spazi per completare l'accelerazione/decellerazione.
4) Dove inizia l'accelerazione/decelerazione (prima della fine del tratto, dopo la fine del tratto, parzialmente sul bordo del tratto).

Con questi dati e' possibile effettuare una simulazione molto primitiva del moto della sfera. Per una simulazione piu' corretta sarebbero necessari:

1) Coefficienti di penetrazione del fluido in cui e' immrsa la sfera.
2) Modulo/direzione/verso di altra forze energetiche a cui e' sottoposta la sfera (gravita', campi di forza...).
3) Caratteristiche di dispersione termica a cui la sfera e' sottoposta per attrito con il fluido in cui e' immersa e che ne possa variare il moto.

Per una simulazione molto precisa dovresti indicare:

1) Caratteristiche chimico/fisiche del materiale fluido/sfera.
2) Condizioni termodinamiche, e risposte termodinamiche nel moto della sfera.
3) Gradienti termici/di pressione/flussi di particelle fluide, fenomeni di turbolenza/campi di variabili cinetiche....

okay
01-09-2005, 12:00
Non mi e' chiaro il problema, dovresti specificare:

0) Velocita' iniziale (credo 0).
1) Velocita' sostenuta per ogni tratto.
2) Lunghezza di ogni tratto.
3) Costante di deceleraizione/accellerazione nei cambi di velocita ad inizio/fine tratto o tempi/spazi per completare l'accelerazione/decellerazione.
4) Dove inizia l'accelerazione/decelerazione (prima della fine del tratto, dopo la fine del tratto, parzialmente sul bordo del tratto).

Con questi dati e' possibile effettuare una simulazione molto primitiva del moto della sfera. Per una simulazione piu' corretta sarebbero necessari:

1) Coefficienti di penetrazione del fluido in cui e' immrsa la sfera.
2) Modulo/direzione/verso di altra forze energetiche a cui e' sottoposta la sfera (gravita', campi di forza...).
3) Caratteristiche di dispersione termica a cui la sfera e' sottoposta per attrito con il fluido in cui e' immersa e che ne possa variare il moto.

Per una simulazione molto precisa dovresti indicare:

1) Caratteristiche chimico/fisiche del materiale fluido/sfera.
2) Condizioni termodinamiche, e risposte termodinamiche nel moto della sfera.
3) Gradienti termici/di pressione/flussi di particelle fluide, fenomeni di turbolenza/campi di variabili cinetiche....

repne scasb sei favolosa!!!
......... aspetta un attimo attieniti alla mia simulazione primordiale perchè ora devo controllare solo i dati postati. In seguito passerò il tutto al motore fisico.

ora però devo solo fare le proporzioni che ti ho detto nel post i dati li ho scritti e sono solo quelli.


cioè:
- 11 tratti dove la sfera deve andare a quelle velocità.
- il path completo del percorso che è totpath
- il tempo assegnato alla sfera per completare il giro in quel tempo + o -
- accelerazione
- frenata

devo rapportare questi dati da km/h a totpath

ora ho messo questo per accelerazione e frenata sembra andare ma c'è qualcosa che mi sfugge ancora:

pAI->Agg=(pAI->VelMedia[pAI->GiriTotali]*TRATTI_VEL[0])/pAI->MediaMarce/3.6;

if(pAI->Vel>pAI->Agg)
pAI->Vel-=pAI->Agg/1000;
if(pAI->Vel<pAI->Agg)
pAI->Vel+=pAI->Agg/1000;

......... con pAI->Agg/1000 ottengo un incremento di circa 0.0012f in accelerazione e in frenata (per ora solo per provare) dipende in che tratto mi trovo.

Ti ricordo che per ora il mio problema è che devo far fare alla sfera il giro nel tempo assegnatogli.

okay
01-09-2005, 12:18
Aggiunta:

con questa modifica in accelerazione e frenata i tempi sono perfettamente rispettati:

pAI->Vel-=ac*pAI->Agg/3.600;//frenata
if(pAI->Vel<pAI->Agg)
pAI->Vel+=ac*pAI->Agg/3600;//Acc

però in frenata le sfere mi vanno alcune volte a ritroso in alcuni punti dei tratti

ci sono quasi!!