Sieć heksagonalna

0

Witam,
muszę narysować w delphi sieć heksagonalną, ale nie za bardzo mi to wychodzi. Mam to do zrobienia na wczoraj więc prosiłbym o pomoc :) Z góry dzięki.

0

Dzięki za linka, ale nie przydał się za bardzo ;) Poradziłem sobie już, pewnie najbardziej łopatologicznym i pracochłonnym sposobem, ale najważniejsze, że działa :) Może kiedyś komuś się przyda, więc podaję kod:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Button1: TButton;
    Button2: TButton;
    Timer1: TTimer;
    procedure rysujHex ();
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
     Y : Integer;
     X : Integer;
  end;
var
  Form1: TForm1;
  Y : Integer;

implementation

{$R *.dfm}


procedure TForm1.rysujHex ();
var
  Z : Integer;
begin

///////////////////////////linie glowne

  Image1.Canvas.Pen.Color:=clBlue;
  X:=0;
  Y:=0;
  repeat
    X:=0;
    repeat
      Image1.Canvas.MoveTo(X,Y);
      Image1.Canvas.LineTo(X+20,Y);
      X:=X+80;
    until X>=Image1.Width;
    Y:=Y+40;
  until Y>=Image1.Height;

///////////////////////////srodkowe linie

  X:=40;
  Y:=20;
  repeat
    X:=40;
    repeat
      Image1.Canvas.MoveTo(X,Y);
      Image1.Canvas.LineTo(X+20,Y);
      X:=X+80;
    until X>=Image1.Width;
    Y:=Y+40;
  until Y>=Image1.Height;

///////////////////////////prawa gora

  X:=20;
  Y:=0;
  Z:=0;
  repeat
    repeat
      Y:=Z;
      Image1.Canvas.MoveTo(X, Y);
      Image1.Canvas.LineTo(X+20, Y+20);
      X:=X+80;
    until X>=Image1.Width;
    X:=20;
    Z:=Y+40;
  until Y>=Image1.Height;

///////////////////////////lewa góra

  X:=80;
  Y:=0;
  Z:=0;
  repeat
    repeat
      Y:=Z;
      Image1.Canvas.MoveTo(X, Y);
      Image1.Canvas.LineTo(X-20, Y+20);
      X:=X+80;
    until X>=Image1.Width;
    X:=80;
    Z:=Y+40;
  until Y>=Image1.Height;

///////////////////////////prawy dol

  X:=20;
  Y:=40;
  Z:=40;
  repeat
    repeat
      Y:=Z;
      Image1.Canvas.MoveTo(X,Y);
      Image1.Canvas.LineTo(X+20,Y-20);
      X:=X+80;
    until X>=Image1.Width;
    X:=20;
    Z:=Y+40;
  until Y>=Image1.Height;

///////////////////////////lewy dol

  X:=60;
  Y:=20;
  Z:=20;
  repeat
    repeat
      Y:=Z;
      Image1.Canvas.MoveTo(X,Y);
      Image1.Canvas.LineTo(X+20,Y+20);
      X:=X+80;
    until X>=Image1.Width;
    X:=60;
    Z:=Y+40;
  until Y>=Image1.Height;

end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  rysujHex();
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
rysujHex();
//Y:=Y+10;
end;

end.
0

Witam,

To mi wygląda na heksagon przyduszony :-/ (nie ma równych boków).
Masakra!

Pzdr

0

Witam,

To mi wygląda na heksagon przyduszony :-/ (nie ma równych boków).
Masakra!

Pzdr

0

tu masz wzory na pozycje wierzchołków - powinno pomóc :) http://www.rdwarf.com/users/wwonko/hex/

0

Witam,

To mi wygląda na heksagon przyduszony :-/ (nie ma równych boków).
Masakra!

Pzdr

A czy ja napisałem gdzieś, że to ma być sześcian foremny? Z resztą jak Ci się nie podoba nie musisz korzystać z kodu, ja to robiłem na szybko bo miałem projek do oddania na zaliczenie, więc nie zagłębiałem się specjalnie w równość boków, która w tym wypadku była najmniej istotna...
pozdr

1 użytkowników online, w tym zalogowanych: 0, gości: 1