Bonjour à tous,

Je me permets de vous solliciter pour un petit projet personnel. Dans celui-ci je suis amené à retranscrire une "vue 3D" sur un plan 2D. Vu qu'une image vaut 1000 mots, voici mon objectif:

J'ai un terrain de football, ou tennis, en même de pétanque, peu importe en vision "camera". J'entends par là que nous avons la notion de perspective.

Nom : terrainVue3D.png
Affichages : 546
Taille : 13,6 Ko

Mon but du jeu est de retranscrire n'importe quel point dans le premier plan dans ce second plan que j'ai qualifié de 2D:

Nom : terrain2D.png
Affichages : 527
Taille : 4,9 Ko

En fait je veux passer du mode perspective à une vue aérienne.
J'ai bien réfléchi sur les différentes méthodes pour arriver à un résultat satisfaisait mais j'ai l'impression que mes notions mathématiques sont trop faibles concernant les projections.

Pourriez-vous m'aiguiller ?
Pour tout vous avouer, j'étais parti sur la création automatique de plusieurs points sur les 2 plans et derrière faire un petit réseau neuronal. Cependant je suis bloqué car la moitié des points 3 5 dans le plan 1 ne correspond pas à la moitié des points 3 et 5 du plan 2. En fait, plus on évolue "en profondeur" dans le plan 1 plus la distance est grande et c'est ceci que je n'arrive pas à prendre en compte.

Pour info je fais ce projet sur python

Code PYTHON : Sélectionner tout - Visualiser dans une fenêtre à part
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
33
34
35
36
37
38
39
40
41
42
43
 
import numpy as np
import matplotlib.pyplot as plt
 
## On dimenssione le terrain vu 3D
plt.axis([0, 1000, 0,500])
x1=[200,50,400,750,600,900]
y1=[0,300,395,190,450,310]
## On ajoute les délimitations de terrain
plt.plot([200,50],[0,300],color='green')
plt.plot([50,600],[300,450],color='green')
plt.plot([600,900],[450,310],color='green')
plt.plot([900,500],[310,0],color='green')
plt.plot([400,750],[395,190],color='blue')
 
## On dessine 6 points représentatifs du terrain
 
plt.plot([200,50,400,750,600,900], [0,300,395,190,450,310], 'ro',color='black')
 
 
for i in range(6):
    plt.text(x1[i]+10,y1[i]+10,i+1)
 
## Le résultat obtenu veut être mis en vision 2D au dessus et non sur une vision 3D
## Pour cela on veut obtenir le résultat suivant:
 
plt.axis([0, 1000, 0,500])
x2=[100,100,500,500,900,900]
y2=[140,400,400,100,400,100]
 
 
## On ajoute les délimitations de terrain
plt.plot([100,100],[100,400],color='green')
plt.plot([100,900],[400,400],color='green')
plt.plot([900,900],[400,100],color='green')
plt.plot([900,100],[100,100],color='green')
plt.plot([500,500],[100,400],color='blue')
 
plt.plot(x2, y2, 'ro',color='black')
 
 
for i in range(6):
    plt.text(x2[i]+10,y2[i]+10,i+1)

Merci à vous