Rapporto Scalare Dimensioni

ciao ragazzi,

in una situazione simile, dove ci si ritrova con una distanza 61.173

nella parte bassa della linea, un rettangolo con altezza di 8.3

e nella parte alta della linea, un rettangolo con altezza di 0.87

mi interesserebbe capire come poter scalare graduatamente
il rettangolo inferiore grande, per tutta la lunghezza della linea
retta verde, fino ad arrivare all’ultimo rettangolo piccolo in alto?

Ciao Salvio.
Prova questo.
quadrati.gh (9,5 KB)

1 Mi Piace

ciao Leopoldo e grazie della condivisione,

si in effetti la tua def scala graduatamente il primo rettangolo grande fino a quello piccolo

unica cosa che forse non’è stato bene chiarito e che la gradualità deve essere a blocchi

nel senso come si vede dall’immagine, mi dovrei ritrovare con tutti i rettangoli
dal primo in basso fino all’ultimo in alto e intermedi con le dimensione scalate

spero di aver chiarito un pò meglio, in pratica credo che ci sia bisogno di un (calcolo)
iniziale che dia modo di sapere ad ogni rettangolo quale sia la scala del successivo. . .
fattibilmente possibile questa cosa?

il primo è semplice essendo che fa parte di un valore impostatogli in altezza 8.3
e inserendo questo valore altezza del secondo rettangolo è di 15.577
la questione è che se io il rettangolo scalato me lo ritrovo dopo che ho impostato
il valore dello slider. come faccio a sapere il fattore di scala prima che sposto lo slider?


ps comunque bellissimo esempio dell’uso di remap numbers, situazione proprio ideale credo :+1:

edit:

stavo provando utilizzando il comando scala1d ma credo che in questo caso bisognerebbe
prima ricavarsi la lunghezza totale della linea retta che dovrebbe corrispondere
all’altezza pari a zero del rettangolo iniziale grande giusto?

La difficoltà sta nelle misure fisse del primo e ultimo rettangolo, provo con questa definizione un po’ empirica.
quadrati a.gh (12,5 KB)

1 Mi Piace

sempre grande Leopoldo :+1:

come si trova il valore u?

ps come mai empirica?

Empirica, appunto, perché il valore u va trovato “a mano” con lo scroller.

e giustamente a mali estremi estremi rimedi :+1: :+1:

wauuuuu e io che pensavo a quale equazione eri ricorso
infatti avevo provato in Rhino scala1d ma sia partendo
all’estremo della linea retta, oppure nella parte inferiore
dell’ultimo rettangolo comunque non mi trovavo
essendo che in entrambi i casi venivano presi
come valori finali uguale a 0 e non andava bene.

mentre scrivo pensandoci, in pratica come fa nella tua def remap numbers servirebbe una formula,
che calcolasse, nella distanza della linea retta 61.173, il rettangolo grande 8.3 deve essere scalato a 0.87

strano, stavo facendo delle prove con questo esempio semplificato,
linea retta di 15cm si inizia con un segmento da 5 cm
per poi finire alla sommità con un segmento da 1cm

sono andato a verificare ad ogni step man mano che saliva il segmento.
sommando altezza iniziale con la lunghezza del segmento scalato
quando con lo slider arrivo a 15, il segmento è di 1cm.
ma nell’ultimo step, la parte finale del segmento
non combacia con la parte finale della retta.

Prova con questa modifica.

ciao Leopoldo e scusa se rispondo aesso,

comunque anche col tuo esempio ho lo stesso risultato e non comprendo come mai

mi andrò a riguardare la tua def “quadrati a” perché in effetti il ragionamento dovrebbe essere identico. . .

La definizione “quadrato a” mette i quadrati in sequenza mentre la mia prima definizione e il tuo esempio spostano semplicemente i punti in modo proporzionale.
Lo slider che determina lo spostamento dei punti deve essere compreso tra 0 e la lunghezza della linea meno la lunghezza dell’ultimo segmento.

certo ma contemporaneamente li ridimensiona spostandoli, anche i quadrati vengono scalati
li mette in sequenza in un certo senso li sposta duplicandoli e ridimensionandoli tramite remaps numbers

la seconda def dovrebbe essere come la prima, con la sola differenza
che il ridimensionamento viene fatta sulla sola retta che invece di un rettangolo

come i rettangoli vengono messi in sequenza anche la retta viene messa in sequenza
come il rettangolo viene scalato in direzione Y anche la retta viene scalata in direzione Y

quindi il procedimento dovrebbe essere identico, solo che la tua def funziona la mia no :thinking:

perfetto infatti in questo secondo esempio come avrai notato, la fine della retta combacia, con il punto
iniziale della retta, mentre nella prima def hai dovuto sottrarre dalla retta altezza del rettangolo.

ragionamento:
se dal punto 0 della linea retta di 15cm, faccio partire un segmento di 5cm
il secondo segmente scalato, inevitabilmente dovrà iniziare a 5cm dal punto 0
e se imposto lo slider a 5cm, e tramite la def il segmento ridimensionandosi
è arrivato ad avere una lunghezza tot, significa che a tale lunghezza debbo
aggiungere i 5cm del segmento precedente, lunghezza totale dal quale
poi dovrà iniziare il segmento successivo che a sua volta verrà scalato.

ritorno a fare qualche verifica, ma nel ragionamento fatto mi quadra tutto.
(anzi verifico la tua def del rettangolo, magari c’é qualche passaggio sfuggito)
ps ovviamente oltre al fattore di scala (u) che avevi trovato

Nella definizione “quadrato a” i punti che indicano la posizione dei quadrati non è determinata da remaps numbers ma dallo script VB.
L’altra definizione fa semplicemente slittare i punti, riducendo la loro distanza In relazione allo spostamento.

scusa Leopoldo, concordo pienamente su quanto dici, ma da quello che vedo in questa foto,
il ragionamento dovrebbe funzionare anche in questa def

i 5 segmenti creati si toccano tutti, e confermato dal fatto che hanno le stesse coordinte
contemporaneamente, se prendo il primo segmento di 5cm e lo spoto veros Y di 5cm
significa che il secondo punto da dove deve iniziare il segmento è a 5cm in Y da 0

ora consederando questa logica, e come anche di fatto si vede che a 15cm il segmento è di 1cm
come mai i vari segmenti intermedi invece non combaciano con la scala essende che il primo
segmento partendo da 0 è di 5cm e l’ultimo segmento partendo da 15cm è di 1 cm
(e quindi la proporzione del segmento è come deve essere in inizio e fine)

ps il rapporto di scala intermedio usando remaps numbers non combacia col rapporto di scala inizio/fine
(sembra quasi come per la lunghezza parametrica, che lo 0.5 non combacia con la metà della curva)


edit: ma ci dovrebbe essere un calcolo che permetta di conoscere il fattore di scala
(un oggetto di tot dimensione, deve scalare a tot dimensione in tot spazio in modo graduale)

Probabilmente non ci intendiamo bene.
Comunque va bene così.
Però l’ultimo segmento non può avere coordinata Y = 15 altrimenti esce dalla linea, deve avere la coordinata Y = 14.

probabilmente mi sono espresso male, ma il tuo ragionamento che hai esposto era quello che intendevo

in questo caso era quello che volevo, essendo che nella tua def dei rettangoli hai dovuto sottrarre
altezza dell’ultimo rettangolo. nel secondo caso quindi ho ritenuto di eliminare questo passaggio.

quindi ho una retta di 15 cm, da 0 parte un segmento di 5cm
che arriva al punto finale della retta con un segmento di 1cm

quando mi sfugge qualcosa cerco di semplificare tutti i passaggi per capire bene ogni fase.

come hai fatto a trovare il valore u a mano?

“U” è il fattore con il quale vengono scalati i segmenti.
In pratica, se la lunghezza del primo segmento è 5 il secondo segmento sarà 5*u, il terzo sarà uguale alla lunghezza del secondo per u e così via.
Per trovarlo manualmente.
Partendo da un valore 1 ho ridotto il valore “u” fino a quando ho trovato un risultato accettabile.

ciao Leopoldo, mi sono preso un po di tempo per ragionarci sopra, comunque tutto è nato da questo topic:

che ne pensi di questa soluzione non mia, io vedendo radiciquadre fibonacci ecc mi perdo :blush:

Con GH direi che queste manipolazioni sono, come dire, “normali”.
Ma il quesito che tu ponevi era che il primo e l’ultimo rettangolo dovessero avere delle misure ben definite.