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));`
|