Skocz do zawartości

[c++]error: 'p3D' does not name a type - Struktura danych


elo720

Polecane posty

Właściwie to sprawa ma się tak:

Znalazłem na internecie prosty wzór do przeliczania współrzędnych z 3D na 2D i w związku z tym napisałem dalej coś takiego(wszystko w WinApi):

#define WIELKOSC 100
struct PUNKTY_3D
{
int x;
int y;
int z;
};
POINT licz(PUNKTY_3D p3D)
{
POINT p2D[8];
for(int i=0;i<7;i++)
{
   	p2D[i].x=p3D[i].x*WIELKOSC/(p3D[i].z-600);/*2x error: no match for 'operator[]' in 'p3D[i]'*/
   	p2D[i].y=p3D[i].y*WIELKOSC/(p3D[i].z-600);/*2x error: no match for 'operator[]' in 'p3D[i]'*/
}
return p2D;/*error: could not convert '(POINT*)(& p2D)' from 'POINT* {aka tagPOINT*}' to 'POINT {aka tagPOINT}'*/
};
PUNKTY_3D p3D[8]=
{
{
   	-20,
   	-20,
   	-20,
},
{
   	20,
   	-20,
   	-20,
},
{
   	20,
   	20,
   	-20,
},
{
   	-20,
   	20,
   	-20,
},
{
   	-20,
   	-20,
   	20,
},
{
   	20,
   	-20,
   	20,
},
{
   	20,
   	20,
   	20,
},
{
   	-20,
   	20,
   	20,
},
};
POINT p2D[8]=licz(p3D);/*error: could not convert '(PUNKTY_3D*)(& p3D)' from 'PUNKTY_3D*' to 'PUNKTY_3D'*/

Tak więc wcześniejszego problemu nie ma, ale stworzył się kolejny.

Ja to mam szczęście :(

EDIT:

Nic nie jest w funkcji(nie mówiąc o funkcji licz()).

Link do komentarza
Udostępnij na innych stronach

Spróbuj tak:

 

#define WIELKOSC 100
struct PUNKTY_3D
{
   	int x;
   	int y;
   	int z;
};

POINT* licz(PUNKTY_3D p3D[])
{
   POINT *p2D;
   p2D = new POINT[8];

   for(int i=0;i<7;i++)
   {
       p2D[i].x=p3D[i].x*WIELKOSC/(p3D[i].z-600);
       p2D[i].y=p3D[i].y*WIELKOSC/(p3D[i].z-600);
   }

   return p2D;
};

PUNKTY_3D p3D[8]=
{
   	{
   	-20,
   	-20,
   	-20,
   	},
   	{
   	20,
   	-20,
   	-20,
   	},
   	{
   	20,
   	20,
   	-20,
   	},
   	{
   	-20,
   	20,
   	-20,
   	},
   	{
   	-20,
   	-20,
   	20,
   	},
   	{
   	20,
   	-20,
   	20,
   	},
   	{
   	20,
   	20,
   	20,
   	},
   	{
   	-20,
   	20,
   	20,
   	},
};
POINT *p2D=licz(p3D);

 

Przy obliczeniach pamiętaj o nawiasach!

 

Pozdrawiam!

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...