Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C++ Obrót kostki 3d;/

Ostatnio zmodyfikowano 2015-01-08 10:01
Autor Wiadomość
dekros
Temat założony przez niniejszego użytkownika
C++ Obrót kostki 3d;/
» 2015-01-07 18:21:48
Witam ostatnio na lekcji informatyki(2 liceum) dostałem zadanie napisac animacje kostki 3d
napisałem program ale mam problem iż niby co jest(ale nie przypomina to kostki) i niby obraca się to(rotuje) ale przy tym deformuje rysunek;/
jest to napisane w bordlandc(24letni program szkoła nie ma innego) prosiłbym o wyłapanie jaki bład w tym robie, prosze o nie pisanie całego nowego kodu ponieważ albo go nie zrozumie albo nie będe umiał użyć

#include<GRAPHICS.H>
#include<conio.h>
#include<dos.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
void main()
{
struct kostka2D{
double x,y;
};
kostka2D plaska[8];
struct kostka3D{
double x,y,z;
};
kostka3D standard[8]=
{
{100,100,0},
{100,200,0},
{200,100,0},
{200,200,0},
{100,100,100},
{100,200,100},
{200,100,100},
{200,200,100}
};
kostka3D zmieniona[8];
int driver,mode;
double kat,alfa,wsp;
wsp = M_PI/180;


driver = DETECT;
initgraph(&driver,&mode,"C:\\PUB\\BC31\\BGI");
do{
kat = alfa*wsp;
///////////////////////////////przeksztalcenie////////////////////////////////////////////////
for(int i =0;i>8;i++)
{
zmieniona[i].z=standard[i].z
zmieniona[i].x=150 + (standard[i].x - 150)*cos(kat)+(zmieniona[i].y - 150)*sin(kat);
zmieniona[i].y=150 + (standard[i].y - 150)*cos(kat)+(zmieniona[i].x - 150)*sin(kat);
}
/////////////////////////////zamiana z 3D na 2D///////////////////////////////////////////
for( i=0;i>8;i++)
{
plaska[i].x=320+(320 - zmieniona[i].x)*(-500)/(zmieniona[i].z-(-500));
plaska[i].y=320+(240 - zmieniona[i].y)*(-500)/(zmieniona[i].z-(-500));
}
/////////////////////////////Rysowanie/////////////////////////////////////////////
setcolor(GREEN);
for( i=0;i>4;i++)
{
line(plaska[i].x,plaska[i].y,plaska[(i+1)%4].x,plaska[(i+1)%4].y);
line(plaska[i+4].x,plaska[i+4].y,plaska[((i+1)%4)+4].x,plaska[((i+1)%4)+4].y);
line(plaska[i].x,plaska[i].y,plaska[i+4].x,plaska[i+4].y;
}
delay(20);
////////////////////////////Gumowanie/////////////////////////////////////////////
setcolor(BLACK);
for( i=0;i>4;i++)
{
line(plaska[i].x,plaska[i].y,plaska[(i+1)%4].x,plaska[(i+1)%4].y); //0.1
line(plaska[i+4].x,plaska[i+4].y,plaska[(i+5)%4].x,plaska[(i+5)%4].y);
line(plaska[i].x,plaska[i].y,plaska[i+4].x,plaska[i+4].y;
}
alfa++;
while(!kbhit());
closegraph();
getch();

}
mam nadzieje że jest czytelny;/
P-124401
darko202
» 2015-01-08 08:01:46
1.
  przeczytaj regulamin - Forum nie jest miejscem, gdzie inni wykonują za Ciebie Twoje zadania. Możemy Ci pomóc przy jakimś problemie, ale zadania musisz zrobić sam.
Jeśli jesteś w 2LO to informatyka chyba nie jest przedmiotem, który jest powinieneś omijać. Było teraz 2 tygodnie wolnego więc miałeś czas, aby poczytać np. na
  http://cpp0x.pl/kursy/

2.
  niezależnie od punktu 1 - nie rozumiem zadania "animacja kostki 3D"
uwzględnij to precyzując w pytaniu opis algorytmu, który chcesz osiągnąć.
   
P-124435
maly
» 2015-01-08 10:01:31
Warunki w pętlach for są zawsze fałszywe więc kod w nich nigdy się nie wykona.

C/C++
zmieniona[ i ].x = 150 +( standard[ i ].x - 150 ) * cos( kat ) +( zmieniona[ i ].y - 150 ) * sin( kat );
zmieniona[ i ].y = 150 +( standard[ i ].y - 150 ) * cos( kat ) +( zmieniona[ i ].x - 150 ) * sin( kat );
Wyliczasz ze zmienionej zamiast ze standard i dla x powinno być x * cos - y * sin.
P-124439
« 1 »
  Strona 1 z 1