শ্রী যন্ত্রে আঁকুন


11

চ্যালেঞ্জ:

শ্রী যন্ত্রে আঁকুন ।

কিভাবে:

এটি আঁকার বিভিন্ন উপায় রয়েছে। এর মধ্যে অনেকগুলি পদক্ষেপ অন্তর্ভুক্ত রয়েছে। আপনি যদি মনে করেন যে আপনার আঁকায় থাকা উপাদানগুলির জন্য নীচের লিঙ্কযুক্ত পদক্ষেপগুলি অনুসরণ না করে আপনি এটি আঁকতে পারেন

সম্পূর্ণ পদক্ষেপগুলি এখানে পাওয়া যাবে:

http://www.saralhindi.com/Shri_Yantra/makingsky14steps_eng.htm

( আমি এগুলি এখানে অনুলিপি করিনি কারণ এটি একটি দীর্ঘ প্রশ্ন হয়ে উঠবে , এখানে প্রথম লিঙ্কটি নীচে নেমে যাওয়ার ক্ষেত্রে আর্কাইভ.আরসি রয়েছে )

চূড়ান্ত ছবিটি নীচের ছবির মতো হওয়া উচিত:

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

অবশ্যই থাকতে হবে:

মূলত আপনার নির্বাচনের আঁকার কোনও পদ্ধতিই একটি বৈধ উত্তর হতে পারে যা আপনাকে সর্বাধিক গুরুত্বপূর্ণ উপাদানগুলি রাখে

  1. উপরের ছবিটির মতো ত্রিভুজের সংখ্যা একই সংখ্যার হওয়া উচিত (৪৩ টি ছোট ত্রিভুজ বৃহত্তর 9 ত্রিভুজের সংযোগের ফলে হয়েছিল)

  2. এই ট্রিপল ছেদগুলি সম্মানিত হয়:

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

  1. Wardর্ধ্বমুখী ত্রিভুজগুলির টিপসটি 4 নিম্নমুখী ত্রিভুজগুলির ভিত্তিগুলিকে স্পর্শ করে এবং নীচের দিকে ত্রিভুজের টিপসটি চিত্রের বেলোতে দেখানো হিসাবে 3 wardর্ধ্বমুখী ত্রিভুজগুলির বেসগুলিকে স্পর্শ করা উচিত।

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

  2. অভ্যন্তরীণ বৃত্ত (বিন্দু) বাইরের বৃত্তের সাথে ঘনক্ষেত্রযুক্ত।

  3. বৃহত্তর ত্রিভুজগুলির টিপস (শীর্ষে) বাইরের বৃত্তের স্পর্শ করা উচিত: এখানে চিত্র বর্ণনা লিখুন

  4. চূড়ান্ত চিত্রটিতে সমস্ত উপাদান থাকা উচিত এবং সাধারণত দেখতে হবে: এখানে চিত্র বর্ণনা লিখুন

  5. রঙ প্রতিটি উপাদানের (পাপড়ি সহ) জন্য উপরের চিত্রের মতো মোটামুটি একই হতে হবে।

  6. পাপড়িগুলির আকারটি প্রায়শই চিত্রের মতো দেখতে কমলা হওয়া উচিত তবে এটি কেবলমাত্র অর্ধবৃত্তাকার বা বৃত্তের সাধারণ চাপ অংশ হতে পারে:

  7. চেনাশোনাগুলি বা ফটকগুলির আকারের ক্ষেত্রে কোনও কঠোর অনুপাতের সীমাবদ্ধতা নেই, তবে সর্বাধিক বহিরাগত বৃত্তের বাইরের অংশটি 90% এর চেয়ে কম ব্যাসের চেয়ে কম হওয়া উচিত, অন্যান্য অনুপাতগুলি যথাক্রমে এই অনুপাতের সাথে সামঞ্জস্য করা হত।

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

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

প্রোগ্রামিং ভাষা এবং ফলাফল

প্রোগ্রামিং ভাষা বা ফলাফলের বিন্যাসে কোনও সীমাবদ্ধতা নেই (এটি কোনও ভেক্টর চিত্র, বিটম্যাপ চিত্র, ক্যানভাস ইত্যাদি হতে পারে) তবে শর্ত থাকে যে ফলাফলটি তুলনামূলকভাবে পরিষ্কার এবং স্বচ্ছ (কমপক্ষে 800px এক্স 800px)

উত্তরোত্তর সম্পাদনা: আঁকার কোনও সঠিক পদ্ধতি নেই কারণ এই ব্লগটি এগুলি এত ভালভাবে আবিষ্কার করে: http //fotthewuk.livej पत्रकार. com/ এটিকে সামান্য ত্রুটিগুলি বিবেচনা করা সহ্য করা হবে।

এই মুহুর্তে এটি আকর্ষণীয় অনুশীলন হিসাবে এটি শিখতে যে এটি খুব সম্ভবত যে কোনও সঠিক সমাধান নেই, অনেকটা বৃত্তের স্কোয়ারিংয়ের মতো learn


3
আমি মনে করি আপনাকে রঙের প্যালেট, বাহ্যিক বৃত্তগুলির প্রাসঙ্গিক দৈর্ঘ্যের আঁশ এবং পটভূমির আকার এবং পাপড়িগুলির আকার নির্ধারণ করতে হবে think
মার্টিন এন্ডার

@ মার্টিনবাটনার আমি এই প্রশ্নটি পুনরায় দিয়েছি, তথ্যটি এখন আরও ভাল কিনা দয়া করে আমাকে বলুন। এই
যন্ত্র আঁকানো

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

5
এই চ্যালেঞ্জ পাগল।
এএল

1
ধন্যবাদ, যদিও এটি ইতিমধ্যে নির্ধারণ করা হয়েছে;) এবং জঘন্য .. এটি শক্ত, কেবল ত্রিভুজগুলি পেয়েছে এবং আমার কোডটি ইতিমধ্যে বিশাল। এখনই এটি অপ্টিমাইজ করা xD
টিউন প্রোঙ্ক

উত্তর:


8

গণিত - 2836 2536 অক্ষর

রঙিনের জন্য ছোট ত্রিভুজগুলি উপলভ্য এমন অঞ্চলগুলির কম্বোগুলি খুঁজে বের করার জন্য এটি কিছুটা ধোঁয়াশা ছিল।

ফ্রেম

ফ্রেম অবজেক্টগুলি অসমতা যা অঞ্চল হিসাবে বর্ণনা করে। যেমন লাল এবং হলুদ স্কেলোপিং দুটি বৃত্তের অঞ্চল।

n1=8;n2=16;
w8=Round[.78 Table[{Cos[2\[Pi] k/n1],Sin[2\[Pi] k/n1]},{k,0,n1-1}],.01];
w16=Round[1 Table[{Cos[2\[Pi] k/n2],Sin[2\[Pi] k/n2]},{k,0,n2-1}],.01];
n=12;y1=.267;
x2=1/Sqrt[2];w=1.8;v=1.85;
pts={{-w,w},{-w/4,w},{-w/4,w+w/8},{-5w/8,w+w/8},{-5w/8,w+5w/24},{5w/8,w+5w/24},{5w/8,w+w/8},{w/4,w+w/8},{w/4,w},
{w,w},{w,w/4},{w+w/8,w/4},{w+w/8,5w/8},{w+5w/24,5w/8},{w+5w/24,-5w/8},{w+w/8,-5w/8},{w+w/8,-w/4},{w,-w/4},
{w,-w},
{w/4,-w},{w/4,-w-w/8},{(5 w)/8,-w-w/8},{(5 w)/8,-w-(5 w)/24},{-((5 w)/8),-w-(5 w)/24},{-((5 w)/8),-w-w/8},{-(w/4),-w-w/8},{-(w/4),-w},{-w,-w},

{-w,-w/4},{-w-w/8,-w/4},{-w-w/8,-5w/8},{-w-5w/24,-5w/8},{-w-5w/24,5w/8},{-w-w/8,5w/8},{-w-w/8,w/4},{-w,w/4}
};

frame=RegionPlot[{
(*MeshRegion[pts2,Polygon[Range[20]]],*) (*orange trim *)
MeshRegion[pts,Polygon[Range[Length[pts]]]], (*green box *)
ImplicitRegion[x^2+y^2<2.8,{x,y}], (*white, largest circle *)
ImplicitRegion[Or@@(((x-#)^2+(y-#2)^2<.1)&@@@w16),{x,y}], (*yellow scallops*)
ImplicitRegion[x^2+y^2<1,{x,y}],(*white circle *)
ImplicitRegion[x^2+y^2<1.4,{x,y}],(*white disk*)
ImplicitRegion[Or@@(((x-#)^2+(y-#2)^2<.15)&@@@w8),{x,y}],(*red scallops*)
ImplicitRegion[x^2+y^2<1,{x,y}] , (*white disk *)
ImplicitRegion[1.8 < x^2+y^2< 2.2,{x,y}] ,(*brown outer rim*)
ImplicitRegion[2.4 < x^2+y^2< 2.8,{x,y}](*yellow outer rim*)},
BoundaryStyle->Directive[Thickness[.005],Black],
AspectRatio->1,
Frame-> False,
PlotStyle->{(*Lighter@Orange,*)
Darker@Green,White,Yellow,White,White,
Red,White,Lighter@Brown,Yellow,Red,
White,White,White,White,White,
White,White,Red,Red,Darker@Blue,
Darker@Blue,Darker@Blue,Darker@Blue,Darker@Blue,Darker@Blue,
Red,Red,Darker@Blue,Red,Yellow,Red}];

তারপরে কিছু চেনাশোনাগুলি লুকানোর জন্য একটি ডিস্ক রয়েছে যা স্কেলোপিং তৈরি করতে ব্যবহৃত হয়েছিল।

Graphics[{White,Disk[{0,0},.99]}]

দ্য ইনার্ডস

শীর্ষে এবং ত্রিভুজগুলির কিছু সংজ্ঞা। প্রতিটি ত্রিভুজ, টি 1, টি 2, ... একটি স্বতন্ত্র অঞ্চল। লার্জিকাল অপারেশনগুলি ( RegionUnionRegionIntersection, এবং RegionDifference) বৃহত্তর ত্রিভুজগুলিতে ছোট, ত্রিভুজাকার কোষগুলিকে পৃথকভাবে বর্ণযুক্ত হতে পারে এমন অনুভূত অঞ্চল হিসাবে সংজ্ঞায়িত করতে ব্যবহৃত হয়।

p1={-Cos[ArcTan[.267]],y1};
p2={Cos[ArcTan[.267]],y1};
p3={-Cos[ArcTan[.267]],-y1};
p4={Cos[ArcTan[.267]],-y1};
p5={-x2,(x2+y1)/2};
p6={x2,(x2+y1)/2};
p7={-x2,-(x2+y1)/2};
p8={x2,-(x2+y1)/2};
p9={0.5,-x2};
p10={-0.5,-x2};
p11={0.5,-x2};
p12={-0.5,-x2};
p13={a=-.34,b=-.12};
p14={-a,b};
p15={0.5,x2};
p16={-0.5,x2};  
t1=MeshRegion[{{0,-1},p1,p2},Triangle[{1,2,3}]];
t2=MeshRegion[{{0,1},p3,p4},Triangle[{1,3,2}]];
t3=MeshRegion[{{0,-x2},p5,p6},Triangle[{1,3,2}]];
t4=MeshRegion[{{0,x2},p7,p8},Triangle[{1,3,2}]];
t5=MeshRegion[{{0,+y1},p9,p10},Triangle[{1,3,2}]];
t6=MeshRegion[{{0,p5[[2]]},p13,p14},Triangle[{1,3,2}]];
t7=MeshRegion[{{0,p13[[2]]},p15,p16},Triangle[{1,3,2}]];
t8=MeshRegion[{{0,p7[[2]]},{-.33,p1[[2]]-.12},{.33,p1[[2]]-.12}},Triangle[{1,3,2}]];
t9=MeshRegion[{{0,p3[[2]]},{z=-.23,0.063},{-z,.063}},Triangle[{1,3,2}]];

disk=Graphics[{White,Disk[{0,0},.99]}];


innards=RegionPlot[{
t1,t2,t3,t4,t5,t6,t7,t8,t9,(*White*)
RegionDifference[t1,RegionUnion[t5,t4,t2]],(*Blue*)
RegionDifference[t4,RegionUnion[t1,t3,t5]],(*red*)
RegionDifference[t3,RegionUnion[t7,t4,t2]], (*blue*)
RegionDifference[t2,RegionUnion[t1,t7,t3]], (*blue*)
RegionDifference[t5,t1],   (*blue*)
RegionDifference[t4,RegionUnion[t1,t7]], (*Blue *)
RegionDifference[t7,t2],(*Blue*)
RegionDifference[t3,RegionUnion[t1,t2]],(*Blue *)
RegionDifference[t8,t2],  (* blue *)
RegionDifference[t9,t5],  (* red *)
RegionDifference[t9,t6],  (* red *)
RegionIntersection[t4,RegionDifference[t6,t1]], (*blue*)
RegionIntersection[t6,RegionDifference[t5,t8]],  (* red *)
RegionIntersection[t7,t9], (*yellow*)
RegionDifference[RegionIntersection[t7,t8],t5], (*red *)
RegionDifference[RegionIntersection[t5,t6],RegionUnion[t7,t9]],(*red *)
ImplicitRegion[x^2+y^2<= .001,{x,y}],  (* smallest circle *) (* red *)
RegionDifference[RegionIntersection[t7,t1 ],t6], (*Red*)
RegionDifference[t8,RegionUnion[t5,t6]],
RegionDifference[t6,RegionUnion[t7,t8]],
RegionDifference[RegionIntersection[t2,t5],RegionUnion[t7,t8]],
RegionDifference[RegionIntersection[t7,t3],t4],
RegionDifference[RegionIntersection[t1,t3],RegionUnion[t5,t4]],
RegionDifference[RegionIntersection[t2,t4],RegionUnion[t7,t3]],
RegionDifference[RegionIntersection[t5,t4],t3]},
BoundaryStyle->Directive[Thickness[.005],Black],
AspectRatio->1,
PlotStyle->{
White,White,White,White,White,White,White,White,White,
Blue,Red,Red,Blue,Blue,Blue,Blue,Blue,Blue,
Red,Red,Blue,Red,Yellow,Red,Red,Red,Blue,Blue,Blue,Blue,Red,Red,Red,Red}]

অংশ একসাথে রাখা

Show[frame,disk,innards,Graphics[{Brown,Thickness[.02],Line[Append[pts,{-w,w}]]}];
Graphics[{RGBColor[0.92,0.8,0.],Thickness[.015],Line[Append[pts,{-w,w}]]}]]

sri4


Golfed

r=ImplicitRegion;m=MeshRegion;t=Triangle;d=RegionDifference;u=RegionUnion;i=RegionIntersection;(*s=ImplicitRegion*)

n1=8;n2=16;w8=.78 Table[{Cos[2\[Pi] k/n1],Sin[2\[Pi] k/n1]},{k,0,n1-1}];
w16=Table[{Cos[2\[Pi] k/n2],Sin[2\[Pi] k/n2]},{k,0,n2-1}];n=12;y1=.267;x2=1/Sqrt[2];w=1.8;v=1.85;
pts={{-w,w},{-w/4,w},{-w/4,w+w/8},{-5w/8,w+w/8},{-5w/8,w+5w/24},{5w/8,w+5w/24},{5w/8,w+w/8},{w/4,w+w/8},{w/4,w},
{w,w},{w,w/4},{w+w/8,w/4},{w+w/8,5w/8},{w+5w/24,5w/8},{w+5w/24,-5w/8},{w+w/8,-5w/8},{w+w/8,-w/4},{w,-w/4},
{w,-w},{w/4,-w},{w/4,-w-w/8},{(5 w)/8,-w-w/8},{(5 w)/8,-w-(5 w)/24},{-((5 w)/8),-w-(5 w)/24},{-((5 w)/8),-w-w/8},{-(w/4),-w-w/8},{-(w/4),-w},{-w,-w},
{-w,-w/4},{-w-w/8,-w/4},{-w-w/8,-5w/8},{-w-5w/24,-5w/8},{-w-5w/24,5w/8},{-w-w/8,5w/8},{-w-w/8,w/4},{-w,w/4}};

frame=RegionPlot[{
m[pts,Polygon[Range[Length[pts]]]], 
r[x^2+y^2<2.8,{x,y}], 
r[Or@@(((x-#)^2+(y-#2)^2<.1)&@@@w16),{x,y}], 
r[x^2+y^2<1,{x,y}],
r[x^2+y^2<1.4,{x,y}],
r[Or@@(((x-#)^2+(y-#2)^2<.15)&@@@w8),{x,y}],
r[x^2+y^2<1,{x,y}] , 
r[1.8 < x^2+y^2< 2.2,{x,y}] ,
r[2.4 < x^2+y^2< 2.8,{x,y}]},
BoundaryStyle->Directive[Thickness[.003],Black],
AspectRatio->1,
Frame-> False,
PlotStyle->{Darker@Green,White,Yellow,White,White,Red,White,Lighter@Brown,Yellow,Red}];

c=Cos[ArcTan[y1]];
p1={-c,y1};
p2={c,y1};
p3={-c,-y1};
p4={c,-y1};
p5={-x2,(x2+y1)/2};
p6={x2,(x2+y1)/2};
p7={-x2,-(x2+y1)/2};
p8={x2,-(x2+y1)/2};
p9={0.5,-x2};
p10={-0.5,-x2};
p11={0.5,-x2};
p12={-0.5,-x2};
p13={a=-.34,b=-.12};
p14={-a,b};
p15={0.5,x2};
p16={-0.5,x2};
t1=m[{{0,-1},p1,p2},t[{1,2,3}]];
t2=m[{{0,1},p3,p4},t[{1,3,2}]];
t3=m[{{0,-x2},p5,p6},t[{1,3,2}]];
t4=m[{{0,x2},p7,p8},t[{1,3,2}]];
t5=m[{{0,+y1},p9,p10},t[{1,3,2}]];
t6=m[{{0,p5[[2]]},p13,p14},t[{1,3,2}]];
t7=m[{{0,p13[[2]]},p15,p16},t[{1,3,2}]];
t8=m[{{0,p7[[2]]},{-.33,p1[[2]]-.12},{.33,p1[[2]]-.12}},t[{1,3,2}]];
t9=m[{{0,p3[[2]]},{z=-.23,0.063},{-z,.063}},t[{1,3,2}]];

innards=RegionPlot[{
d[t1,u[t5,t4,t2]],
d[t4,u[t1,t3,t5]],
d[t3,u[t7,t4,t2]], 
d[t2,u[t1,t7,t3]], 
d[t5,t1],   
d[t4,u[t1,t7]], 
d[t7,t2],
d[t3,u[t1,t2]],
d[t8,t2],  
d[t9,t5],  
d[t9,t6],  
i[t4,d[t6,t1]], 
i[t6,d[t5,t8]],  
i[t7,t9], 
d[i[t7,t8],t5], 
d[i[t5,t6],u[t7,t9]],
r[x^2+y^2<= .001,{x,y}],   
d[i[t7,t1 ],t6], 
d[t8,u[t5,t6]],
d[t6,u[t7,t8]],
d[i[t2,t5],u[t7,t8]],
d[i[t7,t3],t4],
d[i[t1,t3],u[t5,t4]],
d[i[t2,t4],u[t7,t3]],
d[i[t5,t4],t3]},
BoundaryStyle->Directive[Thickness[.003],Black],
Frame->False,
PlotStyle->{Blue,Red,Red,Blue,Blue,Blue,Blue,Blue,Blue,
Red,Red,Blue,Red,Yellow,Red,Red,Red,Blue,Blue,Blue,Blue,Red,Red,Red,Red}];

trim=Graphics[{RGBColor[0.92,0.8,0.],Thickness[.01],Line[Append[pts,{-w,w}]]}];
trim2=Graphics[{Brown,Thickness[.02],Line[Append[pts,{-w,w}]]}];
Show[frame,Graphics[{White,Disk[{0,0},.99]}],trim2,trim,innards]

2
* অন্তর্গত, এবং এটি সম্পূর্ণ আশ্চর্যজনক; একটি +1 আছে
সোহম চৌধুরী

পাশাপাশি রঙগুলির সাথে এখানে লড়াই করা, যদিও ত্রিভুজগুলির সাথে অভ্যন্তরীণ বৃত্তটি আমি এ পর্যন্ত যা করেছি। আমার কিছুটা ধরা আছে;)
টিউন প্রোঙ্ক

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

একই, সত্যিই কঠিন। পুনরাবৃত্তি নিয়ে কিছু কাজ করার চেষ্টা করা হচ্ছে তবে এটি এখনও কাজ করতে পারে না।
তেউন প্রোঙ্ক

@ ডেভিডকার্যাহার আমি রঙিন অংশটি ঠিক করেছি। এটি সম্পর্কে একটি টিপ চান?
তেউন প্রোঙ্ক

2

দেলফি [কাজ চলছে]

এটি সত্যিই শক্ত ...
এখনও পর্যন্ত আমার কাছে যা আছে তা ত্রিভুজ সহ অভ্যন্তরীণ বৃত্ত এবং আমার কোডটি বিশাল।
চরিত্রগুলি এখনও গণনা করা হয়নি, আমি জানি আমি হোয়াইট স্পেস ইত্যাদিতে অনেক কিছু সঞ্চয় করতে পারি etc.

দিয়ে শুরু করতে

আমি একটি ক্লাস তৈরি করেছি টিডি টি একটি ডিফল্ট শ্রেণীর উপসর্গ বাধ্যতামূলক নয় তবে এটির একটি শ্রেণি দেখতে এটি সহজ করে তোলে, ডি স্ট্রেনকে বোঝায়।

  TP = TPoint;
  TD = class
  private
    FCv: TCanvas;
    FC: TP;
    a:array[1..9,0..2]of TP;
    FB:TBitmap32;
    FWi: integer;
  public
    constructor Create(AC: TCanvas;CP:TP;W:integer);
    property cv: TCanvas read FCv;
    property c:TP read FC;
    property Wi:integer read FWi;
    procedure tr;
    procedure StartDrawing;
    procedure ft;          
  end;
const t=1>0;f=0>1;off=50;ic=500;

আমি একটি TPপ্রকারও তৈরি করেছি , না, যেহেতু তারা আমার আদ্যক্ষর নয় বরং এর চেয়ে ছোট TPointএবং আমি অনুভব করেছি যে আমি অনেকগুলি পয়েন্ট ব্যবহার করব।
সম্পত্তি Cক্যানভাসের কেন্দ্রবিন্দু।
পদ্ধতি:
StartDrawing(এখনও নামকরণ করা হয়নি) আমার জন্য সমস্ত অঙ্কন ফাংশন জ্বালিয়ে দেয়।
trচেনাশোনাতে সমস্ত ত্রিভুজ তৈরি করে (চেনাশোনাটি নিজেই সহ)
ftসমস্ত ত্রিভুজকে রঙ করবে color
আমি সত্য এবং মিথ্যা, অফসেট এবং বৃত্তের আকারের জন্য কিছু ধ্রুবক তৈরি করেছি।

কাজ এবং পদ্ধতি

Qযেখানে 2 লাইন ক্রস / ছেদ করে সেই বিন্দুটি ফিরে আসবে।
নেস্টেড ফাংশন / পদ্ধতি অনেক আছে। আমি এগুলি সমস্ত ব্যাখ্যা করার মতো বোধ করি না তবে আপনি যদি অবাক হন যে আপনি সর্বদা কী জিজ্ঞাসা করতে পারেন।

সম্পূর্ণ ক্লাস

unit Unit3;
interface
Uses
  Windows,Sysutils, Classes, DateUtils, Math, Graphics, types,idglobal, gr32, gr32_polygons, GR32_Backends;
type
  TP = TPoint;
  TD = class
  private
    FCv: TCanvas;
    FC: TP;
    a:array[1..9,0..2]of TP;
    FB:TBitmap32;
    FWi: integer;
  public
    constructor Create(AC: TCanvas;CP:TP;W:integer);
    property cv: TCanvas read FCv;
    property c:TP read FC;
    property Wi:integer read FWi;
    procedure tr;
    procedure StartDrawing;
    procedure ft;
    const
      ic=500;
  end;
  const t=1>0;f=0>1;off=50;
implementation

function q(A1,A2,B1,B2:TP;out o:int16):TP;
Var
 a,b,c:Real;
 d,e:TP;
begin
 a:=A1.X*A2.Y-A1.Y*A2.X;
 b:=B1.X*B2.Y-B1.Y*B2.X;
 d:=A1.Subtract(A2);
 e:=B1.Subtract(B2);
 c:=1/((d.X*e.Y)-(d.Y*e.X));
 Result:=TP.Create(Round(((a*e.X)-(d.X*b))*c),Round(((a*e.Y)-(d.Y*b))*c));
 o:=Result.Y;
end;
constructor TD.Create(AC: TCanvas; CP:TP;W:integer);
begin
  FCv:=AC;
  FC:=CP;
  FWi:=W;
  FB := TBitmap32.Create;
  FB.SetSize(W,W);
end;

procedure TD.ft;
var
  X,Y:int32;
  procedure cl(f,g:int32;e:TColor);
  begin
    fb.Canvas.Brush.Color:=e;
    fb.Canvas.FloodFill(f,g,clBlack32, fsBorder);
  end;
  function it(p1,p2: int32):int32;
  var i,r:int32;
  rgn:HRGN;
  begin
    r:=0;
    if fb.Pixel[x,y]<>clPurple32 then
      exit(50);
    for I := 1 to 9 do
    begin
      rgn:=CreatePolygonRgn(a[i],3,WINDING);
      if PtInRegion(rgn,p1,p2) then
        r:=r+1;
    end;
    it:=r;
  end;
begin
  Y:=c.Y;
  fb.Canvas.Brush.Color := clHighlight;
  fb.Canvas.FloodFill(1,1,clBlack32, fsBorder);
  X := c.X;
  cl(c.x-1,51,clWhite);
  for Y := 0 to fwi-1 do
    for X := 0 to fwi-1 do
      case it(x,y) of
        0,2,4,6,8:cl(x,y,clwhite);
        1,5:cl(x,y,clNavy);
        3,7:cl(x,y,clred);
      end;
end;
procedure TD.StartDrawing;
begin
  with fcv do
  begin
    Brush.Style := bsSolid;
    Brush.Color := clBtnFace;
    Ellipse(off,off,ic+off,ic+off);
    Brush.Style:=bsClear;
    tr;
    ft;
    CopyRect(ClipRect, FB.Canvas, FB.ClipRect);
    Brush.Color := clRed;
    Ellipse(c.X-10,c.Y-5,c.X+10,c.Y+15);
  end;
end;
procedure TD.tr;
const
  L=250;
var
  p1,w,v:tp;
  i:int16;
  r:TRect;
  function e(n:int16;b:boolean=f):TP;
  var r:single;
  begin
    r:=DegToRad(iif(b,n,(n*30)-90));
    Result := tp.Create(C.X +Round(L*Cos(r)),C.Y+Round(L*Sin(r)));
  end;
  function CS(Y:integer; L:boolean=t): tp;
  var
    I: integer;
  begin
    with FCv do
      if L then
      begin
        for I := 0+off to 499+off do
          if Pixels[I,Y]=0 then
            exit(TP.Create(I+1,Y));
      end
      else
        for i := 499+off downto 0+off do
          if Pixels[I,Y]=0 then
            exit(TP.Create(I-1,Y));
  end;
  procedure d(n,x,y:int16;b,c:TP);
  begin
    a[n][0]:=TP.Create(x,y);
    a[n][1]:=b;
    a[n][2]:=c;
  end;
  function Int(a,b,c,d,s1,s2:tp;h:int32):tp;
  var
    f,ww:tp;
    e:extended;
  begin
    f:=q(a,b,c,d,i);
    e:=ArcTan2(f.Y-h,f.X-c.X);
    ww:=tp.Create(C.X +ceil(500*Cos(e)),r.Bottom+ceil(500*Sin(e)));
    s2.Y:=ww.Y;
    Result:=q(f,ww,s1,s2,i);
  end;
begin
  r:=trect.Create(e(225,t),e(45,t));
  q(e(12),e(9),e(10),e(6),i);
  d(1,C.X,off+ic-1,CS(i),CS(i,f));
  q(e(12),e(8),e(9),e(6),i);
  d(2,C.X,off+1,CS(i),CS(i,f));
  w:=int(a[1][1],a[1][2],a[2][0],a[2][1],r.TopLeft,tp.Create(r.Left,0), r.Bottom);
  d(3,c.X,r.Bottom,w,tp.Create(r.Right,w.Y));
  w.Y:=r.Bottom-(w.Y-r.Top);
  d(4,c.X,r.Top,w,tp.Create(r.Right,w.Y));
  w:=int(a[1][0],a[1][1],a[4][1],a[4][2],tp.Create(r.Left,0),tp.Create(r.Bottom,0),r.Top);
  w.Y:=r.BottomRight.Y;
  v:=tp.Create(w);
  v.X := c.X+(c.X-w.X);
  d(5,c.X,a[1][1].Y,w,v);
  p1:=q(a[3][0],a[3][1],q(a[2][0],a[2][2],a[3][0],a[3][2],i),q(a[1][0],a[1][1],a[4][0],a[4][1],i),i);
  d(6,c.X,a[3][1].Y,p1,tp.Create(c.X+(c.X-p1.X),p1.Y));
  d(7,c.X,p1.Y, tp.Create(a[5][1]),tp.Create(a[5][2]));
  a[7][1].Y:=r.Top;
  a[7][2].Y:=r.Top;
  w:=q(a[6][0],a[6][1],a[7][0],a[7][1],i);
  w:=q(w,tp.Create(w.X-20,w.Y),a[4][0],a[4][1],i);
  d(8,c.X,a[4][1].Y,w,tp.Create(c.X+(c.X-w.X),w.Y));
  w:=q(a[5][0],a[5][1],a[7][0],a[7][1],i);
  w:=q(w,tp.Create(w.X-20,w.Y),a[6][0],a[6][1],i);
  d(9,c.X,a[2][1].Y,w,tp.Create(c.X+(c.X-w.X),w.Y));
  FB.Clear(clPurple32);
  FB.PenColor := clBlack32;
  fb.Canvas.Brush.Style:=bsClear;
  FB.Canvas.Ellipse(off,off,500+off,500+off);
  for I := 1 to 9 do
  begin
    p1:=a[i][0];
    w:=a[i][1];
    v:=a[i][2];
    FB.Line(p1.X,p1.Y,w.X,w.Y, fb.PenColor);
    FB.Line(p1.X,p1.Y,v.X,v.Y,fb.PenColor);
    FB.Line(v.X,v.Y,w.X,w.Y,fb.PenColor);
  end;
  FB.Canvas.Brush.Color := clYellow;
  FB.Canvas.FloodFill(c.X,c.Y,clBlack32, fsBorder);
end;
end.

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


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