Saya ingin menunjukkan lengkung naga dalam lima penyelesaian bahasa:
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;
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;
Lengkung naga mungkin paling biasa dianggap sebagai bentuk yang dihasilkan daripada berulang kali melipat jalur kertas menjadi dua.
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
dengan Kedalaman = 9
Pen.Lebar:= 2; Pen.Warna := clime;
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;
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.
<!-- 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>
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!