# Dot Product

**URL:** <https://it.discourse.mcneel.com/t/dot-product/4630>\
**Category:** Grasshopper\
**Created:** [18 Luglio 2022, 11:44am UTC](https://it.discourse.mcneel.com/t/dot-product/4630 "2022-07-18T11:44:45Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [18 Luglio 2022, 11:44am UTC](https://it.discourse.mcneel.com/t/dot-product/4630/1 "2022-07-18T11:44:45Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [18 Luglio 2022, 12:12pm UTC](https://it.discourse.mcneel.com/t/dot-product/4630/2 "2022-07-18T12:12:07Z")

</div>

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.

> [@0904](#):
>
> che se si intersecano il risultato è 0

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’ … 😊

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [18 Luglio 2022, 2:41pm UTC](https://it.discourse.mcneel.com/t/dot-product/4630/3 "2022-07-18T14:41:00Z")

</div>

ciao Emilio,

 ![DOT](https://global.discourse-cdn.com/mcneel/uploads/mcneel_it/original/2X/9/9449df75a7ea932230346c6288ef30156957be62.png)

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?

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [18 Luglio 2022, 2:59pm UTC](https://it.discourse.mcneel.com/t/dot-product/4630/4 "2022-07-18T14:59:05Z")

</div>

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 … )

> [@0904](#):
>
> è solo per un calcolo oppure è possibile qualche esempio di spostamento direzioni di oggetti?

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 🙂 ).

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

---

<div class="post-metadata">

**Author:** ![Sergio\_Alessi](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/sergio_alessi/32/22676_2.png) [@Sergio\_Alessi](https://it.discourse.mcneel.com/u/Sergio_Alessi)\
**Post date:** [18 Luglio 2022, 6:30pm UTC](https://it.discourse.mcneel.com/t/dot-product/4630/5 "2022-07-18T18:30:55Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [18 Luglio 2022, 7:24pm UTC](https://it.discourse.mcneel.com/t/dot-product/4630/6 "2022-07-18T19:24:26Z")

</div>

> [@Sergio\_Alessi](#):
>
> L’operatore prodotto scalare è comodo per capire se due vettori sono ortogonali (valore zero).

ecco la sua applicazione grazie Sergio 👍

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [18 Luglio 2022, 10:23pm UTC](https://it.discourse.mcneel.com/t/dot-product/4630/7 "2022-07-18T22:23:30Z")

</div>

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). 🙂

 ![image](https://global.discourse-cdn.com/mcneel/uploads/mcneel_it/original/2X/5/5e3d6695d3809e68c6c4f911b9627245fecf9547.png)

[salvio-17.gh](https://it.discourse.mcneel.com/uploads/short-url/sCcsnt91lXbKd22FsC9Af37zKm4.gh) (17,5 KB)

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [19 Luglio 2022, 8:57am UTC](https://it.discourse.mcneel.com/t/dot-product/4630/8 "2022-07-19T08:57:09Z")

</div>

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

> [@emilio](#):
>
> Calcolo del prodotto scalare in tre modi:

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. . . .

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [19 Luglio 2022, 9:37am UTC](https://it.discourse.mcneel.com/t/dot-product/4630/9 "2022-07-19T09:37:42Z")

</div>

> [@0904](#):
>
> 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.

 ![image](https://global.discourse-cdn.com/mcneel/uploads/mcneel_it/original/2X/7/7c7e8899e89803330bbf859e1b035d49490121df.png)

[salvio-18.gh](https://it.discourse.mcneel.com/uploads/short-url/l1WGmqLOz7jLyfq8v0kkUwGhLv8.gh) (19,6 KB)

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [19 Luglio 2022, 9:42am UTC](https://it.discourse.mcneel.com/t/dot-product/4630/10 "2022-07-19T09:42:59Z")

</div>

> [@emilio](#):
>
> Se preferisci un altro modo, puoi modificare la def in modo da avere un input dei vettori piu’ comodo.

appena ci capisco qualcosa 🤣 🤣 😅

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [19 Luglio 2022, 9:48am UTC](https://it.discourse.mcneel.com/t/dot-product/4630/11 "2022-07-19T09:48:36Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [19 Luglio 2022, 10:19am UTC](https://it.discourse.mcneel.com/t/dot-product/4630/12 "2022-07-19T10:19:13Z")

</div>

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. 🙂

 ![image](https://global.discourse-cdn.com/mcneel/uploads/mcneel_it/original/2X/4/41a5112edd0efb0b4728180248e7a1c71aef1fd1.png)

![image](https://global.discourse-cdn.com/mcneel/uploads/mcneel_it/original/2X/6/67c16de0bf01e3d5eb48f4da2766c9042589edc1.png)

[salvio-19.gh](https://it.discourse.mcneel.com/uploads/short-url/4rs1pbjoOYse0IG1kdCm2xiVqTr.gh) (21,6 KB)

… E sul prodotto scalare non so altro … 😄

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [19 Luglio 2022, 11:05am UTC](https://it.discourse.mcneel.com/t/dot-product/4630/13 "2022-07-19T11:05:13Z")

</div>

> [@emilio](#):
>
> Ricavi la lunghezza della proiezione di un vettore su un altro.

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