Cross Product

io non l’ho mai usato, anche dopo la spiegazione di Emilio non riesco ad immaginare il funzionamento

nelle ultime due def di Leopoldo, ho notato che in questi esempi ha usato il componente “Cross Product”
credo che mi potrebbe servire anche a me in alcune situazioni simili. . . .

nel video ho fatto questa semplice prova per vedere cosa accadesse, ma non credo sia il modo migliore,
essendo che si vede la freccia del vettore salire e scendere indicando la direzione verso il basso.
sarebbe possibile un esempio visivo e quanto più semplice possibile di cosa succede cambiando i valori.

(in pratica vorrei capire se e in che modo potrei utilizzarlo)

Prodotto vettoriale - Wikipedia.

Concetto estremamente utile anche in GH.

Puoi postare la definizione ? :slight_smile:

cross.gh (6,6 KB)

ciao Emilio, ti ho postato la def come hai chiesto
nella tua spiegazione, menzioni la regola della mano destra
in pratica questo passaggio non riesco ad associarlo al funzionamento del Cross Product
ritengo che quando si metta mano ad un componente bisogna già sapere all’incirca del risultato
io nella def vedo un vettore che sale e scede (frutto di un calcolo) all’intersezione dei 2 vettori principali
sbaglio o si potrebbe assimilare al componente vector2pt, solo che in questo caso richiede due vettori?

ps Leopoldo lo usa per comparare le lunghezze del risultato di Cross Product dato dai due vettori giusto?
ma nel mio esempio i due vettori principali sono sempre gli stessi, il calcolo si basa anche sull’angolo?

1 Mi Piace

Per integrare la definizione di Salvio.
cross a.gh (9,7 KB)

1 Mi Piace

Dati due vettori A e B , il risultato del cross product è un nuovo vettore che è sempre perpendicolare ad entrambi. (Ma questo non significa che A e B debbano essere perpendicolari tra loro)

Vediamo se riesco a scrivere testualmente come lo ragiono io di solito (sono con il cell… ).
X Y e Z, la terna di assi più facile.
10
Da un punto, X va verso destra, Y va verso l’alto, Z viene verso di te.
Oppure X verso destra, Y in avanti, Z verso l’alto. Stessa “struttura”.
Oppure X verso il basso, Y verso sinistra, Z in avanti. Stessa struttura! (pensaci finché ne sei convinto)

Ora, fai un “tre” (europeo) con la mano destra, senza sforzarti di rendere co-planari le dita:
in automatico avrai pollice, indice e medio in sequenza.
Pollice=X , Indice=Y , Medio=Z
Se noti, il medio “esce” dal piano del palmo della mano, mentre pollice e indice circa tenderanno naturalmente a stare sul piano.
Ecco la “struttura” rigida, in mano tua, pronta ad essere orientata come serve. Un pratico ausilio per prevedere i tre assi nello spazio!
(giochino banale, eh, fai un GOTO 10 e riprova con la terna in mano!)

Ora, cross product, l’utilizzo principale è la direzione del risultato, più raramente anche l’ampiezza/intensità.

Con il cross product il primo vettore è il pollice, il secondo l’indice, il risultato di output è il medio.
Ed ecco che puoi prevedere in che direzione sarà il vettore cross product.

Nota che, invertire i due vettori (A e B), darà un risultato esattamente opposto (e stessa ampiezza).

Il cross product diventa “instabile” Quando A e B sono paralleli tra loro o formano un angolo vicino ai 180°. Per questo si cerca di usare un A e un B che siano naturalmente diversi, così da avere affidabilità nel cross product.
Tipo, dato un punto sul bordo di una soperficie fai il cross product della tangente del bordo in quel punto con la normale della superficie in quel punto, e otterrai un vettore pulito pulito che si allontana dalla superficie in modo tangente alla superficie.

Scusate il monologo… :sweat_smile:

1 Mi Piace

Monologo come al solito interessante ed esplicativo.
Provo a visualizzarlo in GH.
img1
cross b.gh (17,6 KB)

Ciao Riccardo, il prodotto vettoriale, per definizione è perpendicolare al piano di rotazione di A verso B e verso secondo quello di avanzamento di una vite destrosa che gira da A verso B.

Se i due vettori che condividono il punto di applicazione hanno anche direzioni parallele ( k*180°, con k appartenente ai numeri interi quindi anche zero gradi) non esiste un piano, pertanto il prodotto vettoriale non è instabile, ma è proprio nullo.

D’altra parte il prodotto vettoriale ha modulo pari a ABsen(k*180° ) ovvero lunghezza nulla ( caso di parallelismo) .

Per via analitica si può calcolare anche come determinante della matrice 3x3 avente come prima riga i tre versori degli assi e le altre due i moduli delle componenti lungo i tre assi.

1 Mi Piace

Ciao Salvio

Se aumenti la rotazione oltre 90 gradi, vedrai anche il vettore che cambia verso.
Pero’, se noti, il vettore ha sempre la direzione dell’asse Z, cioe’ e’ sempre perpendicolare ai due vettori che tu moltiplichi con il cross product.

Il risultato del cross product e’ un vettore, quindi avra’ una direzione e una lunghezza.
Come credo ti abbiano gia’ detto, per i nostri scopi di solito quello che serve e’ la direzione.
Io inizierei a considerare la direzione.

La lunghezza del cross product secondo me e’ la parte piu’ difficile, perche’ per ottenerla serve la trigonometria, cosa che se non sbaglio cerchi di evitare.
Oppure ci sono le espressioni per le varie componenti ecc. , ma anche questo non so se ti va bene.

Comunque se vuoi, dopo vediamo come ottenere la lunghezza.

Come dicevo, secondo me sarebbe meglio partire dalla direzione.
Provo ad allegare un file, forse si capisce meglio la regola con pollice, indice e medio.

cross-product.3dm (1,1 MB)

Consideriamo solo le direzioni.
Il risultato del cross product di A e B, in questo ordine, e’ C.
Come ti hanno gia’ detto, A e B non devono essere per forza perpendicolari.

Per capirci, il pollice, ad esempio, puo’ anche essere cosi’, la direzione del risultato non cambia.
image

L’importante e’ che A e B non siano paralleli.
Il vettore risultante, C sara’ perpendicolare sia ad A che a B.

Hai il 3dm, ragionaci con calma, prova con GH se vuoi.
Della lunghezza, per quanto mi riguarda, ne parliamo poi … :wink:

P.S.

Ah, se poi uno dei tanti esperti di modellazione organica vuole postare una mano decente, e’ il benvenuto.
Io fino li’ arrivo … :confused: :grinning:

1 Mi Piace

Vero. Verissimo.
Intendevo “instabile” nel caso in cui si usino vettori provenienti da un contesto generico che sono troppo simili, con A e B troppo allineati il cross product inizia ad “oscillare” ed essere impreciso, inaffidabile.
Lo zero preciso non capiterà mai quando si lavora ruotati nello spazio.
Salvo avere coordinate pulite (rarissimo) due vettori A e B (estratti in chissà che modi) possono essere “paralleli” o sfasati di 180°, ma in realtà è facile che formino angoli di 0.000001 o 179.9999 gradi … e in quel caso il cross product risulta valido! … e ha una direzione, appunto, praticamente casuale, totalmente inaffidabile.

È molto meglio valutare prima, a mente, tutte le possibili casistiche, e cercare una coppia A e B dove si è abbastanza sicuri che tale situazione non accada.
Questo intendevo :sweat_smile:

1 Mi Piace

Ok intendevi nello spazio canvass, ok, ma comunque la direzione non cambia, quello che balla é il modulo che tende a zero.

L’ampiezza del cross product è pari all’area del parallelogramma formato dagli altri due vettori, A e B…
Facile, no?
…NO. :sweat_smile:
Quindi per visualizzare l’idea prova a beccarti sto altro text wall:


Un possibile esempio di applicazione del prodotto vettoriale è il momento torcente!
A scuola mi avevano insegnato che il momento torcente è M=D*F, con D = distanza del punto di applicazione della forza e F = componente perpendicolare a D della forza… e si riduceva il tutto ad una banalissima moltiplicazione di numeri … e si risolveva a disegno la posizione, orientamento e direzione di forze e rotazioni.

In realtà è molto più interessante vedere il tutto come prodotto vettoriale!
D, distanza, non è solo un numero, ma un vettore!
Un vettore che quindi specifica distanza+direzione del punto di applicazione della forza.
F, forza, anche questo non solo un numero, ma vettore.
Un vettore che specifica intensità+direzione+verso della forza.
M, momento torcente, è anch’esso un vettore, il cui definisce l’intensità del momento torcente (la lunghezza del vettore) e l’asse e il verso della rotazione!
Numericamente in 2D era positivo=antiorario e negativo=orario … ma in 3D diventa tutto relativo, dipende da dove si osserva una cosa… quindi hanno risolto definendo una rotazione 3D con un vettore, togliendo ogni dubbio. Il momento ora è sempre positivo, e il verso di rotazione è definito dall’orientamento del vettore.

Semplice manovella + forza:
cross product momentum2
cross product.gh (15,5 KB)
Nota come gli spostamenti in X (freccetta rossa della gumball) non variano il cross product… infatti l’area di un parallelogramma è uguale alla base*altezza… in questo specifico caso (con D parallelo a X), di F ci interessa solo la componente Y.
Nota poi come M cambia verso quando F punta verso il basso.

Il cross product si usa moltissimo in fisica, tipo anche con campi magnetici, dipoli, spin, ecc ecc…

Ad esempio, all’interno di un campo magnetico non uniforme (campo vettoriale con gradiente), un magnete campione (definibile come “puntiforme” e il suo dipolo magnetico definito da un semplice vettore… quinti pt+vt) subirà forze di traslazione e momenti torcenti…
Le forze di traslazione si calcolano con il dot product, si ottiene semplicemente l’intensità, che sarà da moltiplicare al vettore locale del campo magnetico.
Mentre le forze di torsione si calcolano con il cross product, e il risultato infatti sarà già un vettore, completo.
Esperimento mentale con casi limite:
Un magnete allineato ad un campo magnetico avrà vettori paralleli > forza di spinta/attrazione non zero, ma forza di torsione zero.
Un magnete ruotato a 90° rispetto al campo magnetico, vettori perpendicolari > forza di spinta/attrazione zero (dot product a 90° = 0), ma torsione massima!

Spero di non aver fatto più casino di prima! :rofl:

1 Mi Piace

Che è esattamente DFsen(angolo).

Vettori non sono solo le forze, ma qualsiasi elemento di uno spazio vettoriale, che in quanto tale gode di determinate proprietà.
La geometria dei spazi vettoriali è estremamente importante oltre che utilissima nella modellazione 3d e non solo.

(La teoria di Einstein è costruita su uno spazio vettoriale a 40 dimensioni) .

Per lavorare con disinvoltura con GH, un po’ di conoscenze di questi spazi e di come funzionano sono molto utili.

Con i determinati di matrici di vettori si risolvono equazioni lineari, vedi Cramer.

Più volte ho risolto problemi pratici di modellazione grazie alla conoscenza, seppur basica, degli spazi vettoriali. In Matematica (corso di laurea) hanno 3 esami di geometria, in ingegneria soltanto uno

Corretto Riccardo.
Nota anche che se i vettori hanno modulo fissato e cambi l angolo, il loro prodotto vettoriale tende a zero quanto più sono paralleli.

Avrei voluto fare una animazione mentre la manovella girava… ma diventava troppo un casino.

Il succo è guardare il parallelogramma e quindi la sua area… è la cosa più semplice da immaginare.

ciao ragazzi e grazie a tutti, per le tante spiegazioni ed esempi fatti siete unici :+1:
ci ho messo un po di tempo nel rispondervi essendo che ho provato i file condivisi
(posto delle foto sperando che ciò che ho capito sia giusto :blush:)


forse l’ultima immagine e quella che rende meglio il senso essendo che ruota sull’asse Y

cerco di racchiudere il succo in poche parole
in pratica il Cross Product produce un vettore mantenendo sempre angolo di 90° tra i 2 vettori sorgenti
mentre la lunghezza è data calcolando l’area del parallelogramma (ma riportato come decimale giusto?)
infatti facevo confusione essendo che nell’esempio di Riccardo sposta il punto e l’area rimane uguale,
mentre Leopoldo ruotava ed in quest’ultimo caso invece l’area cambia e provoca l’oscillazione del vettore
e tutto il movimento avviene usando la regola della mano Dx come ha spiegato Emilio col file condiviso.

quindi se quanto detto è corretto vorrei fare un ragionamento su una situazione in cui mi trovai tempo fa:
osservando la terza foto prendendola come esempio dove riporto una parte della def di Leopoldo;
in questo caso il Cross Product riporta il vettore verso la Z ma riporterebbe sempre lo stesso risultato indipendentemente dall’angolo che in questo caso è data dalla Tangenza del punto con asse X o Y

nel mio caso dove ho filtrato un vettore col relativo punto d’inizio ho aggiunto un Move con vettore Z
si può affermare che fino a quando i 2 vettori originari si spostano sempre sullo stesso piano
i risultati del Cross della definizione e quella data dal punto e Move verso Z saranno uguali?

ps Luca non mi sono dimenticato di te, è sempre un piacere leggere le tue nozioni matematiche :wink:

edit:
ma a questo punto pensandoci bene, la funzione Cross Product equivale all’asse Z del Gumball?

Il prodotto vettoriale di due vettori è un vettore perpendicolare ai primi due che tra loro non è detto che lo siano.
La lunghezza è data dal prodotto delle lunghezze dei primi due per il seno dell’angolo compreso.

In che senso? Salvio, è molto molto semplice, non perderti in tante congetture, serve solo che tu sappia che la lunghezza di questo prodotto è ricavabile con quella relazione che visivamente è rappresentata dall’area che ti ha mostrato Riccardo.

Se vedi la gif sempre di Riccardo, l’area è costante quando lo è l’altezza della parallelogrammo, perché l’area è sempre base per altezza… quindi, D è sempre uguale; l’altezza, che è data da Fsen(angolo compreso) non cambia, quindi l’area non cambia.

Sono due casi diversi, entrambi corretti ed entrambi visibili nel gif.
Se l’altezza non cambia, la lunghezza del terzo vettore non cambia, diversamente sì.

Non mi pare. Il Gumball è una terna normale di assi e basta, mentre due vettori e il loro prodotto vettoriale non sono in genere perpendicolari tra loro.