Если вам нравится SbUP Форум, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....

 

Реализация алгоритма Робертса (Делфи)

Автор котик, 25-04-2013, 21:44:23

« назад - далее »

котикTopic starter

Помогите кто может!Задание для вращающегося куба реализовать алгоритм Робертса .Процедура вращения у меня выполнена отдельно . Это фрагмент именно алгоритма,но он не  работает((

procedure TForm1.Button9Click(Sender: TObject);
Function Visibleverge(i:integer): boolean;
Var V1,V2,N: array[1..3] of real;
    scalar: real;
   j:integer;
Begin
 
   for j:=1 to 3 do begin
       V1[j]:=Point [Line[i,2],j]-Point[Line[i,1],j]; // 2 вектора принадлежащие грани куба
       V2[j]:=Point[Line[i,3],j]-Point [Line[i,1],j];
   End;
 
   N[1]:=V1[2]*V2[3]-V2[2]*V1[3]; // нормали
   N[2]:=V1[3]*V2[1]-V2[3]*V1[1];
   N[3]:=V1[1]*V2[2]-V2[1]*V1[2];
 
   scalar:=N[1]-N[2]-N[3];
   If scalar>0 then
      Visibleverge:=true
   else
     Visibleverge:=false;
END;

Procedure Draw;       // рисование
Var
gran: array[1..4] of TPoint;
Matrix:B3; // матрица из процедуры поворота (но не знаю как указать что она из той самой процедуры ,а не из других)
i,j:integer;
begin

   for i:=1 To 6 do
   begin
      If Visibleverge(i) then
      begin 
         for j:=1 to 4 do
          begin
             gran[j].x:=Matrix[Line[i,j],1];
             gran[j].y:=Matrix[Line[i,j],2];
           end;
        Image1.Picture.Bitmap.Canvas.Pen.Style:=psDot;
      end;
   End;
end;
  •  



Если вам нравится SbUP Форум, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....