Witam, chce se narysowac dym i na poczatku inicjuje kilka dymków (definiuje ich pozycje) (pozniej chce te dymki przesuwac i powiekszac), no to inicjuje sobie te pozycje: ale od razu male wyjasnienie ja chce zeby te moje dymki byly ladnie umieszczone na okregu o środku POSITION (T3DPOINT) i promieniu RADIUS (SINGLE) czyli dziele sobie 360 stopni na ilość dymków DESTINY (INTEGER) i później mnoże to razy numer dymku co daje mi pelne 360 stopni niby wszystko ok ale to nie dziala jak powinno nie wiem czy cos spieprzylem
im.pos.x := position.x+radiussin((destiny/360)iimopi);
im.pos.y := position.y+random(100);
im.pos.z := position.z+radius
cos((destiny/360)iimopi);
widać destiny/360 mozna zaminenic na 360/destiny i tak nic to nie da bo: ten promien cos nie dziala nie ustawiają mi sie dymki w odległości RADIUS od środka okręgu POSITION tylko nachodza na siebie dodam ze radius mam ustawiony na 100 i nie ma to nic wspolnego ze zlym wyswietlaniem dymu) zle jest obliczana pozycja z tego co wiem :U co tu jest źle omg, aha imopi to jest pi/180

procedure draw_smoke_nade_explode(position : t3dpoint; time : single; radius : single; destiny : integer; var dym : tsmoke);
var
i : integer;
im : tsmoke_nfo;
f : single;
xs : single;
begin

for I:=0 to destiny-1 do
begin
xs := random(1000);
im.pos.x := position.x+radius*sin((destiny/360)*i*imopi);
im.pos.y := position.y+random(100);
im.pos.z := position.z+radius*cos((destiny/360)*i*imopi);
im.visible:=true;
im.size := 10;
im.alpha := 1;
im.color.x := xs/1000;
im.color.y := xs/1000;
im.color.z := xs/1000;
add_smoke_quad(dym,im);
end;

end;

a ponizej zamieszczam kod na narysowanie dowolnego prymitywu foremnego zaczynajacego sie od 3 wierzcholkow, im wieksza precyzja (PRECISION) to wtedy sie kolo rysuje

procedure draw_circle_solid2(radius, fx,fy,fz : real; precision : integer);
var
vectorX, vectorZ,vx,vz : real;
angle : integer;
plus : single;
begin
plus := 360/precision;

glBegin(GL_triangle_FAN);
glvertex3f(fx,fy,fz);
for angle:=0 to precision-1 do
begin
//srodek
vectorX := fX + (Radius * sin(anglepluspi/180));
vectorZ := fZ + (Radius * cos(anglepluspi/180));
vx := fX + (Radius * sin((plus+angle*plus)pi/180));
vz := fZ + (Radius * cos((plus+angle
plus)*pi/180));
glVertex3f(vectorX, fy, vectorZ); //to jest o kat
glvertex3f(vx,fy,vz);
end;
glEnd;
end;