📄 unit1.~pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Memo2: TMemo;
Memo3: TMemo;
Memo4: TMemo;
Memo5: TMemo;
Memo6: TMemo;
Memo7: TMemo;
Memo8: TMemo;
Memo9: TMemo;
Memo10: TMemo;
Memo11: TMemo;
Memo12: TMemo;
Memo13: TMemo;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
procedure Button1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function Mmax( X1,X2,X3,X4,X5,X6: integer): integer;
begin
if X2>X1 then X1:=X2;
if X3>X1 then X1:=X3;
if X4>X1 then X1:=X4;
if X5>X1 then X1:=X5;
if X6>X1 then X1:=X6;
Mmax:=X1;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
T: string;
A: real;
I,K,U0,V0,W0,U1,V1,W1: integer;
Step,Pop,Total: integer;
begin
Button1.Enabled:=False;
Memo1.Lines.Clear;
Memo2.Lines.Clear;
Memo3.Lines.Clear;
Memo4.Lines.Clear;
Memo5.Lines.Clear;
Memo6.Lines.Clear;
Memo7.Lines.Clear;
Memo8.Lines.Clear;
Memo9.Lines.Clear;
Memo10.Lines.Clear;
Memo11.Lines.Clear;
Memo12.Lines.Clear;
Memo13.Lines.Clear;
Step:=strToInt(Edit1.Text);//6角度步长
Pop:=strToInt(Edit2.Text);//30每步点数
Total:=360 div Step;//每周期步数
I:=0;
while (I<360) do begin
A:=(SIN(3.14159 * I / 180)) * Pop;
K:=Round(A);
if K>0 then Memo1.Lines.Add(IntToStr(K)) else Memo1.Lines.Add('0');
if K<0 then Memo4.Lines.Add(IntToStr(-K)) else Memo4.Lines.Add('0');
I:=I+Step;
end;
I:=240;
while (I<360) do begin
A:=(SIN(3.14159 * I / 180)) * Pop;
K:=Round(A);
if K>0 then Memo2.Lines.Add(IntToStr(K)) else Memo2.Lines.Add('0');
if K<0 then Memo5.Lines.Add(IntToStr(-K)) else Memo5.Lines.Add('0');
I:=I+Step;
end;
I:=0;
while (I<240) do begin
A:=(SIN(3.14159 * I / 180)) * Pop;
K:=Round(A);
if K>0 then Memo2.Lines.Add(IntToStr(K)) else Memo2.Lines.Add('0');
if K<0 then Memo5.Lines.Add(IntToStr(-K)) else Memo5.Lines.Add('0');
I:=I+Step;
end;
I:=120;
while (I<360) do begin
A:=(SIN(3.14159 * I / 180)) * Pop;
K:=Round(A);
if K>0 then Memo3.Lines.Add(IntToStr(K)) else Memo3.Lines.Add('0');
if K<0 then Memo6.Lines.Add(IntToStr(-K)) else Memo6.Lines.Add('0');
I:=I+Step;
end;
I:=0;
while (I<120) do begin
A:=(SIN(3.14159 * I / 180)) * Pop;
K:=Round(A);
if K>0 then Memo3.Lines.Add(IntToStr(K)) else Memo3.Lines.Add('0');
if K<0 then Memo6.Lines.Add(IntToStr(-K)) else Memo6.Lines.Add('0');
I:=I+Step;
end;
for I:=0 to Total-1 do begin
U0:=StrToInt(Memo1.Lines.Strings[I]);
V0:=StrToInt(Memo2.Lines.Strings[I]);
W0:=StrToInt(Memo3.Lines.Strings[I]);
U1:=StrToInt(Memo4.Lines.Strings[I]);
V1:=StrToInt(Memo5.Lines.Strings[I]);
W1:=StrToInt(Memo6.Lines.Strings[I]);
for K:=1 to U0 do begin
Memo7.Lines.Add('1');
Memo8.Lines.Add('0');
Memo9.Lines.Add('0');
end;
for K:=1 to V0 do begin
Memo7.Lines.Add('0');
Memo8.Lines.Add('1');
Memo9.Lines.Add('0');
end;
for K:=1 to W0 do begin
Memo7.Lines.Add('0');
Memo8.Lines.Add('0');
Memo9.Lines.Add('1');
end;
for K:=U0+V0+W0+1 to Pop do begin
Memo7.Lines.Add('0');
Memo8.Lines.Add('0');
Memo9.Lines.Add('0');
end;
for K:=1 to U1 do begin
Memo10.Lines.Add('1');
Memo11.Lines.Add('0');
Memo12.Lines.Add('0');
end;
for K:=1 to V1 do begin
Memo10.Lines.Add('0');
Memo11.Lines.Add('1');
Memo12.Lines.Add('0');
end;
for K:=1 to W1 do begin
Memo10.Lines.Add('0');
Memo11.Lines.Add('0');
Memo12.Lines.Add('1');
end;
for K:=U1+V1+W1+1 to Pop do begin
Memo10.Lines.Add('0');
Memo11.Lines.Add('0');
Memo12.Lines.Add('0');
end;
end;
T:='';
for I:=0 to Total * Pop - 1 do begin
U0:=StrToInt(Memo7.Lines.Strings[I]);
V0:=StrToInt(Memo8.Lines.Strings[I]);
W0:=StrToInt(Memo9.Lines.Strings[I]);
U1:=StrToInt(Memo10.Lines.Strings[I]);
V1:=StrToInt(Memo11.Lines.Strings[I]);
W1:=StrToInt(Memo12.Lines.Strings[I]);
K:=0;
if U0=1 then K:=K or $01;
if V0=1 then K:=K or $02;
if W0=1 then K:=K or $04;
if U1=1 then K:=K or $08;
if V1=1 then K:=K or $10;
if W1=1 then K:=K or $20;
T:=T+'0x'+intToHex(K,2)+',';
if (I mod 10 =0) then begin
Memo13.Lines.Add(T);
T:='';
end;
end;
Memo13.Lines.Add(T);
Memo13.SetFocus;
Memo13.SelectAll;
Memo13.CopyToClipboard;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
Button1.Enabled:=True;
end;
procedure TForm1.Edit2Change(Sender: TObject);
begin
Button1.Enabled:=True;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -