elo720 Napisano Czerwiec 8, 2013 Zgłoś Share Napisano Czerwiec 8, 2013 Krótko mówiąc error z tematu wyskakuje mi przy ostatniej linijce: struct PUNKTY_3D { int x; int y; int z; }; PUNKTY_3D p3D; p3D.x=20; Dlaczego? Link do komentarza Udostępnij na innych stronach More sharing options...
xevil21 Napisano Czerwiec 8, 2013 Zgłoś Share Napisano Czerwiec 8, 2013 Witam. Sprawdziłem Twój kod i jest ok. Te dwie linijki muszą być w jakiejś funkcji, np main. PUNKTY_3D p3D; p3D.x=20; Do współrzędnych użyj typu zmiennoprzecinkowego np. double lub float. Pozdrawiam! Link do komentarza Udostępnij na innych stronach More sharing options...
elo720 Napisano Czerwiec 9, 2013 Autor Zgłoś Share Napisano Czerwiec 9, 2013 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 More sharing options...
xevil21 Napisano Czerwiec 9, 2013 Zgłoś Share Napisano Czerwiec 9, 2013 Wróć kolego najpierw do podstaw! W internecie jest dużo darmowych kursów! Pozdrawiam! Link do komentarza Udostępnij na innych stronach More sharing options...
xevil21 Napisano Czerwiec 9, 2013 Zgłoś Share Napisano Czerwiec 9, 2013 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 More sharing options...
elo720 Napisano Czerwiec 10, 2013 Autor Zgłoś Share Napisano Czerwiec 10, 2013 Dzięki wielki. Zawsze miałem kłopoty ze wskażnikami(kiedy ich użyć i po co). Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.