ট্যানজেন্ট বহুভুজ এক্সটেনশনগুলি


11

এরকম দেখতে কিছু আঁকুন:

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

আরও সুনির্দিষ্ট পদগুলিতে, দৈর্ঘ্যের n সমানভাবে-ফাঁক স্পর্শক রেখার সাথে, ব্যাসার্ধের r এর বৃত্ত আঁকুন। একটি নতুন এন-পার্শ্বযুক্ত নিয়মিত বহুভুজ তৈরি করতে এই লাইনের প্রান্তগুলি সংযুক্ত করুন।

বিধি

r = বৃত্তের ব্যাসার্ধ
n = স্পর্শক রেখার সংখ্যা - অবশ্যই বৃত্তের চারপাশে সমানভাবে ফাঁক হওয়া উচিত (n> = 3)
l = স্পর্শক রেখার পাশের দৈর্ঘ্য

এমন একটি প্রোগ্রাম তৈরি করুন যা আর্গুমেন্টগুলি ts r, n, l accep গ্রহণ করে এবং প্রয়োজনীয় আউটপুট আঁকবে।

ইউনিট পিক্সেল হয়।

যতক্ষণ না এটি সমস্ত দৃশ্যমান হয় ততক্ষণ অঙ্কনের অবস্থানের কোনও বিধিনিষেধ নেই।

ছবিটি বেশ স্ব-বর্ণনামূলক।

এটি কোড-গল্ফ, তাই বাইটের মধ্যে সংক্ষিপ্ততম কোড!


আমি ধরে নিচ্ছি এন হবে> = 3, সর্বাধিক কি আছে? আপনি কি স্পর্শকেন্দ্র এবং বৃত্তও চান?
মিকিটি

হ্যাঁ, এন> = 3, (ঠিকানার মধ্যে ছেদ যদি লম্বা দীর্ঘ না হয়)। আপনার বৃত্ত এবং স্পর্শকাগুলি আঁকতে হবে। আমি মনে করি সর্বাধিকটি মূলত যখন আউটপুটটি ছায়াযুক্ত বৃত্ত হয়। অন্য কথায়, সর্বাধিক হ'ল এটির মতো অঙ্কনের জন্য বাস্তবিক সর্বাধিক।
প্রসারিত পাগল

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

@ মার্টিনবাটনার, যদি কোনও ধরণের স্কেল (অক্ষের মতো) থাকে তবে আপনি আপনার (অভিনব) ভেক্টর গ্রাফিক্সের সাহায্যে পিক্সেল ইউনিটটিকে উপেক্ষা করতে পারেন।
প্রসারিত পাগল

উত্তর:


5

গণিত, 135 132 131 123 বাইট

{r,n,l}=Input[];Graphics[{{0,0}~Circle~r,Line[Join@@Array[{b=(a=r{c=Cos[t=2Pi#/n],s=Sin@t})-l{s,-c},a,b}&,n+1]]},Axes->1>0]

এই কোড ইনপুট (একটি প্রম্পট এর মাধ্যমে) ঠিক হিসাবে প্রশ্নে উল্লেখিত প্রত্যাশা করে: যেমন {100, 6, 150}। এটি একটি ভেক্টর গ্রাফিক তৈরি করে, সুতরাং আমি একটি অক্ষকেও অন্তর্ভুক্ত করি, যেমনটি ওপির মন্তব্যে উল্লিখিত হয়েছে।

"বহুভুজ-কোণ, স্পর্শক বিন্দু, বহুভু-কোণ, পরের বহুভুজ-কোণ, স্পর্শক বিন্দু, বহুভুজের কোণে ..." ট্র্যাজেট করে স্পর্শকাত এবং বহুভুজ উভয়ই আসলে একটি একক রেখার স্ট্রিপ are

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

যদি এটি অক্ষ না হয় তবে আমি এটি 107 বাইটেও করতে পারতাম:

{r,n,l}=Input[];Graphics@{Circle[],Line[Join@@Array[{b=(a={c=Cos[t=2Pi#/n],s=Sin@t})-l/r{s,-c},a,b}&,n+1]]}

অতিরিক্ত সঞ্চয় ( Axes->1>0এগুলি বাদ দিয়ে ) আসে যে আমি এখন সমস্ত কিছু পুনরুদ্ধার করতে পারি r, যা Circleইউনিট বৃত্তের উত্পাদন কলকে সহজতর করে ।


{0,0}~Circle~r
ডেভিডসি

@ ডেভিডকারারহহে হেই, আমি 135 বাইটে ইতিমধ্যে এটি করে ফেলেছিলাম তবে এটি আমার নোটবুকে অনুলিপি করতে ভুলে গিয়েছিলাম, সুতরাং আমি যখন ইউনিকোড পরিবর্তন করেছি তখন তা আবার ফিরে আসে। ধন্যবাদ!
মার্টিন ইন্ডার

8

পাইথন, 133 বাইট

"ইউনিটগুলি পিক্সেলগুলিতে রয়েছে" বিধি মেনে চলার একমাত্র উত্তর ...

from turtle import*
c=circle
r,n,l=input()
lt(90)
exec'c(r,360/n);fd(l);bk(l);'*n
fd(l)
lt(towards(-r,0)-180)
c(distance(-r,0),360,n)

exitonclick()আপনি যদি উইন্ডোটি অবিলম্বে বন্ধ না করতে চান তবে শেষ পর্যন্ত যুক্ত করুন ।

আউটপুট:

python tangentpoly.py <<< "20, 6, 30":

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

python tangentpoly.py <<< "100, 8, 200":

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


1
for i in n*[0]:c(r,360/n);fd(l);bk(l)->exec'c(r,360/n);fd(l);bk(l)'*n;
isaacg


7

টি-এসকিউএল 440 483

এটির সাথে কোনও পুরস্কার জিততে যাচ্ছি না, তবে আমি ছবি আঁকার পছন্দ করি :)

এক্সপ্লেটিভ সম্পাদনা করুন ! সবেমাত্র লক্ষ্য করেছি যে আমি বৃত্ত জুড়ে টানা বহুভুজগুলির জন্য গোলযোগ পেয়েছি। ব্যয় স্থির।

SELECT Geometry::UnionAggregate(Geometry::Point(0,0,0).STBuffer(@r).STExteriorRing().STUnion(Geometry::STGeomFromText(CONCAT('LINESTRING(',@r*SIN(a),' ',@r*COS(a),',',@r*SIN(a)+@l*SIN(b),' ',@r*COS(a)+@l*COS(b),')'),0))).STUnion(Geometry::ConvexHullAggregate(Geometry::Point(@r*SIN(a)+@l*SIN(b),@r*COS(a)+@l*COS(b),0)).STExteriorRing())p FROM(SELECT RADIANS(360./@*N)a,RADIANS((360./@*N)-90)b FROM(SELECT TOP(@)row_number()OVER(ORDER BY(SELECT\))-1N FROM sys.types a,sys.types b)t)r

নিম্নলিখিত ভেরিয়েবলগুলি দিয়ে কার্যকর করা হয়েছে

declare @r float = 1.0
declare @ int = 10
declare @l float = 3.0

SQL সার্ভার ম্যানেজমেন্ট স্টুডিও 2012+ এ চালান এটি স্থানিক ফলাফল ট্যাবে নিম্নলিখিতটি ফিরিয়ে দেবে। এখানে চিত্র বর্ণনা লিখুন

সঙ্গে

declare @r float = 1.0
declare @ int = 360
declare @l float = 3.0

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

সঙ্গে

declare @r float = 10.0
declare @ int = 3
declare @l float = 10.0

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

প্রসারিত হয়েছে

SELECT Geometry::UnionAggregate(    --group together lines
    Geometry::Point(0,0,0)          --Set origin
    .STBuffer(@r)                   --Buffer to @r
    .STExteriorRing()               --Make it a line
    .STUnion(                       --Join to the floowing tangent
        Geometry::STGeomFromText(   --Create a tangent line
            CONCAT('LINESTRING(',@r*SIN(a),' ',@r*COS(a),',',@r*SIN(a)+@l*SIN(b),' ',@r*COS(a)+@l*COS(b),')'),0)
        )
    ).STUnion( --Generate polygon around exterior points
    Geometry::ConvexHullAggregate(Geometry::Point(@r*SIN(a)+@l*SIN(b),@r*COS(a)+@l*COS(b),0)).STExteriorRing()
    )
    p
FROM(
    SELECT RADIANS(360./@*N)a,      --calclate bearings
        RADIANS((360./@*N)-90)b
    FROM(                           --make enough rows to draw tangents
        SELECT TOP(@)row_number()OVER(ORDER BY(SELECT\))-1N 
        FROM sys.types a,sys.types b
        )t
    )r 

5

ম্যাটল্যাব - 233 বাইট

function C(n,r,l),t=2*pi/n;c=cos(t);s=sin(t);M=[c,s;-s,c];F=@(y)cell2mat(arrayfun(@(x){M^x*y},1:n));P=F([0;r]);Q=F([l;r]);v='k';t=1e3;t=2*pi/t*(0:t);R=[1:n 1];q=Q(1,R);s=Q(2,R);plot(r*cos(t),r*sin(t),v,[P(1,R);q],[P(2,R);s],v,q,s,v);

এর জন্য নমুনা ফাংশন আউটপুট n = 8, r = 4, l = 6(এককের দৈর্ঘ্য নির্দেশ করতে অক্ষগুলি অন্তর্ভুক্ত): সার্কোলি আউটপুট

এর জন্য নমুনা ফাংশন আউটপুট n = 1024, r = 4, l = 2: সার্কোলি আউটপুট


আমি নিট-পিকিং করছি, তবে ইউনিটগুলি পিক্সেলগুলিতে রয়েছে
ডিজিটাল ট্রমা

3
@ ডিজিটালট্রামাঃ আহ। তা খেয়াল করেনি। ম্যাটল্যাব পরিসংখ্যানগুলির নির্দিষ্ট ইউনিট নেই; তারা উইন্ডো স্কেল। এবং এটি যাইহোক একটি পয়েন্ট পয়েন্ট। পাইথনে আপনার লোগো ভিত্তিক সমাধানটিতে আমার সাউন্ড বিট হয়েছে। আজকের আগে আমি কল্পনাও করতাম না যে কেউ পাইথনে লোগো বন্দর দেবে, তবে এটি সেখানে রয়েছে। আমি পাশাপাশি যেতে শিখছি। : পি
সিটিও

ওয়েল +1 টি যাহাই হউক না কেন :)
ডিজিটাল ট্রমা

চিত্রটি প্রায় অ্যাপারচারের লোগো।
গর্বিত হাসেলেলার

4

এইচটিএমএল + জাভাস্ক্রিপ্ট (E6) 298

পরীক্ষা করতে, এইচটিএমএল ফাইল হিসাবে সংরক্ষণ করুন এবং ফায়ারফক্স দিয়ে খুলুন। ইনপুট ক্ষেত্রে r, n, l পরামিতিগুলি সন্নিবেশ করান, কমা পৃথকীকরণ করুন, তারপরে ট্যাব আউট করুন।

অথবা jsfiddle চেষ্টা করুন

<input onblur="
[r,n,l]=this.value.split(','),
z=r-~l,t=D.getContext('2d'),w='lineTo',
D.width=D.height=z*2,
t.arc(z,z,r,0,7);
for(C=1,S=i=0;i++<n;)
  t[w](x=z+r*C,y=z+r*S),
  t[w](x-l*S,y+l*C),
  C=Math.cos(a=6.283*i/n),
  S=Math.sin(a),
  t[w](z+r*C-l*S,z+r*S+l*C);
t.stroke()">
<canvas id=D>

নমুনা আউটপুট

50,20,140

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