স্পিরোগ্রাফের সময়!


14

স্পিরোগ্রাফ হ'ল হাইপোট্রোকয়েডস এবং এপিট্রোচয়েডগুলি আঁকানো একটি খেলনা। এই চ্যালেঞ্জের জন্য, আমরা কেবল হাইপোট্রোচয়েডগুলিতে ফোকাস করব।

উইকিপিডিয়া থেকে :

একজন hypotrochoid একটি রুলেট একটি বিন্দু ব্যাসার্ধ্যের একটি চেনাশোনাতে সংযুক্ত দ্বারা আঁকা হয় ব্যাসার্ধ একটি নির্দিষ্ট বৃত্তের ভিতরে প্রায় ঘূর্ণায়মান আর , যেখানে বিন্দু একটি দূরত্ব অভ্যন্তর বৃত্তের কেন্দ্র থেকে।

তাদের জন্য প্যারাম্যাট্রিক সমীকরণগুলি সংজ্ঞায়িত করা যেতে পারে:

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন

যেখানে θ হল অনুভূমিক এবং ঘূর্ণায়মান বৃত্তের কেন্দ্র দ্বারা গঠিত কোণ।


আপনার কাজটি এমন একটি প্রোগ্রাম লিখতে হবে যা উপরের সংজ্ঞায়িত পয়েন্ট দ্বারা চিহ্নিত পথটি আঁকবে। ইনপুট হিসাবে, আপনাকে আর , আর , এবং ডি দেওয়া হবে , 1 থেকে 200 এর মধ্যে সমস্ত পূর্ণসংখ্যা।

আপনি স্ট্যান্ডিন, আর্গুমেন্ট বা ব্যবহারকারী ইনপুট থেকে এই ইনপুটটি পেতে পারেন তবে এটি প্রোগ্রামটিতে হার্ডকোড করা যাবে না। আপনার পক্ষে সবচেয়ে সুবিধাজনক যে কোনও আকারে আপনি এটি গ্রহণ করতে পারেন; স্ট্রিং, পূর্ণসংখ্যা ইত্যাদি

ধরে:

  • ইনপুট ইউনিট পিক্সেল দেওয়া হয়।
  • আর > = আর

আউটপুট ইনপুট দ্বারা সংজ্ঞায়িত হাইপোট্রোকয়েডের গ্রাফিকাল উপস্থাপনা হওয়া উচিত। কোনও ASCII- বা অন্য পাঠ্য-ভিত্তিক আউটপুট অনুমোদিত নয়। এই চিত্রটি কোনও ফাইলে সংরক্ষণ করা যায় বা স্ক্রিনে প্রদর্শিত হতে পারে। আপনার পছন্দসই একটি ইনপুট জন্য আউটপুট একটি স্ক্রিনশট বা চিত্র অন্তর্ভুক্ত।

আপনি পথ / পটভূমির জন্য পছন্দসই রঙ বেছে নিতে পারেন, বৈপরীত্যের সীমাবদ্ধতার সাপেক্ষে। দুটি বর্ণের অবশ্যই এইচএসভি 'মান' উপাদান কমপক্ষে অর্ধেক স্কেল আলাদা থাকতে হবে। উদাহরণস্বরূপ, আপনি যদি এইচএসভি পরিমাপ [0...1]করেন তবে কমপক্ষে 0.5পার্থক্য থাকা উচিত । এর মধ্যে [0...255]ন্যূনতম 128পার্থক্য থাকা উচিত ।


এটি একটি কোড গল্ফ, বাইট জিতে সোর্স কোডের সর্বনিম্ন আকার।


আমরা কি ধরে নিতে পারি R > rনাকি R ≥ r? (একইর জন্য rএবং d।)
মার্টিন এন্ডার

10
2000 তম প্রশ্ন পোস্ট করার জন্য অভিনন্দন! ;-)
ডোরকনবব

@ এম.বয়েটনার R>=r, তবে dসীমাবদ্ধ নয় rএবং 1-200 রেঞ্জের যে কোনও জায়গায় থাকতে পারে।
জিওবিটস

আমরা কোন ধরণের রেজোলিউশনের কথা বলছি?
কাইল কানোজ

@ কাইলক্যানোস যেহেতু ইনপুটটি পিক্সেলগুলিতে রয়েছে এবং প্রত্যেকের 200 টি ক্যাপ রয়েছে তাই প্রদত্ত এটি 798x798 এর চেয়ে বড় কখনও হওয়া উচিত নয় R=200, r=1, d=200। আপনি চাইলে চিত্রটি ইনপুটটিতে আকার দিতে পারেন, বা যতক্ষণ না এটি দৃশ্যমান থাকে ততক্ষণ এটিকে ধ্রুব আকারে রাখতে পারেন।
জিওবিটস

উত্তর:


8

গণিত, 120 বাইট

f[R_,r_,d_]:=ParametricPlot[p#@t+#[-p*t/r]d&/@{Cos,Sin},{t,0,2r/GCD[p=R-r,r]Pi},PlotRange->400,ImageSize->800,Axes->0>1]

অবহেলিত কোড এবং উদাহরণ আউটপুট: এখানে চিত্র বর্ণনা লিখুন

আমি যদি প্লটে অক্ষগুলি অন্তর্ভুক্ত করতে পারি তবে আমি আরও 9 টি অক্ষর সংরক্ষণ করতে পারি।


5

জাভাস্ক্রিপ্ট (ECMAScript 6) - 312 314 অক্ষর

document.body.appendChild(e=document.createElement("canvas"))
v=e.getContext("2d")
n=(e.width=e.height=800)/2
M=Math
P=2*M.PI
t=0
p=prompt
r=p('r')
R=p('R')-r
d=p('d')
X=x=>n+R*M.cos(t)+d*M.cos(R/r*t)
Y=x=>n+R*M.sin(t)-d*M.sin(R/r*t)
v.beginPath()
v.moveTo(X(),Y())
for(;t<R*P;v.lineTo(X(),Y()))t+=P/2e4
v.stroke()

JSFIDDLE

উদাহরণ আউটপুট

R = 1, আর = 200, ডি = 30

এখানে চিত্র বর্ণনা লিখুন


আমি এটি পছন্দ করি, তবে একরকমভাবে ভেঙে গেছে। আর।
edc65

শেষ লাইনটি (; টি <আর * পি; ভি.লাইনটো (এক্স (), ওয়াই ()) এর জন্য হতে পারে টি + = পি / আর
এডসি 65

@ edc65 এটি ভাঙ্গা হয়নি এটি কেবলমাত্র উদাহরণগুলিতে সম্পূর্ণ ঘূর্ণন করার জন্য পর্যাপ্ত পুনরাবৃত্তি করছিল না। আমি পুনরাবৃত্তিগুলি 9 * পিআই থেকে আর * 2 * পিআই পর্যন্ত বাড়িয়েছি এবং এটি আরও ভাল হওয়া উচিত (তবে, আমি পিআই / 1000 এ বর্ধনটি রেখে দিয়েছি কারণ এটি আর এর ছোট মানগুলির জন্য ভাঙবে)।
এমটি0

3

পাইথন: 579

সারসংক্ষেপ

এটি ম্যাথামেটিকার উত্তর প্রদানে মোটেও প্রতিযোগিতামূলক নয়, তবে আমি যাইহোক এটি পোস্ট করার সিদ্ধান্ত নিয়েছি কারণ ছবিগুলি বেশ সুন্দর এবং এটি কারও অনুপ্রেরণা জাগাতে পারে বা কারও উপকারী হতে পারে। এটি এত বড় যেহেতু, আমি এটি মূলত ungolfed রেখেছি। প্রোগ্রামটি আর, আর, ডি-র কমান্ড-লাইন ইনপুট আশা করে।

স্ক্রিনশট

এখানে দুটি উদাহরণ রয়েছে, একটি (5,3,5) এর জন্য এবং একটি (10,1,7) এর জন্য উদাহরণ 5-3-5 উদাহরণস্বরূপ 10-1-7

কোড

import math
import matplotlib.pyplot as P
from matplotlib.path import Path as H
import matplotlib.patches as S
import sys
a=sys.argv
(R,r,d)=int(a[1]),int(a[2]),int(a[3])
v=[]
c=[]
c.append(H.MOVETO)
t=0
while(len(v)<3 or v.count(v[-1])+v.count(v[-2])<3):
 p=t*math.pi/1000
 t+=1
 z=(R-r)*p/r
 v.append((round((R-r)*math.cos(p)+d*math.cos(z),3),round((R-r)*math.sin(p)-d*math.sin(z),3)))
 c.append(H.LINETO)
c.pop()
v.append((0,0))
c.append(H.CLOSEPOLY)
f=P.figure()
x=f.add_subplot(111)
x.add_patch(S.PathPatch(H(v,c)))
l=R+d-r
x.set_xlim(-l-1,l+1)
x.set_ylim(-l-1,l+1)
P.show()

2
আপনি অনুপাত সামঞ্জস্য করতে পারেন? মনে হচ্ছে চিত্রটি উলম্বভাবে সংকুচিত হয়েছে।
AL

3

পার্ল / টাকা - 239 227

use Tk;($R,$r,$d)=@ARGV;$R-=$r;$s=$R+$d;$c=tkinit->Canvas(-width=>2*$s,-height=>2*$s)->pack;map{$a=$x;$b=$y;$x=$s+$R*cos($_/=100)+$d*cos$_*$R/$r;$y=$s+$R*sin($_)-$d*sin$_*$R/$r;$c->createLine($a,$b,$x,$y)if$a}0..628*$s;MainLoop

আর = 120, আর = 20, ডি = 40:

আর = 120, আর = 20, ডি = 40

আর = 128, আর = 90, ডি = 128:

আর = 128, আর = 90, ডি = 128

আর = 179, আর = 86, ডি = 98:

আর = 179, আর = 86, ডি = 98


2

প্রক্রিয়াজাতকরণ, 270

import java.util.Scanner;
void setup(){size(500, 500);}
Scanner s=new Scanner(System.in);
int R=s.nextInt(),r=s.nextInt(),d=s.nextInt();
void draw(){
  int t=width/2,q=(R-r);
  for(float i=0;i<R*PI;i+=PI/2e4)
    point(q*sin(i)-d*sin(i*q/r)+t,q*cos(i)+d*cos(i*q/r)+t);
}

ইনপুট কনসোলের মাধ্যমে প্রবেশ করানো হয়েছে, প্রতি লাইনে এক নম্বর।

আর = 65, আর = 15, ডি = 24 এর জন্য স্ক্রিনশট: এখানে চিত্র বর্ণনা লিখুন


2

জিওজেব্রা, 87

এটি হ'ল আপনি যদি জিওজেব্রাকে একটি বৈধ ভাষা বলে মনে করেন।

R=2
r=1
d=1
D=R-r
Curve[D*cos(t)+d*cos(D*t/r),D*sin(t)-d*sin(D*t/r),t,0,2π*r/GCD[D,r]]

জিওজেব্রা ইনপুট বার থেকে ইনপুট গ্রহণ করে <variable>=<value>, যেমন ফর্ম্যাটে R=1000

নোট করুন যে পুরো চিত্রটি দেখার জন্য আপনাকে ম্যানুয়ালি জুম আকার পরিবর্তন করতে হবে।

স্ক্রিনশট

(উইন্ডোর নীচের জিনিসটি যে ইনপুট বারটি সম্পর্কে আমি কথা বলছিলাম তা হ'ল)

এটি এখানে অনলাইনে চেষ্টা করুন


1
আমি মনে করি কাইল কানোসের জমা দেওয়ার মতো এটিরও একই সীমাবদ্ধতা রয়েছে যে আপনি পিক্সেলগুলিতে আকার নির্দিষ্ট করতে পারবেন না?
মার্টিন এন্ডার

@ এম.বয়েটনার হ্যাঁ আপনি ঠিক বলেছেন ... মিস করেছেন
ব্যবহারকারী 12205

2

এইচটিএমএল + জাভাস্ক্রিপ্ট 256 286 303

মুভিটোতে 1 ম কলটি সরিয়ে সম্পাদনা করুন , এটি যাইহোক কাজ করে। আরও কাটা স্টার্টপথ সংরক্ষণ করতে পারে তবে এটি কেবল প্রথমবারের মতো কাজ করে

Edit2 30 বাইট সংরক্ষিত ধন্যবা @ ӍѲꝆΛҐӍΛПҒЦꝆ

<canvas id=c></canvas>R,r,d:<input oninput="n=400;c.width=c.height=t=n+n;v=c.getContext('2d');s=this.value.split(',');r=s[1],d=s[2],R=s[0]-r;v.beginPath();for(C=Math.cos,S=Math.sin;t>0;v.lineTo(n+R*C(t)+d*C(R/r*t),n+R*S(t)-d*S(R/r*t)),t-=.02);v.stroke()">

পরীক্ষা

পাঠ্য বাক্সে ইনপুট রাখুন (কমা দ্বারা পৃথক করা) তারপরে ট্যাব টিপুন

R,r,d:<input onchange="n=400;c.width=c.height=t=n+n;v=c.getContext('2d');s=this.value.split(',');r=s[1],d=s[2],R=s[0]-r;v.beginPath();for(C=Math.cos,S=Math.sin;t>0;v.lineTo(n+R*C(t)+d*C(R/r*t),n+R*S(t)-d*S(R/r*t)),t-=.02);v.stroke()"><canvas id=c></canvas>


1
আপনি কি ক্যানভাসে কেবল একটি আইডি যুক্ত করতে পারেন না এবং ক্যোয়ারী নির্বাচনকারী ব্যবহারের পরিবর্তে এই আইডিটি বিশ্বব্যাপী ব্যবহার করতে পারেন!
মামা ফান রোল

@ ӍѲꝆΛҐӍΛПҒЦꝆ ইয়েইগুলি আমি পারতাম। এটি এমন কিছু যা আমি 2014
সালের

বাহ যে আমার চেয়ে বেশি বাইট সেভ ছিল।
মামা ফান রোল 21

2

আর, 80 বাইট

f=function(R,r,d){a=0:1e5/1e2;D=R-r;z=D*exp(1i*a)+d*exp(-1i*D/r*a);plot(z,,'l')}

তবে, যদি কেউ 'পরিষ্কার' চিত্রগুলি (কোনও অক্ষ, কোনও লেবেল ইত্যাদি) না চান, তবে কোডটি কিছুটা দীর্ঘ হতে হবে (৮৮ টি অক্ষর):

f=function(R,r,d)plot((D=R-r)*exp(1i*(a=0:1e5/1e2))+d*exp(-1i*D/r*a),,'l',,,,,,'','',,F)

একটি কোড উদাহরণ চ এর দীর্ঘ সংস্করণ ব্যবহার করে:

f(R<-179,r<-86,d<-98);title(paste("R=",R,", r=",r," d=",d,sep=""))

কিছু উদাহরণ ফলাফল:

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন


এটি পিক্সেলগুলিতে ইনপুট আকার নেয় না, তাই না? প্রথম উদাহরণটি দ্বিতীয়টির চেয়ে প্রায় তিনগুণ বেশি হওয়া উচিত।
মার্টিন ইন্ডার

কেন সব ,??
প্ল্যানাপাস

কমাগুলি আর্গুমেন্টগুলি পৃথক করার জন্য ব্যবহৃত হত, যার মধ্যে অনেকগুলি NULL (কিছুই ছিল না)। কোডের দৈর্ঘ্য হ্রাস করার জন্য এখানে অবস্থানগত আর্গুমেন্ট ম্যাচিং ব্যবহৃত হয়েছিল। এটি অবশ্যই খারাপ কোডিং অনুশীলন। প্রস্তাবিত উপায় হ'ল নামযুক্ত আর্গুমেন্ট তালিকা যেমন টাইপ = "এল", xlabel = "" ইত্যাদি ব্যবহার করা (এবং অনর্থক কমা থেকে মুক্তি পান!)।
ফেং

1

সি # 813, ছিল 999

বাইট গণনা কমাতে কিছু কাজের প্রয়োজন। আমি এটি কিছুটা কমাতে সক্ষম হয়েছি। এটি কনসোল থেকে পৃথক তিনটি পৃথক পূর্ণসংখ্যা গ্রহণ করে।

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
class P:Form
{
int R,r,d;
P(int x,int y,int z) {R=x;r=y;d=z;}
protected override void OnPaint(PaintEventArgs e)
{
if(r==0)return;
Graphics g=e.Graphics;
g.Clear(Color.Black);
int w=(int)this.Width/2;
int h=(int)this.Height/2;
List<PointF> z= new List<PointF>();
PointF pt;
double t,x,y;
double pi=Math.PI;
for (t=0;t<2*pi;t+=0.001F)
{
x=w+(R-r)*Math.Cos(t)+d*Math.Cos(((R-r)/r)*t);
y=h+(R-r)*Math.Sin(t)-d*Math.Sin(((R-r)/r)*t);
pt=new PointF((float)x,(float)y);
z.Add(pt);
}
g.DrawPolygon(Pens.Yellow,z.ToArray());
}
static void Main()
{
char[] d={' '};
string[] e = Console.ReadLine().Split(d);
Application.Run(new P(Int32.Parse(e[0]),Int32.Parse(e[1]),Int32.Parse(e[2])));
}
}

আউটপুট নমুনা:

Spirograph


1

শেল স্ক্রিপ্ট + gnuplot (153)

বেশিরভাগ প্রচেষ্টা হ'ল অক্ষ এবং কৌশলগুলি সরানো, আকার এবং ব্যাপ্তি নির্ধারণ করা এবং নির্ভুলতা বাড়ানো increase ধন্যবাদ, gnuplot গল্ফিং জন্য প্রাকৃতিক, তাই বেশিরভাগ কমান্ড সংক্ষিপ্ত করা যেতে পারে। অক্ষরগুলি সংরক্ষণ করতে, আউটপুটটি ম্যানুয়ালি একটি চিত্র ফাইলে ডাইরেক্ট করতে হবে।

gnuplot<<E
se t pngc si 800,800
se pa
se sa 1e4
uns bor
uns tic
a=$1-$2
b=400
p[0:2*pi][-b:b][-b:b]a*cos($2*t)+$3*cos(a*t),a*sin($2*t)-$3*sin(a*t) not
E

স্ক্রিপ্ট কে কল করা হচ্ছে সঙ্গে spiro.sh 175 35 25>i.pngদেয় এখানে চিত্র বর্ণনা লিখুন


1

আর, 169 টি অক্ষর

f=function(R,r,d){png(w=2*R,h=2*R);par(mar=rep(0,4));t=seq(0,R*pi,.01);a=R-r;x=a*cos(t)+d*cos(t*a/r);y=a*sin(t)-d*sin(t*a/r);plot(x,y,t="l",xaxs="i",yaxs="i");dev.off()}

ইন্ডেন্টযুক্ত:

f=function(R,r,d){
    png(w=2*R,h=2*R) #Creates a png device of 2*R pixels by 2*R pixels
    par(mar=rep(0,4)) #Get rid of default blank margin
    t=seq(0,R*pi,.01) #theta
    a=R-r
    x=a*cos(t)+d*cos(t*a/r)
    y=a*sin(t)-d*sin(t*a/r)
    plot(x,y,t="l",xaxs="i",yaxs="i") #Plot spirograph is a plot that fits tightly to it (i. e. 2*R by 2*R)
    dev.off() #Close the png device.
}

উদাহরণ:

> f(65,15,24)

এখানে চিত্র বর্ণনা লিখুন

> f(120,20,40)

এখানে চিত্র বর্ণনা লিখুন

> f(175,35,25)

এখানে চিত্র বর্ণনা লিখুন


1

স্মাইলব্যাসিক, 96 বাইট

INPUT R,Q,D
M=R+MAX(Q,D)
S=R-Q@L
GPSET M+S*COS(I)+D*COS(S/Q*I),M+S*SIN(I)-D*SIN(S/Q*I)I=I+1GOTO@L

ইনপুট: 50,30,50:

এখানে চিত্র বর্ণনা লিখুন


1

বেফুঞ্জ -98, 113 বাইট

&&:00p-10p&20p"PXIF"4(10g'd:*:I10v>H40gF1+:"}`"3**`>jvI@
1(4"TURT"p04/d'*g02I/g00*p03/d'*g<^-\0/g00*g01:Fg03H:<0P

এই কোডটি কিছু ত্রিকোণমিতিক গণনার জন্য ফিক্সড পয়েন্ট ম্যাথস (এফআইএক্সপি) ফিঙ্গারপ্রিন্ট এবং টার্টল গ্রাফিক্স (টিআরটি) এর উপর নির্ভর করে ফিঙ্গারপ্রিন্ট এবং পথ আঁকার জন্য ফিঙ্গারপ্রিন্টের ।

বেফুঞ্জের কচ্ছপ গ্রাফিক্স লোগো প্রোগ্রামিং ভাষার গ্রাফিক্সের সাথে আচরণের সাথে খুব মিল । আপনি একটি 'টার্টল' (আপনার কলম হিসাবে পরিবেশন করা) দিয়ে আঁকেন, যা আপনি আউটপুট পৃষ্ঠের চারপাশে চালিত করেন। এটি কচ্ছপকে একটি নির্দিষ্ট দিকে অভিমুখী করে এবং তারপরে নির্দিষ্ট দূরত্বে এগিয়ে যাওয়ার নির্দেশ দেয়।

এই সিস্টেমের সাথে কাজ করার জন্য, আমার মূল স্পিরোগ্রাফিক সমীকরণগুলিকে কিছুটা কচ্ছপ বান্ধব কিছুতে সামঞ্জস্য করা দরকার। আমি নিশ্চিত নই যে এটি সর্বোত্তম পদ্ধতির কিনা, তবে আমি অ্যালগরিদম এর সাথে কিছু কাজ করে এসেছি:

ratio = (R-r)/r
distance1 = sin(1°) * (R-r)
distance2 = sin(1° * ratio) * d
foreach angle in 0° .. 36000°:
  heading(angle)
  forward(distance1)
  heading(-ratio*angle)
  forward(distance2)

নোট করুন যে এটি আসলে এক ধরণের জিগ-জাগ প্যাটার্নের সাথে পথ আঁকতে পারে তবে আপনি চিত্রটিতে ঘনিষ্ঠভাবে জুম না লাগলে আপনি সত্যিই লক্ষ্য করবেন না।

আর = 73, আর = 51, ডি = 45 পরামিতিগুলি ব্যবহার করে এখানে একটি উদাহরণ।

এখানে চিত্র বর্ণনা লিখুন

আমি কোড পরীক্ষিত থাকেন CCBI এবং cfunge , এই দুই ধরনের একটি SVG চিত্র আকারে আউটপুট উত্পাদন। যেহেতু এটি একটি স্কেলযোগ্য ভেক্টর ফর্ম্যাট, ফলস্বরূপ চিত্রটির মতো পিক্সেল আকার নেই - এটি কেবল স্ক্রিনের আকারের জন্য স্কেল করে (কমপক্ষে ব্রাউজারে দেখলে)। উপরের উদাহরণটি হ'ল একটি স্ক্রিন ক্যাপচার যা ম্যানুয়ালি ক্রপ করা এবং মাপা হয়েছে।

তত্ত্বের ক্ষেত্রে কোডটি আরসি / ফিউজেও কাজ করতে পারে তবে আপনি উইন্ডোতে আউটপুটটি রেন্ডার করার চেষ্টা করবেন বলে আপনাকে XWindows সহ এমন কোনও সিস্টেমে চলতে হবে।


0

wxMaxima : 110

f(R,r,d):=plot2d([parametric,(p:R-r)*cos(t)+d*cos(t*(p)/r),(p)*sin(t)-d*sin(t*(p)/r),[t,0,2*%pi*r/gcd(p,r)]]);

এর মাধ্যমে ইন্টারেক্টিভ সেশনে একে ডাকা হয় f(#,#,#)। একটি নমুনা হিসাবে, বিবেচনা করুন f(3,2,1):

এখানে চিত্র বর্ণনা লিখুন


যদিও আমি সুন্দর আউটপুটটি পছন্দ করি তা নিশ্চিত না, কীভাবে এটি "1 থেকে 200 এর মধ্যে পূর্ণসংখ্যা" বা "পিক্সেল হিসাবে দেওয়া" অনুসরণ করে।
জিওবিটস

ইনপুটটি পূর্ণসংখ্যা বা ভাসমান হতে পারে, ডাব্লুএক্সম্যাক্সিমা যেভাবেই হোক এর কাজটি করতে ফ্লোটে রূপান্তরিত করবে, আমি পূর্ণসংখ্যার ব্যবহার করে একটি চিত্র আপডেট করব। আমি পিক্সেল হিসাবে ইনপুট সম্পর্কে আরও চিন্তা করতে হবে।
কাইল কানোজ 23'14

হ্যাঁ, আমি অনুভব করেছি যে এটি তাদের অভ্যন্তরীণভাবে রূপান্তরিত করবে এবং এটি কোনও সমস্যা নয়। ইনপুটটিতে পূর্ণসংখ্যা বাধাটি ছিল মূলত বন্ধ লুপগুলি সহজতর করা (তারা কেবল আরও ভাল ইমো দেখায়)।
জিওবিটস

0

কোলাহল

#lang racket/gui
(require 2htdp/image)

(define frame (new frame%
                   [label "Spirograph"]
                   [width 300]
                   [height 300]))

(define-values (R r d) (values 50 30 10)) ; these values can be adjusted;

(new canvas% [parent frame]
     [paint-callback
      (lambda (canvas dc)
        (send dc set-scale 3 3)
        (for ((t (in-range 0 (* 10(* R pi)) 1)))
          (define tr (degrees->radians t))
          (define a (- R r))
          (define x (+ (* a (cos tr))
                       (* d (cos (* tr (/ a r))))))
          (define y (- (* a (sin tr))
                       (* d (sin (* tr (/ a r))))))
          (send dc draw-ellipse (+ x 50) (+ y 50) 1 1)))])

(send frame show #t)

আউটপুট:

এখানে চিত্র বর্ণনা লিখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.