summaryrefslogtreecommitdiffstats
path: root/vector/vector.md
blob: abbc0f941641659e43ce488e68871f556ba56343 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
---
title: Costruire dei vettori matematici dal C al C++
date: 9 Dicembre 2018
author:
    - Naoki Pross
papersize: a4
---

# Premessa
Si da per assunto che si ha delle conscenze di C di funzioni, strutture dati e
puntatori e si vuole imparare il C++11.

L'obiettivo è di ottenere una libreria di vettori matematici con le operazioni
vettoriali di somma, sottrazione, prodotto con scalare, scalare e vettoriale.
Per il primo esempio i vettori saranno unicamente tridimensionali.

Sarà inoltre utilizzata la terminologia inglese di *dot product* per il
prodotto scalare e *cross product* per il prodotto vettoriale.

# Un implementazione in C
Per introdurre il concetto, a seguire vi è un esempio di un implementazione
semplice in C.
```{.C include=vector.c startLine=1 endLine=73}
```
Per alcune applicazioni ciò è assolutamente sufficiente, ma osserviamo alcune
limitazioni:

- `vec3` contiene solo informazioni di tipo `double`
- Si possono creare dei `vec3` non inzializzati
- La notazione delle operazioni è scomoda. 
  Per esempio $\vec{v} \cdot 3 \cdot \vec{u}$ diventa 
  `vec3_dot(&v, &vec3_mul(&u, 3));`