py3d-lib 1.0.1
Un module python en français, qui vise à simplifier les programmes utilisants de la géométrie 2D ou 3D
License: MIT

# Py3D

Un module python en franÃ§ais, qui vise Ã  simplifier les programmes utilisants de la gÃ©omÃ©trie 2D ou 3D.

  Il vise Ã  Ãªtre utilisÃ© par les <b>collÃ©giens, lycÃ©ens et Ã©tudiants</b> afin de faciliter leurs projets ou leurs dÃ©monstration incluant de la gÃ©omÃ©trie 2D / 3D


Une documentation complÃ¨te est disponible Ã  cette adresse :<br>
[https://asionville.github.io/py3d/](https://asionville.github.io/py3d/)
  
## Installation

Le projet Ãªtre disponible sur [Pypi](https://pypi.org/) sous le nom de "py3d-lib"
Pour l'installer, entrez dans un terminal en administrateur / sudo :
```cmd
pip install py3d-lib
```

Pour ouvrir le terminal en administrateur :
#### Windows :
Touche windows<br>
Taper C M D<br>
Clic droit -> ExÃ©cuter en tant qu'administrateur

#### Mac/Linux :
Ouvrir un terminal<br>
Taper
```cmd
sudo pip install py3d-lib
```


Sinon, le projet est disponible en version zippÃ© dans [Les versions officielles](https://github.com/ASionville/py3d/releases)

---
#### Importation
Nous recommandons de ne **pas** importer les fonctions de cette maniÃ¨re:
```python
from py3d import *
```

Mais plutÃ´t de cette maniÃ¨re :
```python
import py3d
```
Cela Ã©vitera les possibles erreurs en utilisants d'autres modules (si vous n'en utilisez pas, alors c'est bon)
<br>


#### Points
Suite Ã  cela, vous pourrez crÃ©er un point de coordonnÃ©es (0, 1, 2) de cette maniÃ¨re :
```python
p = py3d.Point(0, 1, 2)
```
*A noter : si vous ne mentionnez pas une coordonnÃ©e, elle sera considÃ©rÃ©e comme nulle*
Il existe Ã©galement le point d'origine (0, 0, 0) qui est accessible via :
```python
o = py3d.origine
```

<br>

#### Vecteurs
Un vecteur peut se crÃ©er comme ceci, avec deux points :
```python
u = py3d.Vecteur(o, p)
```
*Il est possible de "crÃ©er" les points directement dans le vecteur :*
```python
v = py3d.Vecteur(py3d.point(-2, 3, 7), py3d.origine)
```

Vous pouvez Ã©galement crÃ©er un vecteur Ã  partir de ses coordonnÃ©es :
```python
w = py3d.Vecteur(-1, 2, 1)
```
Les vecteurs unitaires et le vecteur nul sont disponible directement :
```python
v_nul = py3d.vecteur_nul
```

<br>

#### Droites
Une droite peut se dÃ©finir par deux points :
```python
d1 = py3d.Droite(o, p)
```
*Encore une fois, il est possible de crÃ©er les points en mÃªme temps (voir exemple avec les vecteurs)*

Une droite peut aussi se dÃ©finir par un point puis son vecteur directeur :
```python
d2 = py3d.droite(py3d.origine, v)
```

*Les droites reprÃ©sentant les droite sont disponibles comme ceci :
```python
d3 = py3d.axe_x
```
<br>

#### Plans
Pour ce qui est des plans, il existe plusieurs maniÃ¨res trÃ¨s diffÃ©rentes :

Tout d'abord, avec un point puis le vecteur normal au plan :
```python
p1 = py3d.Plan(o, w)
```

Ou alors, par deux droites sÃ©cantes :
```python
p2 = py3d.Plan(d1, d2)
```

Mais aussi par un point et deux vecteurs non colinÃ©aires :
```python
p3 = py3d.Plan(u, v)
```

Ou enfin par trois points qui font partie de ce plan :
```python
p4 = py3d.Plan(o, p, py3d.Point(-4, 7, -3.5))
```

*Les plans XY, XZ et YZ sont disponibles directement:
```python
`p5 = py3d.plan_xy
```
---

Exemple basique d'utilisation :
```python
import py3d

#CrÃ©ation de deux vecteurs u et v
u = py3d.Vecteur(0, 0, 1)
v = py3d.Vecteur(0, 0, 10)

#Est ce que les vecteurs sont colinÃ©aires ? -> True
print(py3d.colineaires(u, v))
```

<br>

Exemple utilisant un graphique 3D :
```python
import py3d

#CrÃ©ation d'un point A de coordonnÃ©es (1, 1, 1)
pointA = py3d.Point(1, 1, 1)

#CrÃ©ation d'une droite passant par A et l'origine
d = py3d.Droite(py3d.origine, pointA)

#CrÃ©ation du plan z=0 (plan xy)
plan = py3d.plan_xy

#CrÃ©ation du repÃ¨re 3D
repere = py3d.Repere3D()

#Ajout du plan divisÃ© en une grille de 20x20
repere.ajouter(plan, grille=20)
#Ajout de la droite violette avec une Ã©tiquette
repere.ajouter(d,longueur=1, couleur="purple", label="Droite d x = y = z")
#Ajout du point A
repere.ajouter(pointA, label="Point A")

#Affichage du repÃ¨re
repere.afficher()
```

RÃ©sultat :
![Affichage 3D basique](images/affichage_basique.PNG)

<br>

D'autres exemples seront bientÃ´t disponibles dans le dossier [exemples](exemples/)

---
## Gestion des bugs

Github possÃ¨de un systÃ¨me de tickets (issues) sur lesquels nous pouvons discuter / s'entraÃ®der disponibles ici : [Tickets](https://github.com/ASionville/py3d/issues)<br>
ou sinon, en haut de page

Merci Ã  tous ceux que relÃ¨veront des bugs et qui m'en feront part, ils seront corrigÃ©s dÃ¨s que possible

---
## Contact

Vous pouvez me contacter Ã  cette adresse :
[aubin.sionville@stfrancoislaroche.fr](mailto:aubin.sionville@stfrancoislaroche.fr)