श्री यंत्र को खीचें


11

चुनौती:

श्री यंत्र को खीचें ।

कैसे:

इसे खींचने के अलग-अलग तरीके हैं। सभी में कई कदम शामिल हैं। यदि आपको लगता है कि आप अपने ड्राइंग में मौजूद तत्वों के लिए नीचे दिए गए लिंक किए गए स्क्रॉल किए बिना इसे खींच सकते हैं ।

पूरा कदम यहाँ पाया जा सकता है:

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

( मैंने उन्हें यहां कॉपी नहीं किया क्योंकि यह एक बहुत लंबा सवाल बन जाएगा , यहां पहले लिंक कभी भी नीचे जाने की स्थिति में यहां archieve.org मिरर है )

अंतिम तस्वीर नीचे दी गई तस्वीर की तरह दिखनी चाहिए:

यहाँ छवि विवरण दर्ज करें

होना आवश्यक है:

मूल रूप से आपके चयन की ड्राइंग की कोई भी विधि एक मान्य उत्तर होगी जो आपको सबसे महत्वपूर्ण तत्व प्रदान करती है

  1. त्रिकोणों की संख्या उक्त चित्र के समान होनी चाहिए (43 छोटे त्रिभुजों के परिणामस्वरूप बड़े 9 त्रिभुजों के अंतःप्रेरण)

  2. इस ट्रिपल चौराहों का सम्मान किया जाता है:

यहाँ छवि विवरण दर्ज करें

  1. उर्ध्व त्रिभुजों की युक्तियाँ 4 अधोमुखी त्रिभुजों के आधारों को स्पर्श करती हैं और अधोमुखी त्रिभुजों की युक्तियों को 3 ऊर्ध्व त्रिभुजों के आधारों को स्पर्श करना चाहिए जैसा कि चित्र बेलो में दिखाया गया है।

    यहाँ छवि विवरण दर्ज करें

  2. आंतरिक वृत्त (bindu) बाहरी वृत्त के साथ संकेंद्रित होता है।

  3. बड़े त्रिभुजों की युक्तियों (वर्टिकल) को बाहरी वृत्त को स्पर्श करना चाहिए: यहाँ छवि विवरण दर्ज करें

  4. अंतिम छवि में सभी तत्व होने चाहिए और आम तौर पर इस तरह दिखना चाहिए: यहाँ छवि विवरण दर्ज करें

  5. रंग लगभग हर तत्व (पंखुड़ी सहित) के लिए उपरोक्त छवि के समान होना चाहिए।

  6. पंखुड़ियों के आकार को अधिमानतः छवि की तरह दिखना चाहिए, लेकिन यह केवल अर्धवृत्त या वृत्त के साधारण चाप खंड भी हो सकते हैं:

  7. सर्कल या गेट के आकार के लिए कोई सख्त अनुपात प्रतिबंध नहीं हैं, लेकिन सबसे बाहरी सर्कल में व्यास बाहरी वर्ग के 90% से कम नहीं होना चाहिए, अन्य तत्वों को क्रमशः इस अनुपात के सापेक्ष व्यवस्थित किया जाएगा।

यहाँ छवि विवरण दर्ज करें

यहाँ छवि विवरण दर्ज करें

प्रोग्रामिंग भाषाओं और परिणाम

प्रोग्रामिंग भाषा के लिए कोई प्रतिबंध नहीं हैं और न ही परिणाम का प्रारूप (यह या तो एक वेक्टर छवि, बिटमैप छवि, कैनवास आदि हो सकता है) बशर्ते कि परिणाम अपेक्षाकृत स्पष्ट और समझदार हो (कम से कम 800px X 800px)

लैटर एडिट: इस ब्लॉग की ड्राइंग का कोई सही तरीका नहीं है क्योंकि यह ब्लॉग उन्हें अच्छी तरह से समझाता है: http://fotthewuk.livejournal.com/ इसे ध्यान में रखते हुए छोटे-मोटे दोषों को सहन किया जाएगा।

इस बिंदु पर यह सीखने के लिए एक दिलचस्प अभ्यास के रूप में है कि यह बहुत संभावना है कि कोई सटीक समाधान नहीं है, बहुत कुछ सर्कल के वर्ग की तरह।


3
मुझे लगता है कि आपको रंग पैलेट, बाहरी हलकों की प्रासंगिक लंबाई और पृष्ठभूमि और पंखुड़ियों के आकार को परिभाषित करने की आवश्यकता होगी।
मार्टिन एंडर

@ मार्टिनबटनर मैंने इस सवाल को दोहराया, कृपया मुझे बताएं कि क्या जानकारी अब बेहतर है। इस यन्त्र को खींचना कोई आसान चुनौती नहीं है, और चश्मा
लगाना

नमस्ते, मुझे पता है कि इस पर युक्ति बहुत कठिन है। लेकिन इसकी आवश्यकता है। मेरे हाल के इसी तरह के प्रश्न को कल्पना के कारण एक कठिन समय भी दिया गया था, इसलिए इसका बेहतर आप एक के साथ आना क्योंकि इसके बिना, यह ड्रा करना बहुत कठिन है और व्यावहारिक रूप से वास्तविक चुनौती नहीं है।
ऑप्टिमाइज़र

5
यह चुनौती पागल है।
AL

1
धन्यवाद, समझ गया कि यह पहले से ही हालांकि;) और लानत है .. यह कठिन है, केवल त्रिकोण किया गया है और मेरा कोड पहले ही बहुत बड़ा है। इसका अनुकूलन अब xD
Teun Pronk

जवाबों:


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]}]

इनार्ड्स

कोने और त्रिकोण की कुछ परिभाषाएँ। प्रत्येक त्रिकोण, t1, t2, ... एक अलग क्षेत्र है। तार्किक परिचालन ( 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
* innards, और यह पूरी तरह से अद्भुत है; एक +1
सोहम चौधरी

यहाँ रंगों के साथ संघर्ष हो रहा है, हालाँकि त्रिकोण के साथ आंतरिक चक्र मेरे पास अब तक है। मेरे पास कुछ करने के लिए पकड़ है;)
तून प्रैंक

Teun Pronk, यह फ्रेम के लिए परतों का उपयोग करने में मदद करता है (नीले त्रिकोण के बाहर सब कुछ)। चंद्रमा जैसी पंखुड़ियों को पूर्ण मंडलियों को प्रदान करके और उन्हें एक बड़ी सफेद डिस्क के साथ ओवरलेइंग करके प्राप्त किया जा सकता है, जिस पर केंद्रीय आकृति प्रदान की गई है। मेरे लिए सबसे कठिन हिस्सा आंतरिक त्रिकोणीय कोशिकाओं को रंग रहा है।
डेविड डिक

वही, वास्तव में कठिन। पुनरावृत्ति के साथ कुछ काम करने की कोशिश कर रहा है, लेकिन इसे अभी तक काम करने के लिए नहीं मिल सकता है।
त्यूण प्रैंक

@DavidCarraher मैंने कलरिंग पार्ट तय किया। इसके बारे में एक टिप चाहते हैं?
त्यूण प्रैंक

2

डेल्फी [प्रगति पर काम]

यह वास्तव में कठिन है ..
अब तक मेरे पास सभी त्रिकोण के साथ आंतरिक सर्कल है और मेरा कोड बहुत बड़ा है।
अभी तक वर्णों की गणना नहीं की गई है, मुझे पता है कि मैं व्हाट्सएप आदि पर बहुत बचत कर सकता हूं।

शुरुआत के लिए

मैंने एक वर्ग बनाया टीडी टी एक डिफ़ॉल्ट वर्ग उपसर्ग है जो अनिवार्य नहीं है, लेकिन इसकी कक्षा को देखना आसान बनाता है, डी का मतलब ड्रॉ है।

  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सभी त्रिकोण रंग देगा।
मैंने सच्चे और झूठे, ऑफसेट और सर्कल के आकार के लिए कुछ स्थिरांक भी बनाए।

कार्य और प्रक्रिया

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.

परिणाम अब तक: (हाँ मुझे पता है कि लाइनें हर जगह परिपूर्ण नहीं हैं। समस्या का पता नहीं लगा सकती हैं :() यहाँ छवि विवरण दर्ज करें
न जाने क्यों, लेकिन त्रिकोण न ही अपनी रूपरेखा दिखाते हैं। वे मेरे सहेजे हुए बीएमपी पर हालांकि करते हैं।


इस पर कोई अपडेट?
टेलर स्कॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.