Rumah > hujung hadapan web > tutorial js > Lengkung Naga 2

Lengkung Naga 2

WBOY
Lepaskan: 2024-08-08 16:30:22
asal
808 orang telah melayarinya

Saya ingin menunjukkan lengkung naga dalam lima penyelesaian bahasa:

  1. Pascal
  2. Python
  3. Penyu
  4. Delphi
  5. Skrip Java

Lengkung naga ialah mana-mana ahli keluarga lengkung fraktal yang serupa, yang boleh dianggarkan dengan kaedah rekursif seperti sistem Lindenmayer sebagai prosedur dalam Pascal menunjukkan:

procedure Dragon(n,a,t:Integer; d,x,y: Double; var b: TBitmap);
  var a1, a2: integer;
begin
 if n <= 1 then begin
   with b.Canvas do begin
     Pen.Color:= random(p);
     MoveTo(Trunc(x + 0.5), Trunc(y + 0.5));
     LineTo(Trunc(x + d *_cos[a]+0.5),Trunc(y+d *_sin[a]+0.5));
     exit;
   end;
 end;
 d:= d * s;
 a1:= (a - t) and 7;
 a2:= (a + t) and 7;
 dragon(n - 1, a1, 1, d, x, y, b);
 dragon(n - 1, a2, -1, d, x + d *_cos[a1], y + d *_sin[a1], b);
end;
Salin selepas log masuk

Secara rekursif naga lencong kanan ialah naga kanan diikuti oleh naga kiri, pada sudut 90 darjah. Dan naga kiri adalah kiri diikuti oleh kanan. Perkara yang sama yang anda dapat juga dengan Python dan Turtle dalam maXbox:

Const DRAGFUNC =
  'def dragon(level=4, size=200, direction=45):   '+LF+
  '  if level:                                     '+LF+
  '      right(direction)                          '+LF+
  '      dragon(level-1, size/1.41421356237, 45)   '+LF+
  '      left(direction * 2)                       '+LF+
  '      dragon(level-1, size/1.41421356237, -45)  '+LF+
  '      right(direction)                          '+LF+
  '  else:                                         '+LF+
  '      forward(size)                             ';

function PyCodeDragonTurtle(imgpath, aAPIKey: string): string;
begin
  with TPythonEngine.Create(Nil) do begin
  //pythonhome:= 'C:\Users\User\AppData\Local\Programs\Python\Python312\';
  try
    loadDLL;
    autofinalize:= false;
    ExecString('from turtle import right,left,forward,speed, exitonclick,hideturtle');
    ExecStr(DRAGFUNC); 
    ExecStr('speed(0)');  
    //ExecStr('hideturtle()'); 
    ExecStr('dragon(6)');
    ExecStr('exitonclick()');
    //result:= (EvalStr('r.json()')); *)
  except
    raiseError;        
  finally      
    Free;
  end; 
 end;
end; 
Salin selepas log masuk

Lengkung naga mungkin paling biasa dianggap sebagai bentuk yang dihasilkan daripada berulang kali melipat jalur kertas menjadi dua.

Dragon Curve 2
Naga sebagai Pen.Warna:= (p);

Skrip yang anda dapat di:
Skrip berbilang bahasa

https://sourceforge.net/projects/maxbox/files/Examples/13_General/1320_dragon_curve_51_py.txt/download

Dragon Curve 2
dengan Kedalaman = 9

Dragon Curve 2

Dragon Curve 2
Pen.Lebar:= 2; Pen.Warna := clime;

Bunyi Penyu

Dragon Curve 2
Cuba bunyi penyu dengan sudut sebagai amplitud dan langkah sebagai nada:

procedure DrawDragon2(step, adir: integer; len:real);
begin
  //myturtle:= TJvTurtle.create(self);
  with myturtle do begin
    if (step >-1) and (len >1) then begin
      len:= len /sqrt(2);
      Turn(45*adir);
        DrawDragon2(step-1, +1, len);
      Turn(-90*adir);
        DrawDragon2(step-1, -1, len);
      Turn(45*adir);
    end else      //*)
      moveforward(len )
  end;  
end;
Salin selepas log masuk

Dragon Curve 2

JavaScript Terbenam

Kawalan Microsoft Edge WebView2 membolehkan anda membenamkan teknologi web (HTML, CSS dan JavaScript) dalam apl asli anda. Kawalan WebView2 menggunakan Microsoft Edge sebagai enjin pemaparan untuk memaparkan kandungan web dalam apl asli.

Dragon Curve 2

<!-- DragonCurve.html -->
<html>
<head>
<script type='text/javascript'>
function pDragon(cId) {
  // Plotting Dragon curves. 2/25/17 aev
  var n=document.getElementById('ord').value;
  var sc=document.getElementById('sci').value;
  var hsh=document.getElementById('hshi').value;
  var vsh=document.getElementById('vshi').value;
  var clr=document.getElementById('cli').value;
  var c=c1=c2=c2x=c2y=x=y=0, d=1, n=1<<n;
  var cvs=document.getElementById(cId);
  var ctx=cvs.getContext("2d");
  hsh=Number(hsh); vsh=Number(vsh);
  x=y=cvs.width/2;
  // Cleaning canvas, init plotting
  ctx.fillStyle="white"; ctx.fillRect(0,0,cvs.width,cvs.height);
  ctx.beginPath();
  for(i=0; i<=n;) {
    ctx.lineTo((x+hsh)*sc,(y+vsh)*sc);
    c1=c&1; c2=c&2;
    c2x=1*d; if(c2>0) {c2x=(-1)*d}; c2y=(-1)*c2x;
    if(c1>0) {y+=c2y} else {x+=c2x}
    i++; c+=i/(i&-i);
  }
  ctx.strokeStyle = clr;  ctx.stroke();
}
</script>
</head>
<body>
<p><b>Please input order, scale, x-shift, y-shift, color:</></p>
<input id=ord value=11 type="number" min="7" max="25" size="2">
<input id=sci value=7.0 type="number" min="0.001" max="10" size="5">
<input id=hshi value=-265 type="number" min="-50000" max="50000" size="6">
<input id=vshi value=-260 type="number" min="-50000" max="50000" size="6">
<input id=cli value="red" type="text" size="14">
<button onclick="pDragon('canvId')">Plot it!</button>
<h3>Dragon curve</h3>
<canvas id="canvId" width=640 height=640 style="border: 2px inset;"></canvas>
</body>
</html> 
Salin selepas log masuk

Dragon Curve 2
Ubah suai dan teroka dalam EdgeView maXbox5
Skrip yang anda temui di:

skrip keseluruhan 5 bahasa di

Atas ialah kandungan terperinci Lengkung Naga 2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan