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