విభాగాన్ని నిర్మించడానికి బ్రెసెన్‌హామ్ అల్గోరిథం. వృత్తాన్ని నిర్మించడానికి బ్రెసెన్‌హామ్ యొక్క అల్గోరిథం

LCD డిస్‌ప్లే స్క్రీన్‌ను వివిక్త మూలకాల (పిక్సెల్‌లు) యొక్క మాతృకగా వీక్షించవచ్చు, వీటిలో ప్రతి ఒక్కటి బ్యాక్‌లిట్ కావచ్చు, నేరుగా ఒక పాయింట్ నుండి మరొక పాయింట్‌కి గీతను గీయడం సాధ్యం కాదు. పిక్సెల్ గుర్తింపు ప్రక్రియ ఉత్తమమైన మార్గంలోఇచ్చిన విభాగాన్ని అంచనా వేయడాన్ని రాస్టర్ డికంపోజిషన్ అంటారు. చిత్రం యొక్క లైన్-బై-లైన్ రెండరింగ్ ప్రక్రియతో కలిపినప్పుడు, దానిని రాస్టర్ స్కాన్ కన్వర్షన్ అంటారు. 45° కోణంలో క్షితిజ సమాంతర, నిలువు మరియు వంపుతిరిగిన వాటి కోసం. విభాగాలు, రాస్టర్ మూలకాల ఎంపిక స్పష్టంగా ఉంటుంది. ఏదైనా ఇతర ధోరణితో, అంజీర్ 1లో చూపిన విధంగా అవసరమైన పిక్సెల్‌లను ఎంచుకోవడం చాలా కష్టం.

Fig.1. లైన్ విభాగాల రాస్టర్ కుళ్ళిపోవడం.

డ్రాయింగ్ సెగ్మెంట్ల కోసం అల్గారిథమ్‌ల కోసం సాధారణ అవసరాలు క్రింది విధంగా ఉన్నాయి: విభాగాలు నేరుగా కనిపించాలి, ఇచ్చిన పాయింట్ల వద్ద ప్రారంభం మరియు ముగింపు ఉండాలి, సెగ్మెంట్ వెంబడి ప్రకాశం స్థిరంగా మరియు పొడవు మరియు వాలుతో సంబంధం లేకుండా ఉండాలి మరియు త్వరగా డ్రా చేయాలి.

45° కోణంలో క్షితిజ సమాంతర, నిలువు మరియు వంపుతిరిగిన పంక్తులను గీసినప్పుడు మాత్రమే మొత్తం విభాగంలో స్థిరమైన ప్రకాశం సాధించబడుతుంది. అన్ని ఇతర ధోరణుల కోసం, అంజీర్‌లో చూపిన విధంగా రాస్టరైజేషన్ ప్రకాశం అసమానతకు దారి తీస్తుంది. 1.

చాలా లైన్ డ్రాయింగ్ అల్గోరిథంలు ఉపయోగిస్తాయి దశల వారీ అల్గోరిథం. అటువంటి అల్గోరిథం యొక్క ఉదాహరణ ఇక్కడ ఉంది:

సాధారణ దశల వారీ అల్గోరిథం

స్థానం = ప్రారంభం

step = పెంపు

1. ఉంటేస్థానం - ముగింపు< точность అప్పుడు 4

ఉంటేస్థానం > ముగింపు అప్పుడు 2

ఉంటేస్థానం< конец అప్పుడు 3

2. స్థానం = స్థానం - అడుగు

3. స్థానం = స్థానం + అడుగు

4. పూర్తి

బ్రెసెన్‌హామ్ అల్గోరిథం.

బ్రెసెన్‌హామ్ యొక్క అల్గోరిథం వాస్తవానికి డిజిటల్ ప్లాటర్‌ల కోసం అభివృద్ధి చేయబడినప్పటికీ, అది సమానంగా LCD మానిటర్‌కు అనుకూలం. విభాగాన్ని సూచించడానికి అల్గోరిథం సరైన రాస్టర్ కోఆర్డినేట్‌లను ఎంచుకుంటుంది. ఆపరేషన్ సమయంలో, కోఆర్డినేట్‌లలో ఒకటి x లేదా y (పై ఆధారపడి ఉంటుంది వాలు) - ఒక్కొక్కటిగా మారుతుంది. మరొక కోఆర్డినేట్ (0 లేదా 1కి) మార్చడం అనేది సెగ్మెంట్ యొక్క వాస్తవ స్థానం మరియు సమీప గ్రిడ్ కోఆర్డినేట్‌ల మధ్య దూరంపై ఆధారపడి ఉంటుంది. మేము ఈ దూరాన్ని లోపం అని పిలుస్తాము.

అల్గోరిథం ఈ లోపం యొక్క సంకేతం మాత్రమే తనిఖీ చేయవలసిన విధంగా నిర్మించబడింది. అంజీర్ 2లో ఇది మొదటి ఆక్టాంట్‌లోని సెగ్మెంట్ కోసం వివరించబడింది, అనగా. 0 నుండి 1 వరకు వాలు ఉన్న సెగ్మెంట్ కోసం. పాయింట్ (0,0) నుండి సెగ్మెంట్ యొక్క వాలు 1/2 కంటే ఎక్కువగా ఉంటే, అప్పుడు x = 1 పంక్తితో ఖండన ఉంటుంది అని మీరు బొమ్మ నుండి చూడవచ్చు. y = 0 సరళ రేఖ కంటే y = 1 రేఖకు దగ్గరగా ఉంటుంది. తత్ఫలితంగా, రాస్టర్ పాయింట్ (1,1) పాయింట్ (1,0) కంటే సెగ్మెంట్ యొక్క గమనాన్ని బాగా అంచనా వేస్తుంది. వాలు 1/2 కంటే తక్కువగా ఉంటే, అప్పుడు వ్యతిరేకం నిజం. 1/2 వాలుకు ప్రాధాన్యత ఎంపిక లేదు. IN ఈ సందర్భంలోఅల్గోరిథం పాయింట్‌ను ఎంచుకుంటుంది (1,1).

అన్నం. 2. బ్రెసెన్‌హామ్ అల్గోరిథం యొక్క ప్రధాన ఆలోచన.

అన్ని విభాగాలు రాస్టర్ పాయింట్ల గుండా వెళ్ళవు. ఇదే పరిస్థితిఅంజీర్ 3లో ఉదహరించబడింది, ఇక్కడ 3/8 వాలుతో ఒక విభాగం మొదట రాస్టర్ పాయింట్ (0,0) గుండా వెళుతుంది మరియు వరుసగా మూడు పిక్సెల్‌లను కలుస్తుంది. వివిక్త పిక్సెల్‌ల ద్వారా విభాగాన్ని సూచించేటప్పుడు లోపం యొక్క గణన కూడా వివరించబడింది.

Fig.3. బ్రెసెన్‌హామ్ అల్గారిథమ్‌లో లోపం యొక్క గ్రాఫ్.

లోపం యొక్క చిహ్నాన్ని మాత్రమే తనిఖీ చేయడం మంచిది కాబట్టి, ఇది మొదట్లో -1/2కి సెట్ చేయబడింది. ఈ విధంగా, సెగ్మెంట్ యొక్క కోణీయ గుణకం 1/2 కంటే ఎక్కువ లేదా సమానంగా ఉంటే, కోఆర్డినేట్‌లతో (1,0) తదుపరి రాస్టర్ పాయింట్ వద్ద లోపం విలువను ఇలా లెక్కించవచ్చు

= + m

ఎక్కడ m- కోణీయ గుణకం. మా విషయంలో, ఎప్పుడు ప్రారంభ విలువలోపాలు -1/2

= 1/2 + 3/8 = -1/8

ఎందుకంటే ప్రతికూలంగా, సెగ్మెంట్ పిక్సెల్ మధ్యలో దిగువకు వెళుతుంది. కాబట్టి, అదే క్షితిజ సమాంతర స్థాయిలో ఉన్న పిక్సెల్ విభాగం యొక్క స్థానాన్ని బాగా అంచనా వేస్తుంది, కాబట్టి వద్దపెరగదు. మేము అదే విధంగా లోపాన్ని లెక్కిస్తాము

= -1/8 + 3/8 = 1/4

తదుపరి రాస్టర్ పాయింట్ వద్ద (2,0). ఇప్పుడు పాజిటివ్, అంటే సెగ్మెంట్ ఎక్కువ పాస్ అవుతుంది మధ్య బిందువు. తదుపరి అతిపెద్ద కోఆర్డినేట్‌తో రాస్టర్ మూలకం (2,1). వద్దసెగ్మెంట్ స్థానాన్ని బాగా అంచనా వేస్తుంది. అందుకే వద్ద 1 ద్వారా పెరుగుతుంది. తదుపరి పిక్సెల్‌ను పరిగణనలోకి తీసుకునే ముందు, దాని నుండి 1ని తీసివేయడం ద్వారా లోపాన్ని సరిదిద్దడం అవసరం

= 1/4 - 1 = -3/4

నిలువు రేఖ యొక్క ఖండన అని గమనించండి x= 2 సె ఇచ్చిన సెగ్మెంట్సరళ రేఖకు దిగువన 1/4 ఉంటుంది వద్ద= 1. మేము సెగ్మెంట్ 1/2ని క్రిందికి తరలించినట్లయితే, మనకు ఖచ్చితంగా -3/4 విలువ వస్తుంది. తదుపరి పిక్సెల్ కోసం గణనలను కొనసాగించడం ఇస్తుంది

= -3/4 + 3/8 = -3/8

ఎందుకంటే ప్రతికూలంగా ఉంటుంది, అప్పుడు y పెరగదు. చెప్పబడిన అన్నింటి నుండి, లోపం అనేది అక్షం వెంట కత్తిరించబడిన విరామం అని అనుసరిస్తుంది వద్దప్రతి రాస్టర్ ఎలిమెంట్‌లోని సెగ్మెంట్‌గా పరిగణించబడుతుంది (-1/2కి సంబంధించి).

మొదటి ఆక్టాంట్ కోసం బ్రెసెన్‌హామ్ యొక్క అల్గారిథమ్‌ను అందజేద్దాం, అనగా. కేసు 0 = కోసం< y =< x.

మొదటి ఆక్టాంట్ కోసం ఒక విభాగాన్ని రాస్టర్‌గా విడదీయడానికి బ్రెసెన్‌హామ్ యొక్క అల్గోరిథం

పూర్ణాంకం- పూర్ణాంకానికి మార్పిడి ఫంక్షన్

x, y, x, y - పూర్ణాంకాలు

ఇ - నిజమైన

వేరియబుల్స్ యొక్క ప్రారంభీకరణ

హాఫ్-పిక్సెల్ సరిదిద్దబడిన ప్రారంభీకరణ

ప్రధాన చక్రం ప్రారంభం

అయితే (ఇ => 0)

అల్గోరిథం యొక్క బ్లాక్ రేఖాచిత్రం అంజీర్ 4లో చూపబడింది.

Fig.4. బ్రెసెన్‌హామ్ అల్గోరిథం యొక్క బ్లాక్ రేఖాచిత్రం.

బ్రెసెన్‌హామ్ అల్గోరిథం యొక్క ఉదాహరణ.

పాయింట్ (0,0) నుండి పాయింట్ (5,5) వరకు గీసిన విభాగాన్ని పరిగణించండి. బ్రెసెన్‌హామ్ అల్గోరిథం ఉపయోగించి ఒక విభాగాన్ని రాస్టర్‌గా విడదీయడం క్రింది ఫలితానికి దారి తీస్తుంది:

ప్రారంభ సెట్టింగులు

ఇ = 1 - 1/2 = 1/2

ఫలితం అంజీర్ 5లో చూపబడింది మరియు ఊహించిన దానితో సమానంగా ఉంటుంది. కోఆర్డినేట్‌లతో (5,5) రాస్టర్ పాయింట్ యాక్టివేట్ చేయబడలేదని గమనించండి. తదుపరి లూప్‌ను 0 నుండి xకి మార్చడం ద్వారా ఈ పాయింట్‌ని సక్రియం చేయవచ్చు. పాయింట్ (0,0) యాక్టివేషన్ తదుపరి i లైన్‌కు ముందు ప్లాట్ స్టేట్‌మెంట్‌ను ఉంచడం ద్వారా తొలగించబడుతుంది.

అన్నం. 5. మొదటి ఆక్టాంట్‌లో బ్రెసెన్‌హామ్ అల్గోరిథం యొక్క ఫలితం.

సాధారణ అల్గోరిథంబ్రెసెన్హామ్.

బ్రెసెన్‌హామ్ అల్గోరిథం యొక్క అమలు పూర్తి కావడానికి, అన్ని ఆక్టాంట్‌లలోని విభాగాలను ప్రాసెస్ చేయడం అవసరం. సెగ్మెంట్ ఉన్న క్వాడ్రంట్ సంఖ్య మరియు దాని కోణీయ గుణకాన్ని అల్గోరిథంలో పరిగణనలోకి తీసుకొని సవరణ చేయడం సులభం. ఎప్పుడు సంపూర్ణ విలువవాలు 1 కంటే ఎక్కువ, వద్దనిరంతరం ఒకదానితో ఒకటి మారుతూ ఉంటుంది మరియు విలువను మార్చాలా వద్దా అని నిర్ణయించడానికి బ్రెసెన్‌హామ్ లోపం ప్రమాణం ఉపయోగించబడుతుంది x. నిరంతరం మారుతున్న (+1 లేదా -1 ద్వారా) కోఆర్డినేట్ ఎంపిక క్వాడ్రంట్ (Fig. 6.)పై ఆధారపడి ఉంటుంది. సాధారణ అల్గోరిథం క్రింది విధంగా రూపొందించవచ్చు:

సాధారణీకరించిన పూర్ణాంకం బ్రెసెన్‌హామ్ క్వాడ్రంట్ అల్గోరిథం

సెగ్మెంట్ (x1,y1) మరియు (x2,y2) చివరలు ఏకీభవించవని భావించబడుతుంది

అన్ని వేరియబుల్స్ పూర్ణాంకాలుగా పరిగణించబడతాయి

సంతకం చేయండి- నెగిటివ్, జీరో మరియు పాజిటివ్ ఆర్గ్యుమెంట్ కోసం వరుసగా -1, 0, 1ని అందించే ఫంక్షన్

వేరియబుల్స్ యొక్క ప్రారంభీకరణ

x = abs(x2 - x1)

y = abs(y2 - y1)

s1 = సంతకం చేయండి(x2 - x1)

s2 = సంతకం చేయండి(y2 - y1)

సెగ్మెంట్ యొక్క వాలుపై ఆధారపడి x మరియు y విలువల మార్పిడి

ఉంటేవై< x అప్పుడు

ముగింపు ఉంటే

ప్రారంభించడం సగం పిక్సెల్ ద్వారా సర్దుబాటు చేయబడింది

ప్రధాన లూప్

కోసంనేను = 1 కు x

ప్లాట్లు(x,y)

అయితే( =>0)

ఉంటేమార్పిడి = 1 అప్పుడు

ముగింపు సమయంలో

ఉంటేమార్పిడి = 1 అప్పుడు


Fig.6. సాధారణీకరించిన బ్రెసెన్‌హామ్ అల్గోరిథం కోసం కేసుల విశ్లేషణ.

ఉదాహరణ. సాధారణీకరించిన బ్రెసెన్‌హామ్ అల్గోరిథం.

ఉదాహరణ కోసం, పాయింట్ (0,0) నుండి పాయింట్ (-8, -4) వరకు ఉన్న విభాగాన్ని పరిగణించండి.

ప్రారంభ సెట్టింగులు

దశల వారీ చక్రం యొక్క ఫలితాలు

Fig.7. మూడవ క్వాడ్రంట్‌లో సాధారణీకరించిన బ్రెసెన్‌హామ్ అల్గోరిథం యొక్క ఫలితం.

అంజీర్లో. 7 ఫలితాన్ని చూపుతుంది. అంజీర్తో పోలిక. 5 రెండు అల్గారిథమ్‌ల ఫలితాలు భిన్నంగా ఉన్నాయని చూపిస్తుంది.

తదుపరి విభాగం వృత్తాన్ని రూపొందించడానికి బ్రెసెన్‌హామ్ యొక్క అల్గారిథమ్‌ను చర్చిస్తుంది.

వృత్తాన్ని రూపొందించడానికి బ్రెసెన్‌హామ్ యొక్క అల్గోరిథం.

ఇది ఒక రాస్టర్ మాత్రమే లీనియర్, కానీ కూడా ఇతర, మరింత లోకి కుళ్ళిపోవడం అవసరం సంక్లిష్ట విధులు. క్షయం కోనిక్ విభాగాలు, అనగా, వృత్తాలు, దీర్ఘవృత్తాలు, పారాబొలాస్, హైపర్బోలాస్, గణనీయమైన సంఖ్యలో రచనలు అంకితం చేయబడ్డాయి. అత్యంత శ్రద్ధ, వాస్తవానికి, సర్కిల్కు ఇవ్వబడుతుంది. సర్కిల్ జనరేషన్ అల్గారిథమ్‌లలో అత్యంత సమర్థవంతమైన మరియు సులభంగా అర్థం చేసుకోగలిగేది బ్రెసెన్‌హామ్ కారణంగా ఉంది. ముందుగా, మీరు సర్కిల్‌లో ఎనిమిదవ వంతు మాత్రమే రూపొందించాలని గుర్తుంచుకోండి. అంజీర్‌లో చూపిన విధంగా దాని మిగిలిన భాగాలను వరుస ప్రతిబింబాల ద్వారా పొందవచ్చు. 8. మొదటి అష్టాంశం (0 నుండి 45° అపసవ్య దిశలో) ఉత్పత్తి చేయబడితే, రెండవ ఆక్టాంట్ y = x సరళ రేఖకు సంబంధించి అద్దం ప్రతిబింబం ద్వారా పొందవచ్చు, ఇది కలిసి మొదటి క్వాడ్రంట్‌ను ఇస్తుంది. రెండవ క్వాడ్రంట్‌లో వృత్తం యొక్క సంబంధిత భాగాన్ని పొందేందుకు మొదటి క్వాడ్రంట్ పంక్తి x = 0కి సంబంధించి ప్రతిబింబిస్తుంది. నిర్మాణాన్ని పూర్తి చేయడానికి ఎగువ సెమిసర్కిల్ y = 0 సరళ రేఖకు సంబంధించి ప్రతిబింబిస్తుంది. అంజీర్లో. మూర్తి 8 సంబంధిత పరివర్తనల యొక్క రెండు-డైమెన్షనల్ మాత్రికలను చూపుతుంది.

అన్నం. 8. తరం పూర్తి వృత్తంమొదటి ఆక్టాంట్‌లో ఆర్క్ నుండి.

అల్గారిథమ్‌ని పొందేందుకు, వృత్తం యొక్క మొదటి త్రైమాసికాన్ని దాని కేంద్రంతో పరిగణించండి. పాయింట్ వద్ద అల్గోరిథం ప్రారంభమైతే గమనించండి x = 0, y = R,మొదటి క్వాడ్రంట్‌లో సవ్యదిశలో వృత్తాన్ని రూపొందించేటప్పుడు వద్దవాదనలు (Fig. 9) యొక్క మార్పులేని తగ్గుదల ఫంక్షన్. అదేవిధంగా, ఉంటే ప్రారంభ స్థానంఉంది y = 0, X = ఆర్,అప్పుడు అపసవ్య దిశలో వృత్తాన్ని రూపొందిస్తున్నప్పుడు Xఆర్గ్యుమెంట్ యొక్క మోనోటోనిక్‌గా తగ్గే ఫంక్షన్ అవుతుంది u.మా విషయంలో, పాయింట్ వద్ద ప్రారంభించి సవ్యదిశలో జనరేషన్ ఎంచుకోబడుతుంది X = 0, y = R.వృత్తం యొక్క కేంద్రం మరియు ప్రారంభ స్థానం ఖచ్చితంగా రాస్టర్ పాయింట్ల వద్ద ఉన్నాయని భావించబడుతుంది.

ఎవరికైనా ఇచ్చిన పాయింట్సర్కిల్‌పై, సవ్యదిశలో ఉత్పత్తి చేస్తున్నప్పుడు, సర్కిల్‌ను ఉత్తమంగా అంచనా వేసే తదుపరి పిక్సెల్‌ని ఎంచుకోవడానికి కేవలం మూడు అవకాశాలు మాత్రమే ఉన్నాయి: అడ్డంగా కుడికి, వికర్ణంగా క్రిందికి మరియు కుడికి, నిలువుగా క్రిందికి. అంజీర్లో. 10 ఈ దిశలు వరుసగా m H , m D , m Vగా సూచించబడ్డాయి . అల్గోరిథం పిక్సెల్‌ని ఎంచుకుంటుంది, దీని కోసం ఈ పిక్సెల్‌లలో ఒకటి మరియు సర్కిల్ మధ్య దూరం యొక్క స్క్వేర్ కనిష్టంగా ఉంటుంది, అంటే కనిష్టంగా

m H = |(x i + 1) 2 + (y i) 2 -R 2 |

m D = | |

m V = |(x i) 2 + (y i -1) 2 -R 2 |

పాయింట్ (xi, yi,) సమీపంలో అంజీర్‌లో చూపిన సర్కిల్ మరియు రాస్టర్ గ్రిడ్ యొక్క ఐదు రకాల ఖండనలు మాత్రమే సాధ్యమవుతాయని మనం గమనించినట్లయితే గణనలను సరళీకృతం చేయవచ్చు. 11.

అన్నం. 11. సర్కిల్ మరియు రాస్టర్ గ్రిడ్ యొక్క ఖండన.

వృత్తం యొక్క కేంద్రం నుండి వికర్ణ పిక్సెల్ వరకు ఉన్న స్క్వేర్డ్ దూరాల మధ్య వ్యత్యాసం (x i, + 1, y i - 1) మరియు సర్కిల్ R 2పై కేంద్రం నుండి ఒక బిందువుకు సమానం

d i = (x i + 1) 2 + (y i -1) 2 -R 2

సెగ్మెంట్ కోసం బ్రెసెన్‌హామ్ అల్గారిథమ్‌లో వలె, సంబంధిత పిక్సెల్‌ను ఎంచుకోవడానికి లోపం యొక్క చిహ్నాన్ని మాత్రమే ఉపయోగించడం మంచిది మరియు దాని పరిమాణం కాదు.

ఎప్పుడు d i< 0 диагональная точка (x i , + 1, у i - 1) నిజమైన సర్కిల్ లోపల ఉంది, అనగా ఇవి అంజీర్‌లోని 1 లేదా 2 సందర్భాలు. 11. ఈ పరిస్థితిలో మీరు పిక్సెల్ (x i, + 1,) ఎంచుకోవాలని స్పష్టంగా ఉంది వద్ద i) , అంటే m H, లేదా పిక్సెల్ (x i, + 1, వద్ద i - 1), అనగా m D. దీన్ని చేయడానికి, మొదట కేసు 1ని పరిగణించండి మరియు వృత్తం నుండి పిక్సెల్‌ల వరకు క్షితిజ సమాంతర మరియు వికర్ణ దిశలలోని స్క్వేర్డ్ దూరాలలో వ్యత్యాసాన్ని తనిఖీ చేయండి:

d = |(x i + 1) 2 + (y i) 2 -R 2 | - |(x i + 1) 2 + (y i -1) 2 -R 2 |

డి వద్ద< 0 расстояние от окружности до диагонального пикселя больше, чем до горизонтального. దీనికి విరుద్ధంగా, ఒకవేళ డి > 0, క్షితిజ సమాంతర పిక్సెల్‌కు దూరం ఎక్కువగా ఉంటుంది. అందువలన,

డి వద్ద<= 0 выбираем m H в (x i , + 1, у i - 1)

d > 0 కోసం, m D in (x i, + 1, y i - 1) ఎంచుకోండి

e = 0 వద్ద, సర్కిల్ నుండి రెండు పిక్సెల్‌లకు దూరం ఒకే విధంగా ఉన్నప్పుడు, మేము క్షితిజ సమాంతర దశను ఎంచుకుంటాము.

e విలువను అంచనా వేయడానికి అవసరమైన గణనల సంఖ్యను సందర్భంలో 1 అని గుర్తించడం ద్వారా తగ్గించవచ్చు

(x i + 1) 2 + (y i) 2 -R 2 >= 0

(x i + 1) 2 + (y i -1) 2 -R 2< 0

వికర్ణ పిక్సెల్ నుండి (x i, + 1, వద్ద i - 1) ఎల్లప్పుడూ వృత్తం లోపల ఉంటుంది మరియు సమాంతరంగా ఉంటుంది (x i, + 1, వద్ద i) - దాని వెలుపల. అందువలన, ఇ సూత్రాన్ని ఉపయోగించి లెక్కించవచ్చు

d = (x i + 1) 2 + (y i) 2 -R 2 + (x i + 1) 2 + (y i -1) 2 -R 2

అదనంగా పూర్తి చతురస్రంపదం (y i) 2 కూడిక మరియు వ్యవకలనం ఉపయోగించి - 2y i + 1 ఇస్తుంది

d = 2[(x i + 1) 2 + (y i -1) 2 -R 2 ] + 2y i - 1

IN చదరపు బ్రాకెట్లునిర్వచనం e i మరియు దాని ప్రత్యామ్నాయం ద్వారా నిలుస్తుంది

డి = 2(e i + y i) - 1

వ్యక్తీకరణను చాలా సులభతరం చేస్తుంది.

అంజీర్‌లో కేసు 2ని పరిగణించండి. 11 మరియు ఇక్కడ క్షితిజసమాంతర పిక్సెల్ (x i, + 1, y i) తప్పక ఎంచుకోవాలని గమనించండి, ఎందుకంటే y అనేది ఒక మోనోటోనికల్‌గా తగ్గుతున్న ఫంక్షన్. భాగాలను తనిఖీ చేయడం మరియు దానిని చూపుతుంది

(x i + 1) 2 + (y i) 2 -R 2< 0

(x i + 1) 2 + (y i -1) 2 -R 2< 0

2వ సందర్భంలో క్షితిజ సమాంతర (x i, + 1, y i) మరియు వికర్ణ (x i, + 1, y i -1) పిక్సెల్‌లు వృత్తం లోపల ఉంటాయి. అందువల్ల డి< 0, и при использовании того же самого критерия, что и в случае 1, выбирается пиксел (x i , + 1, у i).

e i > 0 అయితే, వికర్ణ బిందువు (x i, + 1, y i -1) వృత్తం వెలుపల ఉంటుంది, అనగా ఇవి అంజీర్‌లోని 3 మరియు 4 సందర్భాలు. 11. ఈ పరిస్థితిలో, పిక్సెల్ (x i, + 1, y i -1) లేదా (x i, y i -1) తప్పక ఎంచుకోవాలి. . మునుపటి కేసు యొక్క విశ్లేషణ మాదిరిగానే, ఎంపిక ప్రమాణాన్ని మొదట కేస్ 3ని పరిగణించడం ద్వారా మరియు సర్కిల్ నుండి వికర్ణ m D మరియు నిలువు m V పిక్సెల్‌ల వరకు ఉన్న స్క్వేర్డ్ దూరాల మధ్య వ్యత్యాసాన్ని తనిఖీ చేయడం ద్వారా పొందవచ్చు.

అంటే డి " = |(x i + 1) 2 + (y i -1) 2 -R 2 | - |(x i) 2 + (y i -1) 2 -R 2 |

వద్ద డి " < 0, సర్కిల్ నుండి నిలువు పిక్సెల్ (x i, y i -1)కి దూరం ఎక్కువగా ఉంటుంది మరియు మీరు పిక్సెల్‌కి వికర్ణ దశను ఎంచుకోవాలి (x i, + 1, y i -1). దీనికి విరుద్ధంగా, కేసులో డి " > 0, సర్కిల్ నుండి వికర్ణ పిక్సెల్‌కు దూరం ఎక్కువగా ఉంటుంది మరియు మీరు పిక్సెల్‌కు నిలువు కదలికను ఎంచుకోవాలి (x i, y i -1). అందువలన,

డి వద్ద " <= 0 ఎంచుకోండి m D in (x i +1, y i -1)

డి వద్ద " > 0 ఎంచుకోండి m V in (x i, y i -1)

ఇక్కడ సందర్భంలో డి " = 0, అనగా దూరాలు సమానంగా ఉన్నప్పుడు, వికర్ణ దశ ఎంచుకోబడుతుంది.

భాగాలను తనిఖీ చేయడం ఇ " అని చూపిస్తుంది

(x i) 2 + (y i -1) 2 -R 2 >= 0

(x i + 1) 2 + (y i -1) 2 -R 2< 0

కేస్ 3 కోసం, వికర్ణ పిక్సెల్ (x i +1, y i -1) సర్కిల్ వెలుపల ఉంది, అయితే నిలువు పిక్సెల్ (x i, y i -1) దాని లోపల ఉంటుంది. ఇది ఇ అని వ్రాయడానికి అనుమతిస్తుంది " రూపంలో

డి " = (x i +1) 2 + (y i -1) 2 -R 2 + (x i) 2 + (y i -1) 2 -R 2

2x i + 1ని జోడించడం మరియు తీసివేయడం ద్వారా పదం (x i) 2 యొక్క ఖచ్చితమైన వర్గాన్ని పూర్తి చేయడం ఇస్తుంది

డి " = 2[(x i +1) 2 + (y i -1) 2 -R 2 ] - 2x i - 1

d i నిర్వచనాన్ని ఉపయోగించి వ్యక్తీకరణను ఫారమ్‌కి తీసుకువస్తుంది

డి " = 2(ఇ ఐ - x i )- 1

ఇప్పుడు, కేసు 4ని పరిగణనలోకి తీసుకుంటే, మనం నిలువు పిక్సెల్ (x i, y i -1) ఎంచుకోవాలని మేము మళ్ళీ గమనించాము, ఎందుకంటే y అనేది పెరుగుతున్నప్పుడు మార్పు లేకుండా తగ్గుతుంది. X.

భాగాలను తనిఖీ చేయడం డి " కేసు 4 అది చూపిస్తుంది

(x i +1) 2 + (y i -1) 2 -R 2 > 0

(x i) 2 + (y i -1) 2 -R 2 > 0

రెండు పిక్సెల్‌లు సర్కిల్ వెలుపల ఉన్నందున. కాబట్టి, ఇ " > 0 మరియు కేస్ 3 కోసం అభివృద్ధి చేసిన ప్రమాణాన్ని ఉపయోగించినప్పుడు, m V యొక్క సరైన ఎంపిక ఏర్పడుతుంది .

అంజీర్‌లో కేస్ 5ని మాత్రమే తనిఖీ చేయడం మిగిలి ఉంది. 11, ఇది వికర్ణ పిక్సెల్ (x i, y i -1) సర్కిల్‌పై ఉన్నప్పుడు సంభవిస్తుంది, అనగా d i = 0. e భాగాలను తనిఖీ చేయడం ద్వారా ఇది కనిపిస్తుంది

(x i +1) 2 + (y i) 2 -R 2 > 0

కాబట్టి, d > 0 మరియు వికర్ణ పిక్సెల్ (x i +1, y i -1) ఎంచుకోబడింది. అదేవిధంగా, మేము భాగాలను అంచనా వేస్తాము d " :

(x i +1) 2 + (y i -1) 2 -R 2 = 0

(x i +1) 2 + (y i -1) 2 -R 2< 0

మరియు డి " < 0, что является условием выбора правильного диагонального шага к (x i +1 , у i -1) . Таким образом, случай d i = 0 подчиняется тому же критерию, что и случай d i < 0 или d i >0. పొందిన ఫలితాలను సంగ్రహిద్దాం:

డి<= 0 выбираем пиксел (x i +1 , у i) - m H

డి > 0 పిక్సెల్‌ని ఎంచుకోండి (x i +1, y i -1) - m D

డి " <= 0 выбираем пиксел (x i +1 , у i -1) - m D

డి " > 0 ఎంచుకోండి పిక్సెల్ (x i, y i -1)- m V

d i = 0 ఎంపిక పిక్సెల్ (x i +1, y i -1) - m D

దశలవారీ అల్గారిథమ్‌ను అమలు చేయడానికి సాధారణ పునరావృత సంబంధాలను అభివృద్ధి చేయడం సులభం. ముందుగా పిక్సెల్ (x i + 1, y i)కి సమాంతర దశ m Hని పరిగణించండి . ఈ కొత్త పిక్సెల్ స్థానాన్ని (i + 1)గా సూచిస్తాం. అప్పుడు కొత్త పిక్సెల్ యొక్క అక్షాంశాలు మరియు విలువ e i సమానంగా ఉంటాయి

d i +1 = (x i +1 +1) 2 + (y i +1 -1) 2 -R 2 dd i + 2x i +1 + 1

అదేవిధంగా, కొత్త పిక్సెల్ యొక్క అక్షాంశాలు మరియు పిక్సెల్ (x i + 1, y i -1)కి m D దశకు d i విలువ క్రింది విధంగా ఉన్నాయి:

d i+1 = d i + 2x i+1 - 2y i+1 +2

m V నుండి (x i, y i -1) దశకు అదే

d i+1 = d i - 2y i+1 +1

ఒక సర్కిల్ కోసం సూడోకోడ్‌లో బ్రెసెన్‌హామ్ యొక్క అల్గోరిథం యొక్క అమలు క్రింద ఇవ్వబడింది.

మొదటి క్వాడ్రంట్‌లో వృత్తాన్ని రూపొందించడానికి బ్రెసెన్‌హామ్ యొక్క దశల వారీ అల్గోరిథం

అన్ని వేరియబుల్స్ పూర్ణాంకాలు

వేరియబుల్స్ యొక్క ప్రారంభీకరణ

పరిమితి = 0

1 ప్లాట్లు(x i, y i )

ఉంటే y i<= Пределఅప్పుడు 4

కేసు 1 లేదా 2, 4 లేదా 5, లేదా 3ని ఎంచుకోవడం

D i అయితే< 0అప్పుడు 2

ఒకవేళ డి > 0అప్పుడు 3

D i = 0 అయితే అప్పుడు 20

కేసు నిర్వచనం 1 లేదా 2

2 d = 2d i + 2у i - 1

ఒకవేళ డి<= 0అప్పుడు 10

d > 0 అయితే అప్పుడు 20

కేసు నిర్వచనం 4 లేదా 5

3 d = 2D i + 2x i - 1

ఉంటేడి <= 0అప్పుడు 20

ఉంటేడి > 0 అప్పుడు 30

దశలను అమలు చేయడం

10 x i = x i + 1

D i = D i + 2x i + 1

g1 వరకు

20 x i = x i + 1

D i = D i + 2х i - 2у i + 2

1 కి వెళ్ళండి

4 ముగింపు

క్షితిజ సమాంతర అక్షంపై అల్గారిథమ్‌ను ముగించడానికి పరిమితి వేరియబుల్ సున్నాకి సెట్ చేయబడింది, దీని ఫలితంగా మొదటి క్వాడ్రంట్‌లో సర్కిల్ ఉత్పత్తి అవుతుంది. ఆక్టాంట్‌లలో ఒకటి మాత్రమే అవసరమైతే, పరిమితి = సెట్టింగ్‌ని ఉపయోగించి రెండవ అక్షాంశాన్ని పొందవచ్చు. పూర్ణాంకం(R/sqrt(2)), మరియు మొదటిది - y = x (Fig. 8) సరళ రేఖకు సంబంధించి రెండవ ఆక్టాంట్ యొక్క ప్రతిబింబాన్ని ఉపయోగించడం. అల్గోరిథం యొక్క బ్లాక్ రేఖాచిత్రం అంజీర్లో చూపబడింది. 12.

అన్నం. 12. మొదటి క్వాడ్రంట్‌లో సర్కిల్‌ను రూపొందించడానికి బ్రెసెన్‌హామ్ యొక్క స్టెప్‌వైస్ అల్గోరిథం యొక్క బ్లాక్ రేఖాచిత్రం.

బెజియర్ కర్వ్ మరియు దాని రేఖాగణిత అల్గోరిథం.

బెజియర్ వక్రతలు 20వ శతాబ్దం 60వ దశకంలో రెనాల్ట్ ఆటోమొబైల్ కంపెనీకి చెందిన పియరీ బెజియర్ మరియు సిట్రోయెన్ కంపెనీకి చెందిన పాల్ డి కాస్టెల్‌జౌచే స్వతంత్రంగా అభివృద్ధి చేయబడ్డాయి, ఇక్కడ అవి కార్ బాడీలను రూపొందించడానికి ఉపయోగించబడ్డాయి.

డి కాస్టెలియర్ యొక్క ఆవిష్కరణ బెజియర్ (1959) కంటే కొంత ముందుగానే జరిగినప్పటికీ, అతని పరిశోధన ప్రచురించబడలేదు మరియు 1960ల చివరి వరకు వ్యాపార రహస్యంగా కంపెనీచే దాచబడింది.

కర్వ్‌లను మొదటిసారిగా 1962లో ఫ్రెంచ్ ఇంజనీర్ పియరీ బెజియర్ సాధారణ ప్రజలకు పరిచయం చేశారు, అతను వాటిని డి కాస్టెలియర్‌తో సంబంధం లేకుండా అభివృద్ధి చేసి, ఆటోమొబైల్ బాడీల కంప్యూటర్-ఎయిడెడ్ డిజైన్ కోసం వాటిని ఉపయోగించాడు. వక్రరేఖలకు బెజియర్ పేరు పెట్టారు మరియు వక్రతలను నిర్ణయించడానికి అతను అభివృద్ధి చేసిన పునరావృత పద్ధతికి (డి కాస్టెలియర్ యొక్క అల్గోరిథం) డి కాస్టెలియర్ పేరు పెట్టారు.

తదనంతరం, ఈ ఆవిష్కరణ కంప్యూటర్-ఎయిడెడ్ డిజైన్ సిస్టమ్స్ మరియు కంప్యూటర్ గ్రాఫిక్స్ ప్రోగ్రామ్‌లలో అత్యంత ముఖ్యమైన సాధనాల్లో ఒకటిగా మారింది.

బెజియర్ వక్రత - వ్యక్తీకరణ ద్వారా అందించబడిన పారామెట్రిక్ వక్రత

, 0 < t <1

మద్దతు శీర్షాల వెక్టర్స్ యొక్క భాగాల పనితీరు ఎక్కడ ఉంది మరియు - ఆధార విధులుబెజియర్ వక్రతలు, అని కూడా పిలుస్తారు బెర్న్‌స్టెయిన్ బహుపదిలు.

ఇక్కడ n అనేది బహుపది యొక్క డిగ్రీ, i అనేది సూచన శీర్షం యొక్క ఆర్డినల్ సంఖ్య.

బెజియర్ వక్రరేఖల రకాలు

సరళ వక్రతలు

n = 1 అయినప్పుడు, వక్రరేఖ ఒక సరళ రేఖ విభాగం, సూచన పాయింట్లు P0 మరియు P1 దాని ప్రారంభం మరియు ముగింపును నిర్వచిస్తాయి.

వక్రరేఖ సమీకరణం ద్వారా ఇవ్వబడింది:

,

చతుర్భుజ వక్రతలు

(n = 2) 3 సూచన పాయింట్ల ద్వారా పేర్కొనబడింది: P0, P1 మరియు P2.

TrueType ఫాంట్‌లు మరియు SWF ఫైల్‌లలోని అక్షరాల ఆకారాన్ని వివరించడానికి స్ప్లైన్‌లలో భాగంగా క్వాడ్రాటిక్ బెజియర్ వక్రతలు ఉపయోగించబడతాయి.

క్యూబిక్ వక్రతలు

(n = 3) కింది సమీకరణం ద్వారా వివరించబడింది:

నాలుగు రిఫరెన్స్ పాయింట్లు P0, P1, P2 మరియు P3, 2- లేదా 3-డైమెన్షనల్ స్పేస్‌లో నిర్వచించబడ్డాయి, వక్రరేఖ ఆకారాన్ని నిర్ణయిస్తాయి.

పంక్తి P0 పాయింట్ నుండి P1 వైపుకు వెళుతుంది మరియు P2 నుండి దానిని సమీపించే పాయింట్ P3 వద్ద ముగుస్తుంది. అంటే, వక్రత P1 మరియు P2 పాయింట్ల గుండా వెళ్ళదు, అవి దాని దిశను సూచించడానికి ఉపయోగించబడతాయి. P0 మరియు P1 మధ్య ఉన్న సెగ్మెంట్ పొడవు ఎంత త్వరగా వక్రరేఖ P3 వైపు మళ్లుతుందో నిర్ణయిస్తుంది.

మాతృక రూపంలో, క్యూబిక్ బెజియర్ వక్రత క్రింది విధంగా వ్రాయబడింది:

,

ఎక్కడ అంటారు ఆధార మాతృకబెజియర్:

పోస్ట్‌స్క్రిప్ట్, మెటాఫాంట్ మరియు GIMP వంటి ఆధునిక గ్రాఫిక్స్ సిస్టమ్‌లు వక్ర ఆకారాలను సూచించడానికి క్యూబిక్ వక్రతలతో రూపొందించబడిన బెజియర్ స్ప్లైన్‌లను ఉపయోగిస్తాయి.

కంప్యూటర్ గ్రాఫిక్స్‌లో అప్లికేషన్

నిర్వచనం మరియు మానిప్యులేషన్ యొక్క సౌలభ్యం కారణంగా, మృదువైన లైన్లను మోడలింగ్ చేయడానికి బెజియర్ వక్రతలు కంప్యూటర్ గ్రాఫిక్స్‌లో విస్తృతంగా ఉపయోగించబడుతున్నాయి. వక్రరేఖ పూర్తిగా దాని సూచన బిందువుల కుంభాకార పొట్టులో ఉంటుంది. బెజియర్ వక్రరేఖల యొక్క ఈ ఆస్తి, ఒక వైపు, వక్రరేఖల ఖండన బిందువులను కనుగొనే పనిని బాగా సులభతరం చేస్తుంది (కుంభాకార పొట్టులు కలుస్తాయి కాకపోతే, వక్రతలు కలుస్తాయి), మరియు మరోవైపు, ఇది మిమ్మల్ని అనుమతిస్తుంది దాని నియంత్రణ పాయింట్లను ఉపయోగించి వక్రరేఖను దృశ్యమానం చేయడానికి. అదనంగా, నియంత్రణ పాయింట్‌లకు తగిన పరివర్తనలను వర్తింపజేయడం ద్వారా అఫైన్ కర్వ్ ట్రాన్స్‌ఫార్మేషన్స్ (అనువాదం, స్కేలింగ్, రొటేషన్) కూడా అమలు చేయవచ్చు.

రెండవ మరియు మూడవ డిగ్రీల (క్వాడ్రాటిక్ మరియు క్యూబిక్) యొక్క బెజియర్ వక్రతలు చాలా ముఖ్యమైనవి. అధిక డిగ్రీల వక్రతలు ప్రాసెస్ చేయబడినప్పుడు ఎక్కువ లెక్కలు అవసరం మరియు ఆచరణాత్మక ప్రయోజనాల కోసం తక్కువ తరచుగా ఉపయోగించబడతాయి. సంక్లిష్ట ఆకృతుల పంక్తులను నిర్మించడానికి, బెజియర్ స్ప్లైన్‌ను రూపొందించడానికి వ్యక్తిగత బెజియర్ వక్రతలను ఒకదానికొకటి వరుసగా అనుసంధానించవచ్చు. రెండు వంపుల జంక్షన్ వద్ద మృదువైన రేఖను నిర్ధారించడానికి, రెండు వంపుల ప్రక్కనే ఉన్న నియంత్రణ పాయింట్లు ఒకే రేఖపై ఉండాలి. అడోబ్ ఇల్లస్ట్రేటర్ లేదా ఇంక్‌స్కేప్ వంటి వెక్టర్ గ్రాఫిక్స్ ప్రోగ్రామ్‌లలో, ఈ శకలాలు "పాత్‌లు"గా పిలువబడతాయి.

బెజియర్ కర్వ్ కోసం రేఖాగణిత అల్గోరిథం

పరామితి విలువ ఆధారంగా బెజియర్ వక్రరేఖపై పాయింట్ యొక్క కోఆర్డినేట్‌లను (x, y) లెక్కించడానికి ఈ అల్గోరిథం మిమ్మల్ని అనుమతిస్తుంది t.

1. ల్యాండ్‌మార్క్ పాయింట్ల గుండా వెళుతున్న బహుభుజి యొక్క ఆకృతి యొక్క ప్రతి వైపు విలువకు అనులోమానుపాతంలో విభజించబడింది t.

2. విభజన పాయింట్లు నేరుగా విభాగాలతో అనుసంధానించబడి కొత్త బహుభుజిని ఏర్పరుస్తాయి. కొత్త సర్క్యూట్ యొక్క నోడ్‌ల సంఖ్య మునుపటి సర్క్యూట్ యొక్క నోడ్‌ల సంఖ్య కంటే ఒకటి తక్కువగా ఉంటుంది.

3. కొత్త ఆకృతి యొక్క భుజాలు మళ్లీ విలువకు అనులోమానుపాతంలో విభజించబడ్డాయి t. మరియు అందువలన న. ఒకే డివిజన్ పాయింట్ పొందే వరకు ఇది కొనసాగుతుంది. ఈ పాయింట్ బెజియర్ వక్రరేఖ యొక్క పాయింట్ అవుతుంది.

C++లో రేఖాగణిత అల్గోరిథం యొక్క రికార్డింగ్ ఇక్కడ ఉంది:

కోసం (నేను = 0;i< = m;i ++)

R[i] =పి[నేను]; // సహాయక శ్రేణిని సృష్టించండిఆర్

కోసం (j = m; i > 0; i – –)

కోసం (i = 0; i< j; i + +)

R[i] =R[i] +t*(R[నేను + 1] –R[i]);

అల్గోరిథం యొక్క ఫలితం - బెజియర్ వక్రరేఖ యొక్క ఒక బిందువు యొక్క కోఆర్డినేట్లు R లో వ్రాయబడ్డాయి.

ఉపరితలాలను వివరించడానికి నమూనాలు. విశ్లేషణాత్మక నమూనా.

విశ్లేషణాత్మక నమూనా అనేది గణిత సూత్రాలను ఉపయోగించి ఉపరితలం యొక్క వివరణ:

z = f(x,y) – ఫంక్షన్ ఉపయోగించి వివరణ,

F(x,y,z) = 0 – అవ్యక్త సమీకరణాన్ని ఉపయోగించి వివరణ.

ఉపరితల వివరణ యొక్క పారామెట్రిక్ రూపం తరచుగా ఉపయోగించబడుతుంది:

ఇక్కడ s మరియు t అనేది ఒక నిర్దిష్ట పరిధిలో మారే పారామితులు మరియు Fx, Fy మరియు Fz అనే విధులు ఉపరితల ఆకారాన్ని నిర్ణయిస్తాయి.

అడ్వాంటేజ్ పారామెట్రిక్ రూపం అస్పష్టమైన విధులు మరియు మూసివేసిన ఉపరితలాలకు అనుగుణంగా ఉండే ఉపరితలాలను వివరించే సౌలభ్యంలో ఉంటుంది.

పారామెట్రిక్ వివరణ ఉపరితలం తిప్పినప్పుడు లేదా స్కేల్ చేసినప్పుడు సూత్రం గణనీయంగా మారని విధంగా (మరింత క్లిష్టంగా మారదు) అమర్చవచ్చు.

ఉదాహరణగా, బంతి ఉపరితలం యొక్క విశ్లేషణాత్మక వివరణను పరిగణించండి.

రెండు వాదనల యొక్క స్పష్టమైన విధి,

- అవ్యక్త సమీకరణం,

x = R sin s cos t, y = R sin s sin t, z = R cos s – పారామెట్రిక్ రూపంలో.

అనేక ఉపరితల విశ్లేషణ కార్యకలాపాలకు విశ్లేషణాత్మక నమూనా చాలా అనుకూలంగా ఉంటుంది.

ప్రయోజనాలు నమూనాలు (CG దృక్కోణం నుండి):

  • ప్రతి ఉపరితల పాయింట్ మరియు సాధారణ కోఆర్డినేట్‌లను లెక్కించడం సౌలభ్యం;
  • చాలా క్లిష్టమైన రూపాలను వివరించడానికి ఒక చిన్న మొత్తం డేటా.

లోపాలు:

  • కంప్యూటర్‌లో నెమ్మదిగా లెక్కించబడే ఫంక్షన్‌లను ఉపయోగించి వివరణ సూత్రాల సంక్లిష్టత ప్రదర్శన కార్యకలాపాల వేగాన్ని తగ్గిస్తుంది;
  • ఈ రకమైన వివరణను నేరుగా ఉపరితల చిత్రానికి వర్తింపజేయడం చాలా సందర్భాలలో అసాధ్యం - ఉపరితలం పాలిహెడ్రాన్‌గా ప్రదర్శించబడుతుంది, శీర్షాలు మరియు ముఖాల కోఆర్డినేట్‌లు ప్రదర్శన ప్రక్రియలో లెక్కించబడతాయి, ఇది బహుభుజితో పోలిస్తే వేగాన్ని తగ్గిస్తుంది. వివరణ నమూనా.

ఉపరితల నమూనా "యూనిఫాం మెష్".

ఈ నమూనా క్రింది విధంగా వ్యక్తిగత ఉపరితల బిందువుల కోఆర్డినేట్‌లను వివరిస్తుంది. సూచికలు (i, j) ఉన్న ప్రతి గ్రిడ్ నోడ్‌కు ఎత్తు విలువ zij కేటాయించబడుతుంది. సూచికలు (i, j) నిర్దిష్ట కోఆర్డినేట్ విలువలకు (x, y) అనుగుణంగా ఉంటాయి. నోడ్‌ల మధ్య దూరం ఒకే విధంగా ఉంటుంది - x-అక్షం వెంట dx, y-అక్షం వెంట dy. వాస్తవానికి, అటువంటి మోడల్ ద్విమితీయ శ్రేణి, రాస్టర్, మాతృక, వీటిలో ప్రతి మూలకం ఎత్తు విలువను నిల్వ చేస్తుంది.

ప్రతి ఉపరితలం ఈ నమూనా ద్వారా సూచించబడదు. ప్రతి నోడ్ (i, j) వద్ద ఒక ఎత్తు విలువ మాత్రమే నమోదు చేయబడితే, ఉపరితలం ఒకే-విలువ గల ఫంక్షన్ z = f (x, y) ద్వారా వివరించబడుతుంది. మరో మాటలో చెప్పాలంటే, ఇది ప్రతి నిలువు ఒక్కసారి మాత్రమే కలిసే ఉపరితలం. నిలువు ముఖాలు కూడా మోడల్ చేయబడవు. కార్టేసియన్ కోఆర్డినేట్‌లలో మాత్రమే గ్రిడ్‌ను పేర్కొనవచ్చని గమనించాలి. ఉదాహరణకు, ఒక ప్రత్యేకమైన ఫంక్షన్‌తో బంతి యొక్క ఉపరితలాన్ని వివరించడానికి, మీరు ధ్రువ కోఆర్డినేట్‌లను ఉపయోగించవచ్చు. ఏకరీతి గ్రిడ్ ఉపయోగించి, భూమి యొక్క ఉపరితలం యొక్క ఉపశమనం తరచుగా వివరించబడుతుంది.

ఏకరీతి గ్రిడ్ యొక్క సానుకూల లక్షణాలు:

  • ఉపరితలాల వివరణ సౌలభ్యం;
  • సాధారణ ఇంటర్‌పోలేషన్ ద్వారా ఉపరితలంపై ఏదైనా బిందువు యొక్క ఎత్తును త్వరగా కనుగొనగల సామర్థ్యం.

ఏకరీతి మెష్ యొక్క ప్రతికూలతలు:

  • గ్రిడ్ పాయింట్ల వద్ద అస్పష్టమైన ఎత్తు ఫంక్షన్‌కు అనుగుణంగా ఉండే ఉపరితలాలు మోడల్ చేయబడవు;
  • సంక్లిష్ట ఉపరితలాలను వివరించడానికి, పెద్ద సంఖ్యలో నోడ్‌లు అవసరం, ఇది కంప్యూటర్ మెమరీ మొత్తం ద్వారా పరిమితం కావచ్చు.

"అసమాన మెష్" ఉపరితల నమూనా.

అసమాన మెష్ అనేది ఉపరితలాన్ని వ్యక్తిగత పాయింట్ల ((x0, y0, z0), (x1, y1, z1), ..., (xn – 1, yn – 1, zn) రూపంలో వివరించడానికి ఒక నమూనా. – 1)) ఉపరితలానికి చెందినది. ఈ పాయింట్లను పొందవచ్చు, ఉదాహరణకు, కొన్ని పరికరాలను ఉపయోగించి ఒక వస్తువు యొక్క ఉపరితలం కొలిచే ఫలితంగా. ఈ నమూనా పైన చర్చించిన కొన్ని నమూనాలకు సాధారణీకరణగా పరిగణించబడుతుంది. ఉదాహరణకు, వెక్టార్ బహుభుజి నమూనా మరియు ఏకరీతి మెష్ నాన్-యూనిఫాం మెష్ యొక్క వైవిధ్యాలుగా పరిగణించబడుతుంది.

తార్కికంగా పరస్పరం సంబంధం లేని పాయింట్ విలువల సమితి రూపంలో ఉపరితల నమూనాను పరిశీలిద్దాం. రిఫరెన్స్ పాయింట్లను నిర్వచించడం యొక్క అసమానత సూచన పాయింట్లతో ఏకీభవించని ఇతర ఉపరితల బిందువుల కోఆర్డినేట్‌ల నిర్ణయాన్ని క్లిష్టతరం చేస్తుంది. ప్రత్యేక ప్రాదేశిక ఇంటర్‌పోలేషన్ పద్ధతులు అవసరం.

తెలిసిన కోఆర్డినేట్‌ల (x, ​​y) నుండి z కోఆర్డినేట్ విలువను లెక్కించడం విధిగా ఉండనివ్వండి. దీన్ని చేయడానికి, మీరు చాలా దగ్గరి పాయింట్లను కనుగొని, ప్రొజెక్షన్ (x, y)లో ఈ పాయింట్ల సాపేక్ష స్థానం ఆధారంగా కావలసిన z విలువను లెక్కించాలి. ఏకరీతి గ్రిడ్ కోసం, ఈ సమస్య చాలా సరళంగా పరిష్కరించబడుతుంది - వాస్తవంగా శోధన లేదు, సమీప సూచన పాయింట్ల సూచికలు వెంటనే లెక్కించబడతాయి.

రెండవ పని ఉపరితలాన్ని ప్రదర్శించడం (విజువలైజ్ చేయడం). ఈ సమస్యను అనేక విధాలుగా పరిష్కరించవచ్చు. అత్యంత సాధారణమైన వాటిలో ఒకటి త్రిభుజం.

త్రిభుజం ప్రక్రియను ఈ క్రింది విధంగా సూచించవచ్చు:

  • మేము ఒకదానికొకటి దగ్గరగా ఉన్న మొదటి మూడు పాయింట్లను కనుగొంటాము - మేము ఒక ఫ్లాట్ త్రిభుజాకార ముఖాన్ని పొందుతాము;
  • మేము ఈ ముఖానికి దగ్గరగా ఉన్న బిందువును కనుగొని, ప్రక్కనే ఉన్న ముఖాన్ని ఏర్పరుచుకుంటాము, ఇంకా ఒక్క పాయింట్ కూడా మిగిలి ఉండదు.

బ్రెసెన్‌హామ్ అల్గారిథమ్‌ను 1962లో జాక్ ఇ. బ్రెసెన్‌హామ్ ప్రతిపాదించారు మరియు విమానంలో పాయింట్‌లతో ఆకారాలను గీయడానికి ఉద్దేశించబడింది. ఈ అల్గోరిథం కంప్యూటర్ గ్రాఫిక్స్‌లో స్క్రీన్‌పై పంక్తులు గీయడానికి విస్తృతంగా ఉపయోగించబడుతుంది. రెండు-డైమెన్షనల్ రాస్టర్ యొక్క ఏ పాయింట్లు పెయింట్ చేయబడాలో అల్గోరిథం నిర్ణయిస్తుంది.

బ్రెసెన్‌హామ్ యొక్క అల్గోరిథం యొక్క గ్రాఫికల్ వివరణ చిత్రంలో ప్రదర్శించబడింది.

బ్రెసెన్‌హామ్ అల్గారిథమ్‌ని ఉపయోగించి విమానంలో నేరుగా భాగాలను గీయడానికి, మేము సాధారణ రూపంలో సరళ రేఖ యొక్క సమీకరణాన్ని వ్రాస్తాము

f(x,y)=Ax+By+C=0

గుణకాలు ఎక్కడ ఉన్నాయి మరియు బిగుణకాల ద్వారా వ్యక్తీకరించబడింది కెమరియు బిసరళ రేఖ యొక్క సమీకరణాలు. కోఆర్డినేట్‌లతో ఒక పంక్తి రెండు పాయింట్ల గుండా వెళితే ( x1;y1) మరియు ( x2;y2) , అప్పుడు సరళ రేఖ సమీకరణం యొక్క గుణకాలు సూత్రాల ద్వారా నిర్ణయించబడతాయి

A=y2-y1
B=x1-x2
C=y1∙x2-y2∙x1

కోఆర్డినేట్‌లతో ఏదైనా రాస్టర్ పాయింట్ కోసం ( xi;యి) విలువ ఫంక్షన్

  • f(xi,yi)పాయింట్ లైన్‌పై ఉంటే =0
  • f(xi,yi)పాయింట్ లైన్ క్రింద ఉంటే >0
  • f(xi,yi)ఎక్కడ i- ప్రదర్శించబడే పాయింట్ సంఖ్య.

అందువలన, ఏ పాయింట్ నిర్ణయించడానికి ఒక పద్ధతి పిలేదా ప్ర(ఫిగర్ చూడండి) తదుపరి దశలో ప్రదర్శించబడుతుంది, ఇది సెగ్మెంట్ మధ్య పోలిక |P-Q|ఫంక్షన్ విలువతో f(x,y). విలువ ఉంటే f(x,y)సెగ్మెంట్ మధ్య బిందువు క్రింద ఉంది |P-Q|, అప్పుడు ప్రదర్శించబడే తదుపరి పాయింట్ పాయింట్ అవుతుంది పి, లేకపోతే - పాయింట్ ప్ర .
ఫంక్షన్ యొక్క ఇంక్రిమెంట్ రాసుకుందాం

∆f=A∆x+B∆y

కోఆర్డినేట్‌లతో ఒక పాయింట్‌ని ప్రదర్శించిన తర్వాత (xi,yi)ప్రదర్శించాల్సిన తదుపరి పాయింట్ గురించి నిర్ణయం తీసుకోబడుతుంది. దీన్ని చేయడానికి, ఇంక్రిమెంట్లు పోల్చబడతాయి Δxమరియు Δy, సంబంధిత కోఆర్డినేట్‌తో పాటు కదలిక ఉనికి లేదా లేకపోవడాన్ని వర్గీకరిస్తుంది. ఈ ఇంక్రిమెంట్లు 0 లేదా 1 కావచ్చు. కాబట్టి, మనం ఒక బిందువు నుండి కుడికి వెళ్ళినప్పుడు,

మేము ఒక పాయింట్ నుండి కుడి మరియు క్రిందికి తరలించినప్పుడు, అప్పుడు

∆f=A+B,

మనం ఒక పాయింట్ నుండి క్రిందికి కదిలినప్పుడు, అప్పుడు

సెగ్మెంట్ ప్రారంభం యొక్క కోఆర్డినేట్‌లు మనకు తెలుసు, అంటే, కావలసిన లైన్‌లో స్పష్టంగా ఉండే పాయింట్. మేము మొదటి పాయింట్‌ని అక్కడ ఉంచాము మరియు అంగీకరించాము f= 0. మీరు ప్రస్తుత పాయింట్ నుండి రెండు దశలను తీసుకోవచ్చు - నిలువుగా (అడ్డంగా) లేదా ఒక పిక్సెల్ ద్వారా వికర్ణంగా.
కదలిక దిశ నిలువుగా లేదా అడ్డంగా వంపు కోణం గుణకం ద్వారా నిర్ణయించబడుతుంది. వంపు కోణం 45º కంటే తక్కువగా ఉంటే, మరియు

|ఎ|<|B|

ప్రతి అడుగుతో, కదలిక అడ్డంగా లేదా వికర్ణంగా జరుగుతుంది.
వంపు కోణం 45º కంటే ఎక్కువగా ఉంటే, ప్రతి అడుగు కదలిక నిలువుగా లేదా వికర్ణంగా ఉంటుంది.
అందువలన, వంపుతిరిగిన విభాగాన్ని గీయడానికి అల్గోరిథం క్రింది విధంగా ఉంటుంది:

C++లో అమలు

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

#చేర్చండి
నేమ్‌స్పేస్ stdని ఉపయోగించడం;
శూన్యమైన బ్రెజెన్‌హెమ్(char **z, int x0, int y0, int x1, int y1)
{
int A, B, గుర్తు;
A = y1 - y0;
B = x0 - x1;
ఒకవేళ (abs(A) > abs(B)) సంకేతం = 1;
వేరే సంకేతం = -1;
int signa, signb;
ఒకవేళ (ఎ< 0) signa = -1;
వేరే సంకేతం = 1;
ఒకవేళ (బి< 0) signb = -1;
else signb = 1;
int f = 0;
z = "*" ;
int x = x0, y = y0;
ఒకవేళ (సంకేతం == -1)
{
చేయండి (
f += A*signa;
అయితే (f > 0)
{
f -= B*signb;
y += సంకేతం;
}
x -= సంకేతం;
z[y][x] = "*" ;
}
వేరే
{
చేయండి (
f += B*signb;
అయితే (f > 0) (
f -= A*signa;
x -= సంకేతం;
}
y += సంకేతం;
z[y][x] = "*" ;
) అయితే (x != x1 || y != y1);
}
}
int ప్రధాన()
{
const int SIZE = 25; // ఫీల్డ్ పరిమాణం
int x1, x2, y1, y2;
చార్ ** z;
z = కొత్త చార్ *;
కోసం (int i = 0; i< SIZE; i++)
{
z[i] = కొత్త చార్ ;
కోసం (int j = 0; j< SIZE; j++)
z[i][j] = "-" ;
}
కోట్<< "x1 = " ; cin >> x1;
కోట్<< "y1 = " ; cin >> y1;
కోట్<< "x2 = " ; cin >>x2;
కోట్<< "y2 = " ; cin >> y2;
బ్రెజెన్హెమ్(z, x1, y1, x2, y2);
కోసం (int i = 0; i< SIZE; i++)
{
కోసం (int j = 0; j< SIZE; j++)
కోట్<< z[i][j];
కోట్<< endl;
}
cin.get(); cin.get();
తిరిగి 0;
}


అమలు ఫలితం



Bresenham యొక్క అల్గోరిథం శక్తి లేదా వేగ నియంత్రణ వంటి నియంత్రణ సమస్యలలో కూడా ఉపయోగించబడుతుంది. ఈ సందర్భంలో, క్షితిజ సమాంతర అక్షం సమయ అక్షం, మరియు పేర్కొన్న విలువ సరళ రేఖ యొక్క వంపు కోణం యొక్క గుణకాన్ని సెట్ చేస్తుంది.

బ్రెసెన్‌హామ్ యొక్క అల్గోరిథం అనేది రెండు-డైమెన్షనల్ రాస్టర్‌పై ఏ పాయింట్లు షేడ్ చేయబడాలి అనేదానిని నిర్ణయించే ఒక అల్గారిథమ్, ఇది రెండు ఇచ్చిన పాయింట్ల మధ్య సరళ రేఖ యొక్క దగ్గరి ఉజ్జాయింపును పొందేందుకు.

సెగ్మెంట్ రెండు పాయింట్ల మధ్య డ్రా చేయబడింది - (x0,y0) మరియు (x1,y1), ఇక్కడ ఈ జతలలో నిలువు వరుసలు వరుసగా సూచించబడతాయి, వాటి సంఖ్యలు కుడి మరియు క్రిందికి పెరుగుతాయి. మొదట మన పంక్తి క్రిందికి మరియు కుడికి వెళుతుందని మరియు క్షితిజ సమాంతర దూరం x1 - x0 నిలువు దూరం y1 - y0ని మించిందని ఊహిస్తాము, అనగా. క్షితిజ సమాంతర రేఖ యొక్క వంపు 45° కంటే తక్కువగా ఉంటుంది. మా లక్ష్యం x0 మరియు x1 మధ్య ఉన్న ప్రతి నిలువు వరుస x కోసం, y యొక్క ఏ అడ్డు వరుస రేఖకు దగ్గరగా ఉందో నిర్ణయించండి మరియు ఒక పాయింట్‌ను గీయండి (x,y).

రెండు పాయింట్ల మధ్య లైన్ కోసం సాధారణ సూత్రం:

కాలమ్ x మనకు తెలుసు కాబట్టి, y అడ్డు వరుస క్రింది విలువను పూర్ణాంకానికి చుట్టడం ద్వారా పొందబడుతుంది:

అయితే, ఈ వ్యక్తీకరణ యొక్క ఖచ్చితమైన విలువను లెక్కించాల్సిన అవసరం లేదు. y y0 నుండి పెరుగుతుందని గమనించడం సరిపోతుంది మరియు ప్రతి దశకు మనం xకి ఒకదానిని జోడిస్తాము మరియు yకి వాలు విలువను జోడిస్తాము.

ఇది ముందుగానే లెక్కించబడుతుంది. అంతేకాకుండా, ప్రతి దశలో మనం రెండు విషయాలలో ఒకదాన్ని చేస్తాము: y ను అలాగే ఉంచడం లేదా 1 పెంచడం.

ఈ రెండింటిలో దేనిని ఎంచుకోవాలో లోపం విలువను ట్రాక్ చేయడం ద్వారా నిర్ణయించవచ్చు, అంటే ప్రస్తుత y విలువ మరియు ప్రస్తుత x కోసం ఖచ్చితమైన y విలువ మధ్య నిలువు దూరం. మనం xని పెంచినప్పుడల్లా, పైన ఇచ్చిన వాలు s మొత్తంతో ఎర్రర్ విలువను పెంచుతాము. లోపం 0.5 కంటే ఎక్కువగా ఉంటే, పంక్తి తదుపరి yకి దగ్గరగా ఉంటుంది, కాబట్టి లోపం విలువను 1 ద్వారా తగ్గించేటప్పుడు మేము yని ఒకదానితో పెంచుతాము. దిగువ అల్గోరిథం అమలులో, ప్లాట్(x,y) ఒక పాయింట్‌ని గీస్తుంది మరియు abs సంఖ్య యొక్క సంపూర్ణ విలువను అందిస్తుంది:

ఫంక్షన్లైన్(x0, x1, y0, y1)

intడెల్టాక్స్:= abs(x1 - x0)

int deltay:= abs(y1 - y0)

నిజమైనలోపం:= 0

నిజమైన deltaerr:= డెల్టే / డెల్టాక్స్

int y:=y0

కోసం x నుండి x0 కు x1

లోపం:= లోపం + డెల్టెర్

ఉంటేలోపం >= 0.5

లోపం:= లోపం - 1.0

సెగ్మెంట్ ప్రారంభంలో కోఆర్డినేట్‌లు (X 1,Y 1) మరియు ముగింపు (X 1,X 2) ఉండనివ్వండి. సూచిస్తాం

Dx=(X 2 -X 1),dy=(Y 2 -Y 1) . సాధారణతను కోల్పోకుండా, సెగ్మెంట్ ప్రారంభం కోఆర్డినేట్‌ల మూలంతో సమానంగా ఉంటుందని మరియు సరళ రేఖకు రూపాన్ని కలిగి ఉంటుందని మేము అనుకుంటాము.

ఎక్కడ. ప్రారంభ స్థానం ఎడమ వైపున ఉందని మేము అనుకుంటాము. (i-1)వ దశలో సెగ్మెంట్ యొక్క ప్రస్తుత పాయింట్ P i -1 =(r,q) . తదుపరి పాయింట్ యొక్క ఎంపిక S i లేదా T i వ్యత్యాసం యొక్క గుర్తుపై ఆధారపడి ఉంటుంది (s-t). ఒకవేళ (s-t)<0 , то P i =T i =(r+1,q) и тогда

X i +1 =i+1;Y i +1 =Y i , అయితే (s-t)≥0, అప్పుడు P i =T i =(r+1,q+1) ఆపై X i +1 =i+ 1 ; Y i +1 =Y i +1 ;

dx=(s-t)=2(rdy-qdx)+2dy –dx

dx=(s-t) యొక్క సంకేతం భేదం యొక్క గుర్తుతో సమానంగా ఉంటుంది కాబట్టి, మేము d i =dx(s-t) వ్యక్తీకరణ యొక్క చిహ్నాన్ని తనిఖీ చేస్తాము. . r=X i -1 మరియు q=Y i -1 , అప్పుడు

d i +1 = d i +2dy -2dx(y i -y i -1) .

మునుపటి దశ d i వద్ద చూద్దాం<0 , тогда(y i -y i -1)=0 и d i +1 = d i +2dy . Если же на предыдущем шаге d i ≥0 , тогда(y i -y i -1)=1 и d i +1 = d i +2dx(y i -y i -1)

d iని ఎలా లెక్కించాలో తెలుసుకోవడానికి ఇది మిగిలి ఉంది. i=1 కోసం

విధానం బ్రెసెన్‌హామ్(x1,y1,x2,y2,రంగు: పూర్ణాంకం);

dx,dy,incr1,incr2,d,x,y,xend: పూర్ణాంకం;

dx:= ABS(x2-x1);

dy:= Abs(y2-y1);

d:=2*dy-dx; (డి కోసం ప్రారంభ విలువ)

incr1:=2*dy; (డి కోసం ఇంక్రిమెంట్<0}

incr2:=2*(dy-dx); (d>=0కి ఇంక్రిమెంట్)

x1>x2 అయితే (చిన్న x విలువతో పాయింట్ నుండి ప్రారంభించండి)

PutPixel(x,y,కలర్); (సెగ్మెంట్ యొక్క మొదటి పాయింట్)

అయితే x

d:=d+incr1 (దిగువ పాయింట్‌ని ఎంచుకోండి)

d:=d+incr2; (టాప్ పాయింట్, y-పెరుగుదలని ఎంచుకోండి)

PutPixel(x,y,కలర్);

26. జనరల్ బ్రెసెన్‌హామ్ అల్గోరిథం.

విభాగాన్ని సూచించడానికి అల్గోరిథం సరైన రాస్టర్ కోఆర్డినేట్‌లను ఎంచుకుంటుంది. ఇంక్రిమెంట్లలో పెద్దది, Δx లేదా Δy, రాస్టర్ యూనిట్‌గా ఎంపిక చేయబడుతుంది. ఆపరేషన్ సమయంలో, కోఆర్డినేట్‌లలో ఒకటి - x లేదా y (వాలుపై ఆధారపడి) - ఒకటి ద్వారా మారుతుంది. మరొక కోఆర్డినేట్ (0 లేదా 1కి) మార్చడం అనేది సెగ్మెంట్ యొక్క వాస్తవ స్థానం మరియు సమీప గ్రిడ్ కోఆర్డినేట్‌ల మధ్య దూరంపై ఆధారపడి ఉంటుంది. ఈ దూరం ఒక లోపం.

మీరు ఈ లోపం యొక్క చిహ్నాన్ని మాత్రమే తెలుసుకోవలసిన విధంగా అల్గోరిథం నిర్మించబడింది. తత్ఫలితంగా, రాస్టర్ పాయింట్ (1, 1) పాయింట్ (1, 0) కంటే సెగ్మెంట్ యొక్క కోర్సును బాగా అంచనా వేస్తుంది. వాలు ½ కంటే తక్కువ ఉంటే, అప్పుడు వ్యతిరేకం నిజం. ½ వాలు కోసం, ప్రాధాన్య ఎంపిక లేదు. ఈ సందర్భంలో, అల్గోరిథం పాయింట్ (1, 1) ను ఎంచుకుంటుంది. లోపం యొక్క చిహ్నాన్ని మాత్రమే తనిఖీ చేయడం మంచిది కాబట్టి, ఇది మొదట్లో -½కి సెట్ చేయబడింది. ఆ విధంగా, సెగ్మెంట్ యొక్క వాలు ½ కంటే ఎక్కువ లేదా సమానంగా ఉంటే, తదుపరి రాస్టర్ పాయింట్ వద్ద లోపం విలువను e = -½ + Δy/Δxగా లెక్కించవచ్చు.

బ్రెసెన్‌హామ్ అల్గోరిథం యొక్క అమలు పూర్తి కావడానికి, అన్ని ఆక్టాంట్‌లలోని విభాగాలను ప్రాసెస్ చేయడం అవసరం. అల్గోరిథంలో సెగ్మెంట్ ఉన్న క్వాడ్రంట్ సంఖ్య మరియు దాని కోణీయ గుణకం పరిగణనలోకి తీసుకోవడం చాలా సులభం. వాలు యొక్క సంపూర్ణ విలువ 1 కంటే ఎక్కువగా ఉన్నప్పుడు, y నిరంతరం ఒకటి ద్వారా మార్చబడుతుంది మరియు x విలువను మార్చాలా వద్దా అని నిర్ణయించడానికి బ్రెసెన్‌హామ్ లోపం ప్రమాణం ఉపయోగించబడుతుంది. నిరంతరం మారుతున్న (+1 లేదా -1) కోఆర్డినేట్ ఎంపిక క్వాడ్రంట్‌పై ఆధారపడి ఉంటుంది

var x,y,sy,sx,dx,dy,e,z,i: పూర్ణాంకం;
మార్పు: బూలియన్;
ప్రారంభం
x:=x1; y:=y1;
dx:=abs(x2-x1); dy:=abs(y2-y1) ;
sx:=సైన్(x2-x1); sy:=sign(y2-y1);
ఇ:= 2*dy-dx;
dy అయితే
వేరే ప్రారంభం
z: = dx;
dx: = dy; dy:=z;
మార్పు: = నిజం
ముగింపు;
i:=1 నుండి dx+dy వరకు ప్రారంభం అవుతుంది
dy అయితే< dx then begin
మారితే y:=y+sy
వేరే x:=x+sx;
ఇ:=e+2*dy;
వేరే ముగింపు
మారితే x:=x+sx
వేరే y:=y+sy;
ఇ:=e-2*dx
ముగింపు;
Form1.Canvas.Pixels:=clblack; // ఒక పాయింట్ అవుట్‌పుట్, ఉదాహరణకు
ముగింపు;


27. వృత్తాన్ని రూపొందించడానికి బ్రెసెన్‌హామ్ అల్గోరిథం

రేస్టర్‌ను లీనియర్ మరియు ఇతర, మరింత సంక్లిష్టమైన ఫంక్షన్‌లుగా విస్తరించాల్సిన అవసరం ఉంది. కీల్, ఎలిప్స్, పారాబొలా, హైపర్బోలా వంటి టెర్మినల్ కట్‌ల పంపిణీ రోబోట్ విలువకు కేటాయించబడింది. గొప్ప గౌరవంతో, అర్థమయ్యేలా, ఒక వాటా జోడించబడింది. సర్కిల్ జనరేషన్ అల్గారిథమ్‌లను అర్థం చేసుకోవడానికి అత్యంత సమర్థవంతమైన మరియు సులభమైనది బ్రెసెన్‌హామ్. కాబ్ కోసం, వాటాలో ఎనిమిదో వంతు మాత్రమే ఉత్పత్తి చేయడం ముఖ్యం. ఈ భాగాలు వరుస బీట్‌ల ద్వారా తొలగించబడవచ్చు. మొదటి ఆక్టాంట్‌ను రూపొందించిన తర్వాత (సంవత్సర వ్యతిరేక బాణం యొక్క 0 నుండి 45 ° వరకు), అప్పుడు ఇతర ఆక్టాంట్ y = x సరళ రేఖ యొక్క అద్దం చిత్రంగా వ్యక్తీకరించబడుతుంది, ఇది కలిసి మొదటి క్వాడ్రంట్‌ను ఇస్తుంది. ఇతర క్వాడ్రంట్ నుండి వాటా యొక్క సహాయక భాగాన్ని తీసివేయడానికి మొదటి క్వాడ్రంట్ x = 0 సరళ రేఖతో నాక్ అవుట్ చేయబడింది. టాస్క్‌ను పూర్తి చేయడానికి పైభాగం = 0 వద్ద నేరుగా పడగొట్టబడుతుంది.

అల్గారిథమ్‌ను చూపించడానికి, కోఆర్డినేట్‌ల కాబ్‌పై కేంద్రీకృతమై ఉన్న వాటాలో పావు వంతును చూద్దాం. దయచేసి అల్గారిథమ్ x = 0, y = R పాయింట్ వద్ద ప్రారంభమవుతుంది కాబట్టి, మొదటి స్క్వేర్‌లో సంవత్సరం బాణం వెనుక వృత్తాన్ని రూపొందించేటప్పుడు, y అనేది ఆర్గ్యుమెంట్‌ల యొక్క మోనోటోనికల్ అవరోహణ ఫంక్షన్. అదేవిధంగా, అవుట్‌పుట్ పాయింట్ y = 0, x == R అయితే, బాణం xకి ఎదురుగా సర్కిల్‌ను రూపొందించేటప్పుడు y ఆర్గ్యుమెంట్ యొక్క మార్పులేని తగ్గుదల ఫంక్షన్ అవుతుంది. మా సందర్భంలో, x = 0, y = R పాయింట్‌లో ఉన్న సంవత్సరం బాణం వెనుక ఉన్న తరం ఎంపిక చేయబడింది, ఇది వాటా యొక్క కేంద్రం మరియు కాబ్ పాయింట్ ఖచ్చితంగా రాస్టర్ పాయింట్‌ల వద్ద ఉన్నాయని బదిలీ చేయబడుతుంది.

సంవత్సరపు బాణం వెనుక ఉత్పత్తి చేస్తున్నప్పుడు సర్కిల్‌లోని ఏదైనా పాయింట్ కోసం, తదుపరి పిక్సెల్‌ను ఎంచుకోవడానికి మూడు ఎంపికలు మాత్రమే ఉన్నాయి, సమీప సర్కిల్: అడ్డంగా కుడికి, వికర్ణంగా క్రిందికి మరియు కుడికి, నిలువుగా క్రిందికి. అల్గోరిథం ఈ పిక్సెల్‌లలో ఒకటి మరియు సర్కిల్ మధ్య కనిష్ట చతురస్రం ఉన్న పిక్సెల్‌ను ఎంచుకుంటుంది.

28. ఫ్రాక్టల్ భావన. ఫ్రాక్టల్ గ్రాఫిక్స్ చరిత్ర

రోజువారీ జీవితంలో, మీరు తరచుగా చిత్రాలను (నమూనాలు) గమనించవచ్చు, అది గణితశాస్త్రంలో వివరించబడదు. ఉదాహరణ: శీతాకాలంలో విండోస్ స్తంభింపజేస్తాయి, మీరు చిత్రాన్ని చూడవచ్చు. ఇటువంటి సెట్లను ఫ్రాక్టల్ అంటారు. ఫ్రాక్టల్‌లు జ్యామితి నుండి బాగా తెలిసిన బొమ్మలను పోలి ఉండవు మరియు అవి కంప్యూటర్‌లో అమలు చేయగల నిర్దిష్ట అల్గారిథమ్‌లను ఉపయోగించి నిర్మించబడ్డాయి. సరళంగా చెప్పాలంటే, ఫ్రాక్టల్ అనేది అసలు ఆకృతికి పదేపదే వర్తించే కొంత పరివర్తన ఫలితంగా ఏర్పడే చిత్రం.
ఫ్రాక్టల్ జ్యామితి యొక్క మొదటి ఆలోచనలు 19వ శతాబ్దంలో ఉద్భవించాయి. కాంటర్, ఒక సాధారణ పునరావృత విధానాన్ని ఉపయోగించి, లైన్‌ను కనెక్ట్ చేయని పాయింట్ల సమాహారంగా మార్చాడు, వీటిని తర్వాత "కాంటర్ డస్ట్" అని పిలిచారు. అతను ఒక లైన్ తీసుకొని సెంట్రల్ థర్డ్‌ను తీసివేసి, మిగిలిన విభాగాలతో అదే పునరావృతం చేస్తాడు. పీనో ఒక ప్రత్యేకమైన గీతను గీసాడు. దానిని గీయడానికి, పీనో ఈ క్రింది అల్గోరిథంను ఉపయోగించాడు:
అతను ఒక సరళ రేఖను తీసుకొని దానిని అసలు రేఖ కంటే మూడు రెట్లు తక్కువ భాగాలతో భర్తీ చేశాడు. అప్పుడు అతను ప్రతి సెగ్మెంట్‌తో అదే చర్యను పునరావృతం చేశాడు. దాని ప్రత్యేకత ఏమిటంటే ఇది మొత్తం విమానం నింపుతుంది, అనగా. విమానంలో ఉన్న ప్రతి పాయింట్ కోసం, మీరు పీనో లైన్‌కు చెందిన పాయింట్‌ను కనుగొనవచ్చు.
ఫ్రాక్టల్ జ్యామితి వ్యవస్థాపకుడు పరిగణించబడుతుంది బెనాయిట్ మాండెల్‌బ్రోట్. మాండెల్‌బ్రోట్ "ఫ్రాక్టల్" అనే భావనను ప్రవేశపెట్టాడు.

ఫ్రాక్టల్ అనేది భాగాలను కలిగి ఉన్న రేఖాగణిత బొమ్మ మరియు ఇది భాగాలుగా విభజించబడుతుంది, వీటిలో ప్రతి ఒక్కటి మొత్తం యొక్క చిన్న కాపీని సూచిస్తుంది. ఫ్రాక్టల్స్ యొక్క ప్రధాన ఆస్తి స్వీయ-సారూప్యత, అనగా. ఫ్రాక్టల్ యొక్క ఏదైనా భాగం ఒక విధంగా లేదా మరొక విధంగా దాని ప్రపంచ నిర్మాణాన్ని పునరుత్పత్తి చేస్తుంది. ఫ్రాక్టల్‌లు రేఖాగణిత, బీజగణిత, యాదృచ్ఛిక మరియు పునరావృత ఫంక్షన్‌ల వ్యవస్థలుగా విభజించబడ్డాయి.

29. పరిమాణం యొక్క భావన మరియు దాని గణన

మన దైనందిన జీవితంలో మనం నిరంతరం పరిమాణాలను ఎదుర్కొంటాము. మేము రహదారి పొడవును అంచనా వేస్తాము, అపార్ట్మెంట్ యొక్క ప్రాంతాన్ని కనుగొనండి, మొదలైనవి. ఈ భావన చాలా స్పష్టమైనది మరియు స్పష్టత అవసరం లేదు. లైన్ డైమెన్షన్ 1ని కలిగి ఉంది. దీని అర్థం రిఫరెన్స్ పాయింట్‌ని ఎంచుకోవడం ద్వారా, ఈ లైన్‌లోని ఏదైనా పాయింట్‌ని మనం 1 సంఖ్యను ఉపయోగించి నిర్వచించవచ్చు - పాజిటివ్ లేదా నెగటివ్. అంతేకాకుండా, ఇది అన్ని పంక్తులకు వర్తిస్తుంది - సర్కిల్, స్క్వేర్, పారాబొలా మొదలైనవి.

డైమెన్షన్ 2 అంటే మనం ఏదైనా పాయింట్‌ని రెండు సంఖ్యల ద్వారా ప్రత్యేకంగా నిర్వచించవచ్చు. టూ డైమెన్షనల్ అంటే ఫ్లాట్ అని అనుకోకండి. గోళం యొక్క ఉపరితలం కూడా రెండు డైమెన్షనల్‌గా ఉంటుంది (దీనిని రెండు విలువలను ఉపయోగించి నిర్వచించవచ్చు - వెడల్పు మరియు రేఖాంశం వంటి కోణాలు).

మీరు దానిని గణిత కోణం నుండి చూస్తే, పరిమాణం ఈ క్రింది విధంగా నిర్ణయించబడుతుంది: ఒక డైమెన్షనల్ వస్తువుల కోసం, వాటి సరళ పరిమాణాన్ని రెట్టింపు చేయడం వలన పరిమాణం (ఈ సందర్భంలో, పొడవు) రెండు (2^) కారకం ద్వారా పెరుగుతుంది. 1)

ద్విమితీయ వస్తువుల కోసం, సరళ పరిమాణాలను రెట్టింపు చేయడం వలన పరిమాణం (ఉదాహరణకు, దీర్ఘ చతురస్రం యొక్క వైశాల్యం) నాలుగు రెట్లు (2^2) పెరుగుతుంది.

3-డైమెన్షనల్ ఆబ్జెక్ట్‌ల కోసం, లీనియర్ డైమెన్షన్‌లను రెట్టింపు చేయడం వల్ల వాల్యూమ్‌లో ఎనిమిది రెట్లు పెరుగుదల (2^3) మరియు మొదలైనవి.

రేఖాగణిత ఫ్రాక్టల్స్

ఈ ఫ్రాక్టల్స్‌తో సాధారణంగా ఫ్రాక్టల్స్ అభివృద్ధి చరిత్ర ప్రారంభమైంది. ఈ రకమైన ఫ్రాక్టల్ సాధారణ రేఖాగణిత నిర్మాణాల ద్వారా పొందబడుతుంది. సాధారణంగా, రేఖాగణిత ఫ్రాక్టల్‌లను నిర్మించేటప్పుడు, కింది అల్గోరిథం ఉపయోగించబడుతుంది:

  1. విభాగాల సమితి తీసుకోబడుతుంది, దీని ఆధారంగా ఒక ఫ్రాక్టల్ నిర్మించబడుతుంది.
  2. ఈ సెట్‌కు కొన్ని నియమాలు వర్తింపజేయబడతాయి, ఇది ఒక రకమైన రేఖాగణిత బొమ్మగా మారుస్తుంది.
  3. ఈ బొమ్మలోని ప్రతి భాగానికి ఒకే విధమైన నియమాలు వర్తిస్తాయి. ప్రతి అడుగుతో, ఫిగర్ మరింత క్లిష్టంగా మారుతుంది మరియు మేము అనంతమైన పరివర్తనలను నిర్వహిస్తే, మనకు రేఖాగణిత ఫ్రాక్టల్ లభిస్తుంది.

రేఖాగణిత ఫ్రాక్టల్స్ యొక్క ఉదాహరణలు: పీనో కర్వ్, కోచ్ స్నోఫ్లేక్, ఫెర్న్ లీఫ్, సియర్పిన్స్కి ట్రయాంగిల్,


అన్నం. స్నోఫ్లేక్ కోచ్

అన్నం. షీట్


అన్నం. సియర్పిన్స్కి త్రిభుజం

బీజగణిత ఫ్రాక్టల్స్

ఫ్రాక్టల్- స్వీయ-సారూప్యత యొక్క ఆస్తిని కలిగి ఉన్న సంక్లిష్ట రేఖాగణిత బొమ్మ, అనగా, అనేక భాగాలతో కూడి ఉంటుంది, వీటిలో ప్రతి ఒక్కటి మొత్తం బొమ్మను పోలి ఉంటుంది

బీజగణిత ఫ్రాక్టల్స్ అనే పేరు వచ్చింది ఎందుకంటే అవి బీజగణిత విధుల ఆధారంగా నిర్మించబడ్డాయి. బీజగణిత ఫ్రాక్టల్స్‌లో ఇవి ఉన్నాయి: మాండెల్‌బ్రోట్ సెట్, జూలియా సెట్, న్యూటన్ బేసిన్‌లు, బయోమార్ఫ్‌లు.

-మాండెల్‌బ్రోట్ సెట్:మాండెల్‌బ్రోట్ సెట్‌ను మొదటిసారిగా 1905లో పియరీ ఫాటౌ వర్ణించారు. ఫాటౌ రూపం యొక్క పునరావృత ప్రక్రియలను అధ్యయనం చేసింది

కాంప్లెక్స్ ప్లేన్‌లోని పాయింట్‌తో ప్రారంభించి, ఈ ఫార్ములాను వాటికి వరుసగా వర్తింపజేయడం ద్వారా మీరు కొత్త పాయింట్‌లను పొందవచ్చు. అటువంటి బిందువుల క్రమాన్ని పరివర్తన కింద కక్ష్య అంటారు

ఈ పరివర్తన కింద ఉన్న కక్ష్య చాలా క్లిష్టమైన మరియు ఆసక్తికరమైన ప్రవర్తనను చూపుతుందని ఫాటౌ కనుగొన్నారు. అటువంటి పరివర్తనల అనంతమైన సంఖ్య ఉంది - ప్రతి విలువకు ఒకటి. (మాండెల్‌బ్రోట్ అని పేరు పెట్టారు, ఎందుకంటే అతను కంప్యూటర్‌ను ఉపయోగించి అవసరమైన లెక్కల సంఖ్యను మొదటిసారిగా నిర్వహించాడు).

-జూలియా సెట్: జూలియా హేతుబద్ధమైన మ్యాపింగ్ సెట్ - పాయింట్ల సమితి, దీని సమీపంలోని డైనమిక్స్, ఒక నిర్దిష్ట కోణంలో, ప్రారంభ స్థానం యొక్క చిన్న కదలికలకు సంబంధించి అస్థిరంగా ఉంటాయి. సందర్భంలో f- బహుపది, మేము నిండిన జూలియా సెట్‌ను కూడా పరిగణిస్తాము - అనంతం వైపు మొగ్గు చూపని పాయింట్ల సమితి. సాధారణ జూలియా సెట్ దాని సరిహద్దు.

-న్యూటన్ పూల్స్:ఒక సంక్లిష్ట సమతలంలో న్యూటన్ యొక్క అల్గోరిథం ద్వారా నాన్ లీనియర్ సమీకరణం యొక్క మూలాలు సుమారుగా కనుగొనబడినప్పుడు ఫ్రాక్టల్ సరిహద్దులతో ఉన్న ప్రాంతాలు కనిపిస్తాయి (నిజమైన వేరియబుల్ యొక్క ఫంక్షన్ కోసం, న్యూటన్ యొక్క పద్ధతిని తరచుగా పిలుస్తారు టాంజెంట్ పద్ధతి, ఇది, ఈ సందర్భంలో, సంక్లిష్ట సమతలానికి సాధారణీకరించబడింది).

ఈ విధానాన్ని ఉపయోగించి కాంప్లెక్స్ వేరియబుల్ యొక్క ఫంక్షన్ యొక్క సున్నాని కనుగొనడానికి న్యూటన్ యొక్క పద్ధతిని వర్తింపజేద్దాం:

ప్రారంభ ఉజ్జాయింపు ఎంపిక ప్రత్యేక ఆసక్తిని కలిగి ఉంటుంది. ఎందుకంటే ఒక ఫంక్షన్ బహుళ సున్నాలను కలిగి ఉండవచ్చు మరియు వివిధ సందర్భాల్లో పద్ధతి వేర్వేరు విలువలకు కలుస్తుంది.

-బయోమార్ఫ్స్:జూలియా సెట్ యొక్క సంక్షిప్త రూపం, z=z 3 +c సూత్రం ద్వారా లెక్కించబడుతుంది. ఏకకణ జీవుల సారూప్యత కారణంగా దీనికి ఆ పేరు వచ్చింది.

యాదృచ్ఛిక ఫ్రాక్టల్స్

ఈ రకమైన ఫ్రాక్టల్ యొక్క సాధారణ ప్రతినిధి ప్లాస్మా అని పిలవబడేది.

దీన్ని నిర్మించడానికి, ఒక దీర్ఘచతురస్రాన్ని తీసుకొని దాని మూలల్లో ప్రతిదానికీ రంగును నిర్ణయించండి. తర్వాత, దీర్ఘచతురస్రం యొక్క కేంద్ర బిందువును కనుగొని, దీర్ఘచతురస్రం యొక్క మూలల్లోని రంగుల యొక్క అంకగణిత సగటుకు సమానమైన రంగుతో పెయింట్ చేయండి + కొంత యాదృచ్ఛిక సంఖ్య. ఈ యాదృచ్ఛిక సంఖ్య పెద్దది, డ్రాయింగ్ మరింత చిరిగిపోతుంది.

సహజ వస్తువులు తరచుగా ఫ్రాక్టల్ ఆకారాన్ని కలిగి ఉంటాయి. యాదృచ్ఛిక (యాదృచ్ఛిక) ఫ్రాక్టల్స్ వాటిని మోడల్ చేయడానికి ఉపయోగించవచ్చు. యాదృచ్ఛిక ఫ్రాక్టల్స్ ఉదాహరణలు:

విమానంలో మరియు అంతరిక్షంలో బ్రౌనియన్ చలనం యొక్క పథం;

ఒక విమానంలో బ్రౌనియన్ చలనం యొక్క పథం యొక్క సరిహద్దు. 2001లో, లాలర్, ష్రామ్ మరియు వెర్నర్ దాని పరిమాణం 4/3 అని మాండెల్‌బ్రోట్ పరికల్పనను నిరూపించారు.

Schramm-Löwner పరిణామాలు గణాంక మెకానిక్స్ యొక్క క్లిష్టమైన ద్విమితీయ నమూనాలలో ఉత్పన్నమయ్యే కన్ఫార్మల్‌గా మార్పులేని ఫ్రాక్టల్ వక్రతలు, ఉదాహరణకు, ఐసింగ్ మోడల్ మరియు పెర్కోలేషన్‌లో.

వివిధ రకాల యాదృచ్ఛిక ఫ్రాక్టల్స్, అనగా, ప్రతి దశలో యాదృచ్ఛిక పరామితిని ప్రవేశపెట్టే పునరావృత విధానాన్ని ఉపయోగించి పొందిన ఫ్రాక్టల్స్. ప్లాస్మా కంప్యూటర్ గ్రాఫిక్స్‌లో అటువంటి ఫ్రాక్టల్ వినియోగానికి ఒక ఉదాహరణ.

ఫ్రాక్టల్ మోనోటైప్, లేదా స్టోచాటిపీ, యాదృచ్ఛిక ఫ్రాక్టల్ యొక్క ఇమేజ్‌ను పొందడం వంటి లలిత కళలో ఒక ధోరణి.


సంబంధిత సమాచారం.


మీరు ఇప్పుడు ఏమి చూస్తున్నారు? మీరు ప్రతి ఒక్కరూ వెక్టార్ మానిటర్‌ల వెనుక కూర్చునే సమాంతర విశ్వం నుండి వచ్చిన వారైతే తప్ప, ఇది రాస్టర్ చిత్రం. ఈ స్ట్రిప్ చూడండి: /. మీరు మానిటర్‌కు దగ్గరగా వెళితే, వెక్టర్ లైన్‌గా నటించడానికి ప్రయత్నిస్తున్న పిక్సలేటెడ్ దశలను మీరు చూడవచ్చు. ఈ ప్రయోజనం కోసం వివిధ రాస్టరైజేషన్ అల్గారిథమ్‌ల మొత్తం సమూహాన్ని కలిగి ఉన్నాయి, అయితే నేను బ్రెసెన్‌హామ్ అల్గారిథమ్ మరియు Y అల్గారిథమ్ గురించి మాట్లాడాలనుకుంటున్నాను, ఇది రాస్టర్ కోఆర్డినేట్‌లలో వెక్టర్ సెగ్మెంట్ యొక్క ఉజ్జాయింపును కనుగొంటుంది.

నిర్మాణ ప్రణాళికల యొక్క విధానపరమైన జనరేటర్‌పై పని చేస్తున్నప్పుడు నేను రాస్టరైజేషన్ సమస్యను ఎదుర్కొన్నాను. నేను గది గోడలను ద్విమితీయ శ్రేణి యొక్క సెల్‌లుగా సూచించాల్సిన అవసరం ఉంది. భౌతిక శాస్త్ర గణనలు, పాత్ ఫైండింగ్ అల్గారిథమ్‌లు లేదా స్పేస్ విభజనను ఉపయోగించినట్లయితే లైటింగ్ గణనలలో ఇలాంటి సమస్యలు ఎదురవుతాయి. రాస్టరైజేషన్ అల్గారిథమ్‌లతో పరిచయం ఒక రోజు ఉపయోగపడుతుందని ఎవరు భావించారు?

Bresenham యొక్క అల్గోరిథం యొక్క ఆపరేటింగ్ సూత్రం చాలా సులభం. ఒక సెగ్మెంట్ మరియు దాని ప్రారంభ కోఆర్డినేట్ తీసుకోండి x. సైకిల్‌లోని xకి మనం సెగ్మెంట్ చివరిలో ఒకదానికొకటి జోడిస్తాము. ప్రతి దశలో, లోపం లెక్కించబడుతుంది - నిజమైన కోఆర్డినేట్ మధ్య దూరం వైఈ స్థానంలో మరియు సమీప గ్రిడ్ సెల్ వద్ద. లోపం సెల్ యొక్క సగం ఎత్తును మించకపోతే, అది నిండి ఉంటుంది. అది మొత్తం అల్గోరిథం.

ఇది అల్గోరిథం యొక్క సారాంశం, వాస్తవానికి ప్రతిదీ ఇలా కనిపిస్తుంది. మొదట, వాలు లెక్కించబడుతుంది (y1 - y0)/(x1 - x0). సెగ్మెంట్ ప్రారంభ బిందువు వద్ద లోపం విలువ (0,0) సున్నాకి సమానంగా తీసుకోబడుతుంది మరియు మొదటి సెల్ నిండి ఉంటుంది. తదుపరి దశలో, వాలు దోషానికి జోడించబడుతుంది మరియు లోపం తక్కువగా ఉంటే దాని విలువ విశ్లేషించబడుతుంది 0.5 , అప్పుడు సెల్ నిండి ఉంటుంది (x0+1, y0), ఎక్కువ ఉంటే, అప్పుడు సెల్ నిండి ఉంటుంది (x0+1, y0+1)మరియు ఒకటి లోపం విలువ నుండి తీసివేయబడుతుంది. దిగువ చిత్రంలో, రాస్టరైజేషన్‌కు ముందు ఉన్న పంక్తి పసుపు రంగులో చూపబడింది మరియు సమీప కణాలకు దూరం ఆకుపచ్చ మరియు ఎరుపు రంగులలో చూపబడింది. వాలు ఆరవ వంతుకు సమానం, మొదటి దశలో లోపం వాలుకు సమానంగా మారుతుంది, ఇది తక్కువగా ఉంటుంది 0.5 , అంటే ఆర్డినేట్ అలాగే ఉంటుంది. లైన్ మధ్యలో, లోపం రేఖను దాటుతుంది, దాని నుండి ఒకటి తీసివేయబడుతుంది మరియు కొత్త పిక్సెల్ పైకి పెరుగుతుంది. మరియు సెగ్మెంట్ చివరి వరకు.

మరో స్వల్పభేదాన్ని. ఒక విభాగం యొక్క ప్రొజెక్షన్ అక్షం మీద ఉంటే xఅక్షం మీద తక్కువ ప్రొజెక్షన్ వైలేదా సెగ్మెంట్ యొక్క ప్రారంభం మరియు ముగింపు మార్చబడతాయి, అప్పుడు అల్గోరిథం పనిచేయదు. ఇది జరగకుండా నిరోధించడానికి, మీరు వెక్టర్ మరియు దాని వాలు యొక్క దిశను తనిఖీ చేయాలి, ఆపై, అవసరమైతే, సెగ్మెంట్ యొక్క కోఆర్డినేట్లను మార్చుకోండి, గొడ్డలిని తిప్పండి మరియు చివరికి, ప్రతిదీ ఒకటి లేదా కనీసం రెండు కేసులకు తగ్గించండి. ప్రధాన విషయం ఏమిటంటే, డ్రాయింగ్ చేసేటప్పుడు గొడ్డలిని వాటి స్థానానికి తిరిగి ఇవ్వడం మర్చిపోకూడదు.

గణనలను ఆప్టిమైజ్ చేయడానికి, అన్ని పాక్షిక వేరియబుల్‌లను గుణించే ఉపాయాన్ని ఉపయోగించండి dx = (x1 - x0). అప్పుడు ప్రతి దశలో లోపం మారుతుంది dy = (y1 - y0)బదులుగా వాలు మరియు ద్వారా dxఒకదానికి బదులుగా. మీరు తర్కాన్ని కూడా కొద్దిగా మార్చవచ్చు, లోపాన్ని "తరలించండి" తద్వారా సరిహద్దు సున్నా వద్ద ఉంటుంది మరియు మీరు లోపం యొక్క చిహ్నాన్ని తనిఖీ చేయవచ్చు.

బ్రెసెన్‌హామ్ అల్గోరిథం ఉపయోగించి రాస్టర్ లైన్‌ను గీయడానికి కోడ్ ఇలా ఉండవచ్చు. వికీపీడియా నుండి సూడోకోడ్ C#కి మార్చబడింది.

శూన్యం BresenhamLine(int x0, int y0, int x1, int y1) ( var స్టెప్ = Math.Abs(y1 - y0) > Math.Abs(x1 - x0); // x-అక్షం వెంట సెగ్మెంట్ పెరుగుదలను తనిఖీ చేయండి మరియు y-అక్షం వెంబడి // వంపు కోణం చాలా పెద్దగా ఉంటే (నిటారుగా) ( Swap(ref x0, ref y0); // కోఆర్డినేట్‌ల షఫ్లింగ్ బ్యూటీ Swap(ref) కోసం ప్రత్యేక ఫంక్షన్‌లో చేర్చబడితే రేఖను వికర్ణంగా ప్రతిబింబిస్తుంది x1, ref y1); // పంక్తి ఎడమ నుండి కుడికి పెరగకపోతే, (x0 > x1) (స్వాప్(ref x0, ref x1) అయితే మేము సెగ్మెంట్ ప్రారంభం మరియు ముగింపును మారుస్తాము; ref y1 ) int dx = x1 - x0; (y1 - y0)< y1) ? 1: -1; // Выбираем направление роста координаты y int y = y0; for (int x = x0; x <= x1; x++) { DrawPoint(steep ? y: x, steep ? x: y); // Не забываем вернуть координаты на место error -= dy; if (error < 0) { y += ystep; error += dx; } } }


బ్రెసెన్‌హామ్ యొక్క అల్గోరిథం సర్కిల్‌లను గీయడానికి మార్పును కలిగి ఉంది. అక్కడ ప్రతిదీ ఇదే సూత్రంపై పనిచేస్తుంది, కొన్ని మార్గాల్లో మరింత సరళమైనది. గణన ఒక అష్టాంశం కోసం నిర్వహించబడుతుంది మరియు సర్కిల్ యొక్క అన్ని ఇతర భాగాలు సమరూపత ప్రకారం డ్రా చేయబడతాయి.

C#లో వృత్తాన్ని గీయడానికి ఉదాహరణ కోడ్.

శూన్యమైన BresenhamCircle(int x0, int y0, int వ్యాసార్థం) (int x = వ్యాసార్థం; int y = 0; int radiusError = 1 - x; అయితే (x >= y) (DrawPoint(x + x0, y + y0); DrawPo; (-y + x0, x + y0); -y + y0 (y + x0, -x + y++);< 0) { radiusError += 2 * y + 1; } else { x--; radiusError += 2 * (y - x + 1); } } }


ఇప్పుడు మృదువైన గీతలు గీయడానికి వు జియోలిన్ యొక్క అల్గోరిథం గురించి. ఇది ప్రతి దశలో రేఖకు దగ్గరగా ఉన్న రెండు పిక్సెల్‌ల కోసం ఒక గణన నిర్వహించబడుతుంది మరియు అవి దూరాన్ని బట్టి వేర్వేరు తీవ్రతలతో పెయింట్ చేయబడతాయి. పిక్సెల్ మధ్యలో సరిగ్గా దాటడం 100% తీవ్రతను ఇస్తుంది, పిక్సెల్ 0.9 పిక్సెల్‌ల దూరంలో ఉంటే, అప్పుడు తీవ్రత 10% అవుతుంది. మరో మాటలో చెప్పాలంటే, రెండు వైపులా వెక్టర్ లైన్‌ను పరిమితం చేసే పిక్సెల్‌ల మధ్య వంద శాతం తీవ్రత విభజించబడింది.

పై చిత్రంలో, ఎరుపు మరియు ఆకుపచ్చ రంగులు రెండు పొరుగు పిక్సెల్‌లకు దూరాన్ని చూపుతాయి.

లోపాన్ని లెక్కించడానికి, మీరు ఫ్లోటింగ్ పాయింట్ వేరియబుల్‌ని ఉపయోగించవచ్చు మరియు పాక్షిక భాగం నుండి లోపం విలువను తీసుకోవచ్చు.

C#లో Wu Xiaolin యొక్క మృదువైన లైన్ కోసం నమూనా కోడ్.

ప్రైవేట్ శూన్యమైన WuLine(int x0, int y0, int x1, int y1) ( var స్టెప్ = Math.Abs(y1 - y0) > Math.Abs(x1 - x0); అయితే (నిటారుగా) ( Swap(ref x0, ref y0 స్వాప్ (ref x1, ref y1) అయితే (x0 > x1); Swap (ref y0, ref y1); ) ఈ ఫంక్షన్ వేరియబుల్ నిటారుగా ఉన్న డ్రాపాయింట్ (నిటారుగా, x1, y1, 1) ఆధారంగా స్వయంచాలకంగా అక్షాంశాలను మారుస్తుంది; ఫ్లోట్ y = y0 + గ్రేడియంట్ (var x = x0 + 1; x<= x1 - 1; x++) { DrawPoint(steep, x, (int)y, 1 - (y - (int)y)); DrawPoint(steep, x, (int)y + 1, y - (int)y); y += gradient; } }


మీరు ఎప్పుడైనా భవిష్యత్తులో మెష్‌లతో పని చేస్తున్నట్లు అనిపిస్తే, ఒక్కసారి ఆలోచించండి, బహుశా మీరు చక్రాన్ని మళ్లీ ఆవిష్కరిస్తున్నారని మరియు మీరు నిజంగా పిక్సెల్‌లతో పని చేస్తున్నారని మీకు తెలియకపోయినా. మ్యాప్‌లో యూనిట్ ముందు సెల్‌ల కోసం శోధించడానికి, షాట్ యొక్క ప్రభావ ప్రాంతాన్ని లెక్కించడానికి లేదా వస్తువులను అందంగా అమర్చడానికి ఈ అల్గారిథమ్‌ల మార్పులను గేమ్‌లలో ఉపయోగించవచ్చు. లేదా మీరు క్రింది లింక్‌ల నుండి ప్రోగ్రామ్‌లో వలె పంక్తులను గీయవచ్చు.

కంప్యూటర్ గ్రాఫిక్స్‌ను ఒక రూపంలో లేదా మరొక రూపంలో ఎదుర్కోని వ్యక్తిని కనుగొనడం ఈ రోజు కష్టం. ఒక వ్యక్తి దాని అంతర్లీన అల్గారిథమ్‌లపై ఆసక్తి చూపడం ప్రారంభిస్తే, బ్రెసెన్‌హామ్ యొక్క అల్గారిథమ్‌లు మొదటి వాటిలో ఒకటిగా ఉంటాయి. సమస్య ఏమిటంటే, ఈ అల్గారిథమ్‌ల యొక్క సరళమైన మరియు అర్థమయ్యే వివరణను నేను ఇప్పటికీ చూడలేదు, చాలా తక్కువ అమలు. ఈ ఆర్టికల్‌లో, నేను బ్రెసెన్‌హామ్ ఫ్యామిలీ ఆఫ్ అల్గారిథమ్‌ల గురించి వీలైనంత సరళంగా మాట్లాడటానికి ప్రయత్నిస్తాను మరియు జావాస్క్రిప్ట్‌లో ఉపయోగించడానికి సిద్ధంగా ఉన్న కోడ్‌ను కూడా అందిస్తాను, ఇది ఆచరణాత్మకంగా C/C++లోని కోడ్‌కి భిన్నంగా లేదు. మొదట రచయితకు ధన్యవాదాలు లేఖ రాయడం ద్వారా కోడ్ తీసుకోవచ్చు మరియు ఉపయోగించవచ్చు.

www ప్రమాణాల డెవలపర్‌లు మరియు వాటిని అమలు చేసే వారి పట్ల నా లోతైన మరియు హృదయపూర్వక భావాలను వ్యక్తపరచాలనుకుంటున్నాను. అందుబాటులో ఉన్న అన్ని బ్రౌజర్‌లలో పనిచేసే JavaScript కోడ్ యొక్క వేరియంట్, అనగా. IE 6.0, NN 7.0 మరియు Opera 6.0x వాటి అందం మరియు అధునాతనతతో విభిన్నంగా లేవు. అయితే, "నేను ప్రస్తుతం ప్రాతినిధ్యం వహిస్తున్న సైన్స్‌తో దీనికి ఎలాంటి సంబంధం లేదు."

కాబట్టి, బ్రెసెన్‌హామ్ యొక్క అల్గారిథమ్‌ల ఉద్దేశ్యం రాస్టర్ పరికరంలో, సాధారణంగా మానిటర్‌పై గీతను గీయడం. మీరు మూర్తి 1లో చూడగలిగినట్లుగా, లైన్ ఇమేజ్‌లో చేర్చబడిన అన్ని పిక్సెల్‌లు ఈ లైన్‌లో ఉండవు, అంటే, అల్గోరిథం యొక్క పని దగ్గరి పిక్సెల్‌లను కనుగొనడం. బ్రెసెన్‌హామ్ యొక్క అల్గోరిథం యొక్క ప్రధాన ప్రయోజనం ఏమిటంటే ఇది లూప్‌లో ఖరీదైన గుణకార చర్యను ఉపయోగించదు. అల్గోరిథం సరళ రేఖలు లేదా రెండవ-ఆర్డర్ వక్రతలకు అనుకూలంగా ఉంటుంది*. నాలుగు-కనెక్ట్ చేయబడిన (అనగా, ఒక కోఆర్డినేట్‌లో 1 తేడా ఉన్న పాయింట్‌లు పొరుగున ఉన్నవిగా పరిగణించబడతాయి) మరియు ఎనిమిది-కనెక్ట్ చేయబడిన (అనగా, రెండు కోఆర్డినేట్‌లు 1 కంటే ఎక్కువ తేడా లేకుండా ఉంటే పాయింట్లు పొరుగుగా పరిగణించబడతాయి) పంక్తుల కోసం అల్గోరిథం యొక్క మార్పులు ఉన్నాయి. ఇక్కడ రెండవ ఎంపిక - మరింత క్లిష్టంగా ఉంటుంది, కానీ మంచి ఫలితాన్ని కూడా ఇస్తుంది.

అల్గోరిథం యొక్క ప్రధాన ఆలోచన ఏమిటంటే, డ్రా చేయవలసిన లైన్ విమానం రెండు భాగాలుగా విభజిస్తుంది. వక్రరేఖ యొక్క సమీకరణం Z = ​​f (x,y) గా వ్రాయబడింది. Z = 0 వక్రరేఖ యొక్క అన్ని పాయింట్ల వద్ద, Z > 0 వక్రరేఖ పైన ఉన్న పాయింట్ల వద్ద మరియు Z వక్రరేఖ క్రింద ఉన్న పాయింట్ల వద్ద< 0 . Нам известны координаты начала отрезка, то есть точки, заведомо лежащей на искомой кривой. Ставим туда первый пиксель и принимаем Z = 0 . От текущего пикселя можно сделать два шага — либо по вертикали (по горизонтали), либо по диагонали на один пиксель. Конкретные направления шагов выбираются в зависимости от типа линии, которую надо нарисовать. Делая шаг, мы мы вычисляем, как изменятся значение Z:

ΔZ = Z" x Δx + Z" y Δy

సాధ్యమయ్యే దశల్లో ఒకదానిలో Z పెరుగుతుంది, మరొకటి తగ్గుతుంది. కొత్త పిక్సెల్ కోసం Z విలువ సాధ్యమైనంత వరకు 0 కి దగ్గరగా ఉండేలా ప్రతి దశ ఎంచుకోబడుతుంది, తద్వారా మేము దాని చిత్రాన్ని సృష్టిస్తాము.

రేఖ విభాగాన్ని గీయడం

సరళ రేఖ కోసం అల్గోరిథం క్షితిజ సమాంతర మరియు నిలువు గీతలను గీయదని వెంటనే అంగీకరిస్తాము. ఎందుకంటే అటువంటి పంక్తులను గీయడం చాలా సరళమైన మార్గంలో అమలు చేయబడుతుంది, తరచుగా BIOS లేదా డ్రైవర్ స్థాయిలో.

మిగిలిన విభాగాలు రెండు సమూహాలుగా విభజించబడ్డాయి: క్షితిజ సమాంతర మరియు నిలువు. మేము y = kx రూపంలో సరళ రేఖ యొక్క సమీకరణాన్ని సూచిస్తే, అప్పుడు |k| ≤ 1 , మరియు నిలువుగా ఉండేవి - దీని కోసం |k| > 1. సమూహాలలో ఒకదానికి ఒక విభాగాన్ని కేటాయించడం ద్వారా, మేము చివరల కోఆర్డినేట్‌లను మార్చుకోవచ్చు, తద్వారా క్షితిజ సమాంతర భాగాలు ఎల్లప్పుడూ ఎడమ నుండి కుడికి డ్రా చేయబడతాయి మరియు నిలువు భాగాలు ఎల్లప్పుడూ పై నుండి క్రిందికి డ్రా చేయబడతాయి.

క్షితిజ సమాంతర విభాగాల కోసం, ప్రతి కొత్త పిక్సెల్ మునుపటి దానికి కుడి వైపున 1 ఉంటుంది మరియు అది కూడా ఎక్కువగా ఉండవచ్చు (తక్కువగా), అనగా. రెండు దశలు సాధ్యమే - కుడికి మరియు కుడికి వికర్ణంగా. నిలువు విభాగాల కోసం, సాధ్యమయ్యే దశలు వికర్ణంగా క్రిందికి మరియు క్రిందికి ఉంటాయి.

సెగ్మెంట్ చివరల కోఆర్డినేట్‌లు వరుసగా (x 1 ,y 1) మరియు (x 2 ,y 2) అయితే, x అక్షం Zతో పాటు ప్రతి అడుగు 1 ద్వారా మరియు y అక్షం వెంట - (x ద్వారా) 2 -x 1)/(y 2 -y 1) . విభజనతో వ్యవహరించకుండా ఉండటానికి మరియు పూర్ణాంక అంకగణితం యొక్క పరిమితుల్లో ఉండడానికి, మేము Z వేరియబుల్‌ను వరుసగా y2-y1 మరియు x2-x1కి మారుస్తాము. గణితం అంతే, మిగతాది కోడ్‌ని బట్టి అర్థమవుతుంది.

ఒక వృత్తం గీయడం

ఆర్క్ గీయడానికి అల్గోరిథం వ్యాసం యొక్క పరిధికి వెలుపల ఉంటుంది, అయితే వృత్తాన్ని గీయడానికి అల్గోరిథం సరళ రేఖ కంటే చాలా సరళంగా మారింది. ఇది అనేక కారణాల వల్ల.

మొదట, మేము సర్కిల్‌లో ఎనిమిదవ వంతు మాత్రమే గీస్తాము - π/2 నుండి π/4 వరకు, మరియు వ్యతిరేక దిశలో, అంటే సవ్యదిశలో. వృత్తం మధ్యలో ఉన్న క్షితిజ సమాంతర మరియు నిలువు అక్షాలు, అలాగే వృత్తం మధ్యలో ఉన్న y = x + b మరియు y = -x + b అనే సరళ రేఖలకు సంబంధించి ఈ భాగాన్ని ప్రతిబింబించడం ద్వారా మిగిలిన వృత్తం పొందబడుతుంది. .

రెండవది, సమరూపత కారణంగా, వృత్తం నుండి రేఖ యొక్క విచలనాలు సరళ రేఖ నుండి విచలనం వలె గుర్తించబడవు, కాబట్టి Z గరిష్టంగా అనుమతించదగిన విచలనాన్ని లెక్కించకుండా సున్నాతో పోల్చవచ్చు.

చెల్లుబాటు అయ్యే దశలు కుడి మరియు కుడి-వికర్ణంగా ఉంటాయి మరియు Z లో మార్పు x మరియు y విలువలపై ఆధారపడి ఉంటుంది, కానీ సంబంధం సరళంగా ఉంటుంది, కాబట్టి గుణకారం ఆపరేషన్ అవసరం లేదు.

నిజానికి, అంతే. మీరు క్రింద వివరించిన అల్గారిథమ్‌ల ఆపరేషన్‌ను ప్రదర్శించే స్క్రిప్ట్‌ను కనుగొంటారు మరియు అది ఎలా పని చేస్తుందో అర్థం చేసుకోవడానికి, పేజీ యొక్క మూల వచనాన్ని చూడండి.

అదృష్టం!

మీరు మీ బ్రౌజర్ విండోలో అల్గారిథమ్‌ల ప్రదర్శనను చూడాలనుకుంటే, దయచేసి జావాస్క్రిప్ట్‌ని ప్రారంభించండి!

x1:y1:
x2:y2:
x0:y0:
R: