Dot Product

ragazzi ma come funziona il componente " Dot Product" un esempio semplice quale sarebbe?

mi chiede due vettori in input, che se si intersecano il risultato (che è un numero) è 0

Ciao Salvio

Il dot product (prodotto scalare in italiano) e’ un numero ricavato da due vettori.
Per calcolarlo moltiplichi lunghezza del primo vettore per lunghezza del secondo vettore per coseno dell’angolo formato dai due vettori.

Se cerchi sul Web trovi parecchie spiegazioni.

Non ha molto senso dire che due vettori si intersecano.
I vettori non hanno una posizione nello spazio.
In ogni caso il risultato e’ 0 se i due vettori sono perpendicolari.

EDIT

Dimentico un pezzo … eh, la vecchiaia …

Altro modo per calcolarlo e’ fare la somma dei prodotti tra le componenti corrispondenti.
Cioe’ se un vettore ha componenti X0,Y0,Z0 e l’altro componenti X1,Y1,Z1,
il prodotto scalare lo calcoli come X0 * X1 + Y0 * Y1 + Z0 * Z1

EDIT2: la formula sopra era sbagliata … spero non piu’ … :blush:

3 Mi Piace

ciao Emilio,

qui si parlava di “pseudovector” quindi credevo che comunque riportasse un qualcosa tipo Cross Product

quindi cercavo tipo qualche esempio di spostamento direzioni di oggetti invece è solo per un calcolo?

Il testo che hai copiato non mi sembra dei piu’ chiari / elementari.
Direi che parla da un punto di vista matematico, quindi in un certo senso ‘superiore’ a quanto interessa a noi.
Prova a cercare prodotto scalare di vettori.
( Personalmente non so proprio cosa sia uno pseudovector, deve essere un termine matematico … )

Ci sono certamente degli utilizzi.
Essendo un numero non puo’ darti delle direzioni, ma delle lunghezze si’.
Se fai il prodotto scalare di due vettori unitari (quelli con lunghezza = 1, una volta si chiamavano anche versori, non so se si usi ancora), il valore che ottieni e’ pari alla lunghezza della proiezione di un vettore sull’altro.
Altro cosa utile e’ usarlo per cercare l’angolo tra i vettori.
Calcoli il prodotto scalare usando le componenti e lo confronti con la formula che usa lunghezze e coseno dell’angolo.
Cosi’ ottieni il coseno.
( E se poi calcoli anche il prodotto vettoriale, con quello ricavi il seno e sei a posto :slight_smile: ).

Vedo poi se riesco a fare una piccola def GH con qualche semplice esempio ( ho detto SE RIESCO eh
:blush: ) … ma forse qualcun altro riesce a farlo prima di me. :grinning:

1 Mi Piace

L’operatore prodotto scalare è comodo per capire se due vettori sono ortogonali (valore zero).
Mai sentito parlare di pseudovector …

1 Mi Piace

ecco la sua applicazione grazie Sergio :+1:

Calcolo del prodotto scalare in tre modi:
col componente GH e con le due formule che a cui avevo accennato sopra.
Gli slider servono per definire i due vettori con lunghezza e direzione (angolo). :slight_smile:

salvio-17.gh (17,5 KB)

1 Mi Piace

Emilio così mi metti in difficoltà, non ci capisco nulla :smile: :smile:

quindi nella def ci sono 3 modi alternativi per avere il risultato del componente Dot Product giusto?

ps o meglio sono 2 modi alternativi essendo che il primo il risultato è dato proprio da Dot Product. . . .

Esatto, Salvio.

Ma puoi anche usare la def per calcolare/verificare il dot product di due vettori, che definisci tramite angolo e lunghezza.

A questo proposito, visto che la def si limita al piano XY, ho provato a fare una versione 3D.
Qui oltre alla lunghezza devi definire due angoli, che a volte sono chiamati azimut e altezza,
comunque smanettando con gli slider si dovrebbe vedere cosa succede cambiando uno o l’altro angolo.

Come sai, non sono esperto di GH e ho fatto cosi’ per definire i due vettori.
Se preferisci un altro modo, puoi modificare la def in modo da avere un input dei vettori piu’ comodo.

salvio-18.gh (19,6 KB)

1 Mi Piace

appena ci capisco qualcosa :rofl: :rofl: :sweat_smile:

Hehe …
Fino al componente Vector XYZ compreso e’ solo definizione del vettore.
E’ la parte da cambiare se usi un altro metodo di input. :grinning:

Altro utilizzo del prodotto scalare:
Ricavi la lunghezza della proiezione di un vettore su un altro.
Per fare questo fai il prodotto scalare del vettore da proiettare per il vettore su cui proietti, ma ‘Unitized’, cioe’ con lunghezza portata a 1. :slight_smile:

image

salvio-19.gh (21,6 KB)

… E sul prodotto scalare non so altro … :grinning_face_with_smiling_eyes:

1 Mi Piace

si infatti tra le ricerche fatte avevo letto questa funzione che sicuramente è da tenere presente :+1:

1 Mi Piace