0% found this document useful (0 votes)
3K views

Computer Graphics

Uploaded by

majid
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3K views

Computer Graphics

Uploaded by

majid
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 38

‫‪Computer Graphics‬‬

‫‪By‬‬
‫‪DONALD HEARN‬‬
‫‪M.PAULINE BAKER‬‬

‫ﮔﺮدآورﻧﺪه و ﺗﺮﺟﻤﻪ ‪ :‬ﺳﻴﺪ ﻣﺠﻴﺪ ﺧﺮاﺷﺎدﻳﺰاده‬

‫ﺗﺎﺑﺴﺘﺎن ‪1386‬‬
‫اﻳﻦ ﺟﺰوه ﺗﺮﻛﻴﺒﻲ از ﺗﺮﺟﻤﻪ ﻛﺘﺎب ‪ Computer graphics‬و ﺟﺰوه ﻣﻬﻨﺪس اﻛﺒﺮي ﻣﻴﺒﺎﺷﺪ‪.‬‬
‫‪2‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﺗﺮﺳﻴﻢ اﺷﻜﺎل ﭘﺎﻳﻪ ﻫﻨﺪﺳﻲ‬

‫ﻓﺼﻞ اول ‪:‬‬

‫ﺗﺮﺳﻴﻢ اﺷﻜﺎل ﭘﺎﻳﻪ ﻫﻨﺪﺳﻲ‬

‫ﻣﺒﺎﺣﺚ اﻳﻦ ﻓﺼﻞ‪:‬‬


‫™ رﺳﻢ ﻧﻘﻄﻪ‬
‫™ رﺳﻢ ﺧﻂ‬
‫• اﻟﮕﻮرﻳﺘﻢ ‪DDA‬‬
‫• اﻟﮕﻮرﻳﺘﻢ ﺑﺮﺳﻨﻬﺎم‬
‫™ رﺳﻢ داﻳﺮه‬
‫• اﻟﮕﻮرﻳﺘﻢ زاوﻳﻪ‬
‫• اﻟﮕﻮرﻳﺘﻢ ﻧﻘﻄﻪ ﻣﻴﺎﻧﻲ‬
‫™ رﺳﻢ ﺑﻴﻀﻲ‬
‫• اﻟﮕﻮرﻳﺘﻢ زاوﻳﻪ‬
‫• اﻟﮕﻮرﻳﺘﻢ ﻧﻘﻄﻪ ﻣﻴﺎﻧﻲ‬
‫‪3‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﺗﺮﺳﻴﻢ اﺷﻜﺎل ﭘﺎﻳﻪ ﻫﻨﺪﺳﻲ‬

‫ﻫﺮ ﺗﺼﻮﻳﺮ را ﻣﻴﺘﻮان ﺑﻪ روﺷﻬﺎي ﮔﻮﻧﺎﮔﻮن ﺗﻮﺻﻴﻒ ﻛﺮد‪ .‬ﺑﺮاي ﻣﺜﺎل ﻣﻴﺘﻮان ﻫﺮ ﺗﺼﻮﻳﺮ را ﺑﻪ ﺻﻮرت ﻣﺠﻤﻮﻋﻪ اي از اﺷﻴﺎء در‬
‫ﻧﻈﺮ ﮔﺮﻓﺖ و ﺳﭙﺲ اﻳﻦ اﺷﻴﺎء را ﺑﺼﻮرت اﺷﻜﺎل اوﻟﻴﻪ ﻣﺎﻧﻨﺪ ﻧﻘﻄﻪ‪ ،‬ﺧﻂ ‪ ،‬داﻳﺮه و ‪ ...‬ﻣﺪل ﻛﺮد و در ﻧﻬﺎﻳﺖ اﻳﻦ اﺷﻜﺎل اوﻟﻴﻪ را‬
‫ﺗﻮﺳﻂ ﻣﺠﻤﻮﻋﻪ اي از ﭘﻴﻜﺴﻞ ﻫﺎي ﻧﻮراﻧﻲ ﻧﻤﺎﻳﺶ داد‪.‬‬
‫رﺳﻢ ﻧﻘﻄﻪ‪:‬‬
‫ﺑﺮاي رﺳﻢ ﻧﻘﻄﻪ ﺗﻨﻬﺎ ﺑﺎﻳﺪ ﺑﻪ ﻃﺮﻳﻘﻲ ﻣﺨﺘﺼﺎت ﻧﻘﻄﻪ ﻣﻮرد ﻧﻈﺮ را ﺑﻪ روﻳﻪ اي ﻣﻨﺎﺳﺐ ﺑﺮاي دﺳﺘﮕﺎه ﺧﺮوﺟﻲ ﺑﺒﺮﻳﻢ‪ .‬در‬
‫ﺳﻴﺴﺘﻢ ﻫﺎي راﺳﺘﺮ ﻣﻜﺎن ﻣﺘﻨﺎﻇﺮ ﺑﺎ ﻧﻘﻄﻪ‪ ،‬در ﻓﺮﻳﻢ ﺑﺎﻓﺮ ﻣﻘﺪاردﻫﻲ ﻣﻴﺸﻮد و ﺳﭙﺲ ﻫﻨﮕﺎم ﺗﺎﺑﻴﺪن اﻟﻜﺘﺮون ﻣﻜﺎن ﻣﻮرد ﻧﻈﺮ‬
‫روﺷﻦ ﻣﻴﺸﻮد‪.‬‬
‫ﻣﻌﻤﻮﻻً ﺑﺮاي ﻣﻘﺪاردﻫﻲ ﻛﺮدن ﻓﺮﻳﻢ ﺑﺎﻓﺮ )ﺗﺮﺳﻴﻢ ﻧﻘﻄﻪ( از ﺗﺎﺑﻊ ﺳﻄﺢ ﭘﺎﻳﻴﻦ زﻳﺮ اﺳﺘﻔﺎده ﻣﻴﺸﻮد‪:‬‬
‫)‪setpixel (x , y, color‬‬
‫رﺳﻢ ﺧﻂ‪:‬‬
‫اﻟﮕﻮرﻳﺘﻢ ‪: DDA‬‬
‫ﻳﻜﻲ از اﻟﮕﻮرﻳﺘﻢ ﻫﺎي ﺗﺮﺳﻴﻢ ﺧﻂ اﻟﮕﻮرﻳﺘﻢ ‪ DDA‬اﺳﺖ ﻛﻪ ﺑﺮ ﭘﺎﻳﻪ ﻣﻌﺎدﻟﻪ ﺷﻴﺐ ﺧﻂ ﻋﻤﻞ ﻣﻴﻜﻨﺪ‪ .‬ﺑﺴﺘﻪ ﺑﻪ ﻣﻘﺪار ﺷﻴﺐ‬
‫ﺧﻂ ﻳﻜﻲ از ﻓﺮﻣﻮل ﻫﺎي زﻳﺮ را اﺳﺘﻔﺎده ﺧﻮاﻫﻴﻢ ﻛﺮد‪.‬‬
‫⎧‬ ‫‪∆x =1‬‬
‫‪y‬‬
‫‪⎪ k +1‬‬ ‫=‬ ‫‪y‬‬ ‫‪k‬‬ ‫‪+‬‬ ‫‪m‬‬ ‫∆‬ ‫‪x‬‬ ‫‪⇒ yk +1 = yk + m‬‬ ‫)‪(1‬‬
‫⎨ ⇒ ‪∆y = m∆x‬‬ ‫‪1‬‬ ‫‪∆y =1‬‬
‫‪1‬‬
‫‪⎪ xk +1 = xk + ∆y ⇒ xk +1 = xk +‬‬ ‫)‪(2‬‬
‫⎩‬ ‫‪m‬‬ ‫‪m‬‬

‫را ﻳﻚ واﺣﺪ‬ ‫اﻟﻒ ( در ﺻﻮرﺗﻴﻜﻪ ﺷﻴﺐ ﺧﻂ ﻣﻘﺪار ﻣﺜﺒﺖ و ﻛﻤﺘﺮ از ﻳﻚ ﺑﺎﺷﺪ در اﻳﻦ ﺻﻮرت در ﻫﺮ ﻣﺮﺣﻠﻪ ﻣﻘﺪار ‪∆x‬‬
‫اﻓﺰاﻳﺶ ﻣﻴﺪﻫﻴﻢ و ﺳﭙﺲ ﻣﻘﺪار ‪ y‬را از ﻓﺮﻣﻮل ‪ 1‬ﻣﺤﺎﺳﺒﻪ ﻣﻴﻜﻨﻴﻢ‪.‬‬
‫ب ( در ﺻﻮرﺗﻴﻜﻪ ﺷﻴﺐ ﺧﻂ ﻣﻘﺪار ﻣﺜﺒﺖ و ﺑﻴﺸﺘﺮ از ﻳﻚ ﺑﺎﺷﺪ در اﻳﻦ ﺻﻮرت در ﻫﺮ ﻣﺮﺣﻠﻪ ﻣﻘﺪار ‪ ∆y‬را ﻳﻚ واﺣﺪ‬
‫اﻓﺰاﻳﺶ ﻣﻴﺪﻫﻴﻢ و ﺳﭙﺲ ﻣﻘﺪار ‪ x‬را از ﻓﺮﻣﻮل ‪ 2‬ﻣﺤﺎﺳﺒﻪ ﻣﻴﻜﻨﻴﻢ‪.‬‬

‫از آﻧﺠﺎ ﻛﻪ ﻣﻘﺪار ‪ m‬ﻣﻴﺘﻮاﻧﺪ ﻫﺮ ﻋﺪد ﺣﻘﻴﻘﻲ ﺑﺎﺷﺪ ﺑﻨﺎﺑﺮاﻳﻦ ﻧﻴﺎز ﺑﻪ ﮔﺮد ﻛﺮدن ﻋﺪد ﺣﺎﺻﻞ دارﻳﻢ ‪.‬اﻟﮕﻮرﻳﺘﻢ ‪ DDA‬اﻟﮕﻮرﻳﺘﻢ‬
‫ﺳﺮﻳﻌﻲ ﺑﺮاي ﭘﻴﺪا ﻛﺮدن ﭘﻴﻜﺴﻞ ﻫﺎ اﺳﺖ ﻛﻪ ﻣﺴﺘﻘﻴﻤﺎً از ﻣﻌﺎدﻟﻪ ﺧﻂ اﺳﺘﻔﺎده ﻣﻴﻜﻨﺪ‪ .‬اﻣﺎ ﺑﻪ دﻟﻴﻞ ﻋﻤﻠﻴﺎت ﭘﻴﺎﭘﻲ در‬
‫ﮔﺮدﻛﺮدن ﻣﻴﺘﻮاﻧﺪ ﻣﻨﺠﺮ ﺑﻪ ﺧﻄﺎﻫﺎي ﭼﺸﻤﮕﻴﺮي در ﺧﻄﻮط ﻃﻮﻻﻧﻲ ﺷﻮد‪ .‬ﻫﻤﭽﻨﻴﻦ ﻋﻤﻠﻴﺎت ﮔﺮد ﻛﺮدن و ﻛﺎر ﺑﺎ اﻋﺪاد‬
‫اﻋﺸﺎري ﺑﺴﻴﺎر وﻗﺖ ﮔﻴﺮ اﺳﺖ‪.‬‬
‫روﻳﻪ زﻳﺮ‪ ،‬ﻧﺤﻮه اﺟﺮاي اﻳﻦ اﻟﮕﻮرﻳﺘﻢ را ﻧﺸﺎن ﻣﻴﺪﻫﺪ‪:‬‬
‫)‪void dda_line(const int x_1,const int y_1,const int x_2,const int y_2‬‬
‫{‬
‫;) (‪int color=getcolor‬‬
‫;‪int x1=x_1‬‬
‫;‪int y1=y_1‬‬
‫;‪int x2=x_2‬‬
‫;‪int y2=y_2‬‬
‫)‪if(x_1>x_2‬‬
‫{‬
‫;‪x1=x_2‬‬
‫‪4‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﺗﺮﺳﻴﻢ اﺷﻜﺎل ﭘﺎﻳﻪ ﻫﻨﺪﺳﻲ‬

‫;‪y1=y_2‬‬
‫;‪x2=x_1‬‬
‫;‪y2=y_1‬‬
‫}‬
‫;)‪float dx=(x2-x1‬‬
‫;)‪float dy=(y2-y1‬‬
‫;)‪int steps=abs(dy‬‬
‫))‪if(abs(dx)>abs(dy‬‬
‫;)‪steps=abs(dx‬‬
‫;)‪float x_inc=(dx/(float)steps‬‬
‫;)‪float y_inc=(dy/(float)steps‬‬
‫;‪float x=x1‬‬
‫;‪float y=y1‬‬
‫;)‪putpixel(x,y,color‬‬
‫)‪for(int count=1;count<=steps;count++‬‬
‫{‬
‫;‪x+=x_inc‬‬
‫;‪y+=y_inc‬‬
‫;)‪putpixel((int)(x+0.5),(int)(y+0.5),color‬‬
‫}‬
‫}‬

‫اﻟﮕﻮرﻳﺘﻢ ‪: Bresenham‬‬
‫اﻳﻦ اﻟﮕﻮرﻳﺘﻢ ﻳﻜﻲ از اﻟﮕﻮرﻳﺘﻢ ﻫﺎي ﺳﺮﻳﻊ و ﻣﻨﺎﺳﺐ ﺑﺮاي رﺳﻢ ﺧﻂ اﺳﺖ ﻛﻪ ﺗﻮﺳﻂ ﺑﺮﺳﻨﻬﺎم اﻳﺠﺎد ﺷﺪ‪ .‬و ﺗﻨﻬﺎ از‬
‫ﻣﺤﺎﺳﺒﺎت ﺑﺮ روي اﻋﺪاد ﺻﺤﻴﺢ اﺳﺘﻔﺎده ﻣﻴﻜﻨﺪ ﺿﻤﻨﺎً ﻣﻴﺘﻮاﻧﺪ ﺑﺎ ﻛﻤﻲ ﺗﻐﻴﻴﺮ ﺑﺮاي رﺳﻢ داﻳﺮه و ﺳﺎﻳﺮ ﺧﻄﻮط ﻣﻨﺤﻨﻲ‬
‫اﺳﺘﻔﺎده ﺷﻮد‪.‬‬
‫در ﺷﻜﻞ روﺑﺮو ﺑﺨﺸﻲ از ﻳﻚ ﺧﻂ ﻣﺴﺘﻘﻴﻢ ﻧﺸﺎن داده ﺷﺪه اﺳﺖ ‪.‬‬
‫ﭘﺲ از رﺳﻢ ﻧﻘﻄﻪ )‪ (10,11‬در ﻣﺮﺣﻠﻪ ﺑﻌﺪ ﻣﺎ ﺑﺎﻳﺪ ﺗﺼﻤﻴﻢ ﺑﮕﻴﺮﻳﻢ ﻛﻪ ﻛﺪام ﻳﻚ از ﻧﻘﺎط‬
‫)‪ (11,11‬و ﻳﺎ )‪ (11,12‬اﻧﺘﺨﺎب ﺷﻮد‪ .‬اﻳﻦ ﺳﺆال ﺗﻮﺳﻂ اﻟﮕﻮرﻳﺘﻢ ﺑﺮﺳﻨﻬﺎم‪ ،‬و ﺑﻪ ﻛﻤﻚ‬
‫ﻋﻼﻣﺖ ﻳﻚ ﭘﺎراﻣﺘﺮ ﺗﺼﻤﻴﻢ ﮔﻴﺮي ﻛﻪ ﻓﺎﺻﻠﻪ ﺑﻴﻦ ﻫﺮ ﻳﻚ از ﭘﻴﻜﺴﻞ ﻫﺎ و ﺧﻂ واﻗﻌﻲ را‬
‫ﻧﺸﺎن ﻣﻴﺪﻫﺪ‪ ،‬ﭘﺎﺳﺦ داده ﻣﻴﺸﻮد‪ .‬ﺗﻨﻬﺎ ﻣﺸﻜﻞ اﻳﻦ اﻟﮕﻮرﻳﺘﻢ آن اﺳﺖ ﻛﻪ ﺑﻪ ﺷﻴﺐ ﺧﻂ‬
‫ﻣﻮرد ﻧﻈﺮ ﺑﺴﺘﮕﻲ دارد‪.‬‬

‫ﺑﺮاي ﻧﺸﺎن دادن روش اﻟﮕﻮرﻳﺘﻢ‪ ،‬اﺑﺘﺪا رﺳﻢ ﺧﻄﻮط ﺑﺎ ﺷﻴﺐ ﻣﺜﺒﺖ و ﻛﻤﺘﺮ از ‪ 1‬را ﺑﺮرﺳﻲ‬
‫ﻣﻴﻜﻨﻴﻢ‪ .‬ﻣﺎ در ﻫﺮ ﻣﺮﺣﻠﻪ‪ ،‬ﻣﺆﻟﻔﻪ ‪ x‬را ﻳﻚ واﺣﺪ اﻓﺰاﻳﺶ ﻣﻴﺪﻫﻴﻢ‪ ،‬ﺳﭙﺲ ﻣﺆﻟﻔﻪ ‪ y‬را‬
‫ﻣﺤﺎﺳﺒﻪ ﻣﻴﻜﻨﻴﻢ‪ .‬ﺷﻜﻞ روﺑﺮو اﻟﮕﻮرﻳﺘﻢ را در ﻣﺮﺣﻠﻪ ‪ k‬ام ﻧﺸﺎن ﻣﻴﺪﻫﺪ‪ .‬ﻓﺮض ﻛﻨﻴﺪ ﻣﺎ‬
‫ﺗﺸﺨﻴﺺ داده اﻳﻢ ﻛﻪ ﭘﻴﻜﺴﻞ ) ‪ ( xk , yk‬رﺳﻢ ﺷﻮد‪ .‬در ﻣﺮﺣﻠﻪ ﺑﻌﺪ ﺑﺎﻳﺪ ﺗﺼﻤﻴﻢ ﺑﮕﻴﺮﻳﻢ‬
‫ﻛﻪ ﻛﺪام ﭘﻴﻜﺴﻞ در ﺳﺘﻮن ‪ xk +1‬رﺳﻢ ﺷﻮد‪ .‬اﻧﺘﺨﺎب ﻫﺎي ﻣﺎ ﭘﻴﻜﺴﻞ ﻫﺎي ) ‪ ( xk +1 , yk‬و‬
‫) ‪ ( xk +1 , yk +1‬ﻫﺴﺘﻨﺪ‪.‬‬
‫‪5‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﺗﺮﺳﻴﻢ اﺷﻜﺎل ﭘﺎﻳﻪ ﻫﻨﺪﺳﻲ‬

‫اﺑﺘﺪا ﻣﻘﺪار واﻗﻌﻲ ‪ y‬در ﺳﺘﻮن ‪ xk +1‬را از راﺑﻄﻪ زﻳﺮ ﺑﺪﺳﺖ ﻣﻲ آورﻳﻢ و ﺳﭙﺲ ﻓﺎﺻﻠﻪ‬
‫ﺑﻴﻦ ﻫﺮ ﻳﻚ از ﭘﻴﻜﺴﻠﻬﺎ را ﺗﺎ اﻳﻦ ﻣﻘﺪار ﻣﺤﺎﺳﺒﻪ ﻣﻴﻜﻨﻴﻢ‪) .‬ﺷﻜﻞ روﺑﺮو(‬
‫‪y = m( xk + 1) + b‬‬
‫‪d1 = y − yk = m( xk + 1) + b − yk‬‬
‫‪d 2 = yk + 1 − y = yk + 1 − m( xk + 1) + b‬‬
‫)*( ‪d1 − d 2 = 2m( xk + 1) − 2 yk + 2b − 1‬‬
‫ﭘﺎراﻣﺘﺮ ﺗﺼﻤﻴﻢ ﮔﻴﺮي ‪ pk‬در ﻫﺮ ﻣﺮﺣﻠﻪ از راﺑﻄﻪ )*( ﺑﺪﺳﺖ ﻣﻲ آﻳﺪ‪ .‬ﺑﺎ ﺟﺎﻳﮕﺰﻳﻨﻲ‬
‫‪ m = ∆y‬در راﺑﻄﻪ‪ ،‬ﭘﺎراﻣﺘﺮ ﺗﺼﻤﻴﻢ ﮔﻴﺮي ﺑﺼﻮرت زﻳﺮ ﺑﺪﺳﺖ ﻣﻲ آﻳﺪ‪.‬‬
‫‪∆x‬‬
‫‪pk = ∆x(d1 − d 2 ) = 2∆y.xk − 2∆x. yk + c‬‬
‫ﻛﻪ در آن ‪ c‬ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ )‪ 2∆y + ∆x (2b − 1‬و ﻣﻘﺪار ﺛﺎﺑﺘﻲ اﺳﺖ ﻛﻪ ﻣﻴﺘﻮان آن را در ﻣﻌﺎدﻻت ﺑﺎزﮔﺸﺘﻲ ﻧﺎدﻳﺪه ﮔﺮﻓﺖ‪.‬‬
‫ﺣﺎل ﻣﻴﺘﻮان ﺑﻴﺎن ﻛﺮد‪:‬‬
‫‪ -1‬اﮔﺮ ‪ pk‬داراي ﻣﻘﺪار ﻣﻨﻔﻲ ﺑﻮد آﻧﮕﺎه ﭘﻴﻜﺴﻞ ﻗﺮار ﮔﺮﻓﺘﻪ در ‪ yk‬ﺑﻪ ﺧﻂ ﻧﺰدﻳﻜﺘﺮ اﺳﺖ و ﭘﻴﻜﺴﻞ ﭘﺎﻳﻴﻨﻲ اﻧﺘﺨﺎب ﺧﻮاﻫﺪ‬
‫ﺷﺪ‪.‬‬
‫‪ -2‬اﮔﺮ ‪ pk‬داراي ﻣﻘﺪار ﻣﺜﺒﺖ ﺑﻮد آﻧﮕﺎه ﭘﻴﻜﺴﻞ ﻗﺮار ﮔﺮﻓﺘﻪ در ‪ yk + 1‬ﺑﻪ ﺧﻂ ﻧﺰدﻳﻜﺘﺮ اﺳﺖ و ﭘﻴﻜﺴﻞ ﺑﺎﻻﻳﻲ‬
‫اﻧﺘﺨﺎب ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫ﺣﺎل در ﻣﺮﺣﻠﻪ ﺑﻌﺪ‪ ،‬در ﺳﺘﻮن ‪ xk + 1‬دارﻳﻢ ‪:‬‬
‫‪pk +1 = 2∆y.xk +1 − 2∆x. yk +1 + c‬‬
‫ﻣﻘﺪار دو ﭘﺎراﻣﺘﺮ را از ﻫﻢ ﻛﻢ ﻣﻴﻜﻨﻴﻢ ‪:‬‬
‫) ‪pk +1 − pk = 2∆y.( xk +1 − xk ) − 2∆x.( yk +1 − yk‬‬
‫ﻛﻪ در آن ) ‪ ( yk +1 − yk‬ﻣﻴﺘﻮاﻧﺪ ﻣﻘﺪار ‪ 0‬ﻳﺎ ‪ 1‬داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬اﻳﻦ راﺑﻄﻪ ﺑﺎزﮔﺸﺘﻲ ﺑﺎﻳﺪ در ﻫﺮ ﻣﺮﺣﻠﻪ ﻣﺤﺎﺳﺒﻪ ﺷﻮد‪ .‬ﻣﻘﺪار‬
‫اوﻟﻴﻪ راﺑﻄﻪ ﺑﺎزﮔﺸﺘﻲ را ﻧﻴﺰ از راﺑﻄﻪ ‪ pk‬ﺑﺼﻮرت زﻳﺮ ﺑﺪﺳﺖ ﻣﻲ آورﻳﻢ‪.‬‬
‫‪p0 = 2∆y − ∆x‬‬
‫روﻳﻪ زﻳﺮ ﭘﻴﺎده ﺳﺎزي اﻳﻦ اﻟﮕﻮرﻳﺘﻢ ﺑﻪ زﺑﺎن ‪ C++‬را ﻧﺸﺎن ﻣﻴﺪﻫﺪ‪:‬‬
‫)‪void bresenham_line(const int x_1,const int y_1,const int x_2,const int y_2‬‬
‫{‬
‫;) (‪int color=getcolor‬‬
‫;‪int x1=x_1‬‬
‫;‪int y1=y_1‬‬
‫;‪int x2=x_2‬‬
‫;‪int y2=y_2‬‬
‫)‪if(x_1>x_2‬‬
‫{‬
‫;‪x1=x_2‬‬
‫;‪y1=y_2‬‬
‫;‪x2=x_1‬‬
‫;‪y2=y_1‬‬
‫}‬
‫‪6‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﺗﺮﺳﻴﻢ اﺷﻜﺎل ﭘﺎﻳﻪ ﻫﻨﺪﺳﻲ‬

‫;)‪int dx=abs(x2-x1‬‬
‫;)‪int dy=abs(y2-y1‬‬
‫;)‪int two_dy=(2*dy‬‬
‫;))‪int two_dy_dx=(2*(dy-dx‬‬
‫;)‪int p=((2*dy)-dx‬‬
‫;‪int x=x1‬‬
‫;‪int y=y1‬‬
‫;)‪putpixel(x,y,color‬‬
‫)‪while(x<x2‬‬
‫{‬
‫;‪x++‬‬
‫)‪if(p<0‬‬
‫;‪p+=two_dy‬‬
‫‪else‬‬
‫{‬
‫;‪y--‬‬
‫;‪p+=two_dy_dx‬‬
‫}‬
‫;)‪putpixel(x,y,color‬‬
‫}‬
‫}‬

‫اﻟﮕﻮرﻳﺘﻢ رﺳﻢ داﻳﺮه ‪:‬‬


‫ﻳﻚ داﻳﺮه ﺑﻪ ﺻﻮرت ﻣﺠﻤﻮﻋﻪ ﻧﻘﺎﻃﻲ اﺳﺖ ﻛﻪ از ﻳﻚ ﻧﻘﻄﻪ ﻣﺮﻛﺰي ) ‪ ( xc , yc‬ﺑﻪ ﻓﺎﺻﻠﻪ ﻣﺸﺨﺺ ‪ r‬ﻫﺴﺘﻨﺪ‪ .‬ﻣﻌﺎدﻟﻪ داﻳﺮه‬
‫در دﺳﺘﮕﺎه دﻛﺎرﺗﻲ ﺑﻪ ﺻﻮرت ‪ ( x − xc ) 2 + ( y − yc ) 2 = r 2‬ﺗﻌﺮﻳﻒ ﻣﻴﺸﻮد‪.‬‬
‫ﻣﺎ ﻣﻴﺘﻮاﻧﻴﻢ از ﻫﻤﻴﻦ ﻣﻌﺎدﻟﻪ ﺑﺮاي ﭘﻴﺪا ﻛﺮدن ﻧﻘﺎط ﭘﻴﻜﺴﻠﻬﺎ اﺳﺘﻔﺎده ﻛﻨﻴﻢ‪ .‬ﺑﺪﻳﻦ ﺻﻮرت ﻛﻪ ﻣﺆﻟﻔﻪ ‪ x‬را از ﺑﺎزه‬
‫‪ xc − r‬ﺗﺎ ‪ xc + r‬ﺗﻐﻴﻴﺮ ﻣﻴﺪﻫﻴﻢ و ﻣﻘﺪار ‪ y‬را ﺑﺮاي ﻫﺮ ‪ x‬از راﺑﻄﻪ ‪ y = yc ± r 2 − ( xc − x)2‬ﺑﺪﺳﺖ آورﻳﻢ‪.‬‬
‫اﻣﺎ اﻳﻦ روش ﺧﻮﺑﻲ ﺑﺮاي ﺗﻮﻟﻴﺪ داﻳﺮه ﻧﻴﺴﺖ‪ ،‬زﻳﺮا اوﻻً در ﻫﺮ ﻣﺮﺣﻠﻪ ﻧﻴﺎز ﺑﻪ اﻧﺠﺎم ﻣﺤﺎﺳﺒﺎت ﻓﺮاواﻧﻲ اﺳﺖ و ﺛﺎﻧﻴﺎً ﻫﻤﺎﻧﻄﻮر ﻛﻪ‬
‫در ﺷﻜﻞ زﻳﺮ ﻧﺸﺎن داده ﺷﺪه اﺳﺖ ﻓﺎﺻﻠﻪ ﺑﻴﻦ ﭘﻴﻜﺴﻠﻬﺎ ﻫﻤﻪ ﺟﺎ ﺛﺎﺑﺖ ﻧﻴﺴﺖ‪.‬‬

‫ﻳﻚ روش ﺑﺮاي ﺣﺬف ﻓﻀﺎﻫﺎي ﺧﺎﻟﻲ ﻋﻮض ﻛﺮدن ﺟﺎي ﻣﺆﻟﻔﻪ ﻫﺎي ‪ x, y‬در ﺟﺎﻳﻲ اﺳﺖ ﻛﻪ ﺷﻴﺐ ﺧﻂ ﺑﻴﺸﺘﺮ از ﻳﻚ ﻳﺎ‬
‫ﻛﻤﺘﺮ از ‪ -1‬ﺑﺎﺷﺪ‪ .‬ﻛﻪ اﻳﻦ روش ﻧﻴﺰ‪ ،‬ﻧﻴﺎز ﺑﻪ ﻣﺤﺎﺳﺒﺎت ﻓﺮاوان دارد ‪ .‬روش دﻳﮕﺮ ﺑﺮاي ﺣﺬف ﻓﻀﺎﻫﺎي ﺑﻴﻦ ﭘﻴﻜﺴﻠﻲ اﺳﺘﻔﺎده‬
‫از روش زاوﻳﻪ اي و رﺳﻢ داﻳﺮه در ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ ﺑﺮ ﭘﺎﻳﻪ ‪ r‬و ‪ θ‬ﻣﻲ ﺑﺎﺷﺪ‪ .‬ﻣﻌﻤﻮﻻً ﻣﻘﺪار ‪ θ‬را در ﻫﺮ ﻣﺮﺣﻠﻪ ﺑﻪ ﻣﻘﺪار‬
‫‪1‬‬
‫اﻓﺰاﻳﺶ ﻣﻴﺪﻫﻨﺪ ﺗﺎ داﻳﺮه رﺳﻢ ﺷﻮد‪.‬‬
‫‪r‬‬
‫‪⎧ x = xc + r cos θ‬‬
‫⎨‬
‫‪⎩ y = yc + r sin θ‬‬
‫‪7‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﺗﺮﺳﻴﻢ اﺷﻜﺎل ﭘﺎﻳﻪ ﻫﻨﺪﺳﻲ‬

‫‪1‬‬
‫داﻳﺮه را‬ ‫ﻧﻜﺘﻪ ﻣﻬﻢ اﻳﻨﺠﺎﺳﺖ ﻛﻪ ﻣﺎ ﻣﻴﺘﻮاﻧﻴﻢ ﻣﻴﺰان ﻣﺤﺎﺳﺒﺎت را ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺗﻘﺎرن داﻳﺮه ﻛﺎﻫﺶ دﻫﻴﻢ ‪ .‬ﻣﺎ ﻣﻴﺘﻮاﻧﻴﻢ ﺗﻨﻬﺎ‬
‫‪8‬‬
‫رﺳﻢ ﻛﺮده و ﺳﭙﺲ ﻛﻞ داﻳﺮه را ﺑﺎ ﺗﻘﺎرن از ﻣﺤﻮرﻫﺎي ‪ x, y , x = y‬ﺑﺪﺳﺖ‬
‫آورﻳﻢ و ﺗﻨﻬﺎ ﺑﺎﻳﺪ داﻳﺮه را ﺑﺮاي ‪ 45o‬ﻣﺤﺎﺳﺒﻪ ﻛﻨﻴﻢ‪.‬‬
‫ﻣﺎ ﺗﻨﻬﺎ داﻳﺮه را از ﻧﻘﻄﻪ ‪ x = 0‬ﺗﺎ ‪ x = y‬رﺳﻢ ﻛﺮده و ﺳﭙﺲ آﻧﺮا ﺑﺎ ﺗﻘﺎرن‬
‫داﻳﺮه ﻛﺎﻣﻞ ﻣﻴﻜﻨﻴﻢ‪ .‬اﻣﺎ ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﮔﻔﺘﻪ ﺷﺪ ﻣﻌﺎدﻻت دﻛﺎرﺗﻲ و ﻗﻄﺒﻲ روش‬
‫ﺧﻮﺑﻲ ﺑﺮاي رﺳﻢ داﻳﺮه ﻧﻴﺴﺘﻨﺪ‪ .‬زﻳﺮا روش دﻛﺎرﺗﻲ ﻧﻴﺎز ﺑﻪ ﻣﺤﺎﺳﺒﻪ ﺿﺮب و‬
‫رادﻳﻜﺎل و روش ﻗﻄﺒﻲ ﻧﻴﺎز ﺑﻪ ﻣﺤﺎﺳﺒﺎت ﻣﺜﻠﺜﺎﺗﻲ دارد‪ .‬روش ﺑﻬﺘﺮ اﻟﮕﻮرﻳﺘﻢ‬
‫‪ MidPoint‬اﺳﺖ ‪.‬‬

‫اﺑﺘﺪا ﭘﻴﺎده ﺳﺎزي اﻟﮕﻮرﻳﺘﻢ رﺳﻢ داﻳﺮه ﺑﺎ زاوﻳﻪ را در زﺑﺎن ‪ C++‬ﻧﺸﺎن ﻣﻴﺪﻫﻴﻢ و ﺳﭙﺲ ﺑﻪ اﻟﮕﻮرﻳﺘﻢ ﻧﻘﻄﻪ ﻣﻴﺎﻧﻲ ﺧﻮاﻫﻴﻢ‬
‫ﭘﺮداﺧﺖ ‪.‬‬
‫اﻟﮕﻮرﻳﺘﻢ زاوﻳﻪ ﺑﺮاي رﺳﻢ داﻳﺮه‪:‬‬
‫)‪void trigonometric_circle(const int h,const int k,const int r‬‬
‫{‬
‫;) (‪int color=getcolor‬‬
‫;‪float x=0‬‬
‫;‪float y=r‬‬
‫;‪float angle=0‬‬
‫;‪float range=M_PI_4‬‬
‫‪do‬‬
‫{‬
‫;)‪putpixel((int)(h+x+0.5),(int)(k+y+0.5),color‬‬
‫;)‪putpixel((int)(h+y+0.5),(int)(k+x+0.5),color‬‬
‫;)‪putpixel((int)(h+y+0.5),(int)(k-x+0.5),color‬‬
‫;)‪putpixel((int)(h+x+0.5),(int)(k-y+0.5),color‬‬
‫;)‪putpixel((int)(h-x+0.5),(int)(k-y+0.5),color‬‬
‫;)‪putpixel((int)(h-y+0.5),(int)(k-x+0.5),color‬‬
‫;)‪putpixel((int)(h-y+0.5),(int)(k+x+0.5),color‬‬
‫;)‪putpixel((int)(h-x+0.5),(int)(k+y+0.5),color‬‬
‫;‪angle+=0.001‬‬
‫;))‪x=(r*cos(angle‬‬
‫;))‪y=(r*sin(angle‬‬
‫}‬
‫;)‪while(angle<=range‬‬
‫}‬
‫‪8‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﺗﺮﺳﻴﻢ اﺷﻜﺎل ﭘﺎﻳﻪ ﻫﻨﺪﺳﻲ‬

‫‪: Midpoint Circle Drawing Algorithm‬‬


‫دراﻳﻦ روش ﻣﺎ در ﻫﺮ ﻣﺮﺣﻠﻪ ﻧﺰدﻳﻜﺘﺮﻳﻦ ﻧﻘﻄﻪ ﺑﻪ ﻣﺴﻴﺮ داﻳﺮه را اﻧﺘﺨﺎب ﻣﻴﻜﻨﻴﻢ‪ .‬ﺑﺮاي ﻳﻚ ﺷﻌﺎع داده ﺷﺪه ‪ r‬و ﻳﻚ ﻣﺮﻛﺰ‬
‫) ‪ ( xc , yc‬اﺑﺘﺪا داﻳﺮه را ﺑﻪ ﻣﺮﻛﺰ )‪ (0, 0‬رﺳﻢ ﻣﻴﻜﻨﻴﻢ ﺳﭙﺲ ﻧﻘﺎط ﻣﺤﺎﺳﺒﻪ ﺷﺪه را ﺑﺎ ﻣﻘﺪار ) ‪ ( xc , yc‬ﺟﻤﻊ ﻣﻴﻜﻨﻴﻢ ﺗﺎ‬
‫داﻳﺮه ﺑﻪ ﻧﻘﻄﻪ اﺻﻠﻲ ﻣﻨﺘﻘﻞ ﺷﻮد‪.‬‬
‫داﻳﺮه را از ‪ x = 0‬ﺗﺎ ‪ x = y‬رﺳﻢ ﻣﻴﻜﻨﻴﻢ در اﻳﻦ ﺑﺎزه ﺷﻴﺐ ﻣﻨﺤﻨﻲ ﺑﻴﻦ ‪ 0‬ﺗﺎ ‪ -1‬ﺗﻐﻴﻴﺮ ﻣﻴﻜﻨﺪ ﺑﻨﺎﺑﺮاﻳﻦ ﻣﺎ ﻣﻴﺘﻮاﻧﻴﻢ ﺑﺎ‬
‫اﻓﺰاﻳﺶ ﻣﻘﺪار ‪ x‬در ﻫﺮ ﻣﺮﺣﻠﻪ از ﻳﻚ ﭘﺎراﻣﺘﺮ ﺗﺼﻤﻴﻢ ﮔﻴﺮي ﺑﺮاي ﺗﻌﻴﻴﻦ اﻳﻨﻜﻪ ﻛﺪام ﻳﻚ از دو ﭘﻴﻜﺴﻞ ﺑﻪ داﻳﺮه ﻧﺰدﻳﻜﺘﺮﻧﺪ‪،‬‬
‫اﺳﺘﻔﺎده ﻛﻨﻴﻢ‪.‬‬
‫ﺑﺮاي اﺳﺘﻔﺎده از روش ﻧﻘﻄﻪ ﻣﻴﺎﻧﻲ‪ ،‬ﺗﺎﺑﻊ داﻳﺮه را ﺑﻪ ﺻﻮرت ‪ f ( x, y ) = x 2 + y 2 − r 2‬ﺗﻌﺮﻳﻒ ﻣﻴﻜﻨﻴﻢ ‪ .‬در اﻳﻦ ﺣﺎﻟﺖ ﻫﺮ‬
‫ﻧﻘﻄﻪ روي ﻣﺤﻴﻂ داﻳﺮه ﻣﻘﺪار ﺗﺎﺑﻊ ‪ f‬را ﺑﺮاﺑﺮ ‪ 0‬ﻣﻴﻜﻨﺪ‪ .‬و اﮔﺮ ﻧﻘﻄﻪ داﺧﻞ داﻳﺮه ﺑﺎﺷﺪ ﻣﻘﺪار ‪ f‬ﻣﻨﻔﻲ و در ﺻﻮرت ﺧﺎرج‬
‫ﺑﻮدن ﻧﻘﻄﻪ از داﻳﺮه اﻳﻦ ﻣﻘﺪار ﻣﺜﺒﺖ ﺧﻮاﻫﺪ ﺑﻮد‪ .‬ﺑﻨﺎﺑﺮاﻳﻦ ﺑﻄﻮر ﺧﻼﺻﻪ دارﻳﻢ ‪:‬‬
‫‪⎧< 0‬‬ ‫‪Point is inside the Circle boundary‬‬
‫⎪‬
‫‪f ( x, y ) ⎨ = 0‬‬ ‫‪Point is on the Circle boundary‬‬
‫‪⎪> 0‬‬
‫⎩‬ ‫‪Point is outside the Circle boundary‬‬

‫ﺷﻜﻞ زﻳﺮ دو ﭘﻴﻜﺴﻞ ﻛﺎﻧﺪﻳﺪ ﺷﺪه در ﺳﺘﻮن ‪ xk + 1‬را ﻧﺸﺎن ﻣﻴﺪﻫﺪ ‪.‬‬

‫ﻓﺮض ﻛﻨﻴﺪ ﭘﻴﻜﺴﻞ ) ‪ ( xk , yk‬را اﻧﺘﺨﺎب ﻛﺮده اﻳﻢ‪ ،‬ﺣﺎل در ﻣﺮﺣﻠﻪ ﺑﻌﺪي ﺑﺎﻳﺪ ﻳﻜﻲ از دو ﭘﻴﻜﺴﻞ ) ‪ ( xk + 1, yk‬ﻳﺎ‬
‫‪1‬‬
‫)‪ ( xk + 1, yk − 1‬را اﻧﺘﺨﺎب ﻛﻨﻴﻢ‪ .‬ﺗﺎﺑﻊ داﻳﺮه ﺑﺮاي ﻧﻘﻄﻪ ﻣﻴﺎﻧﻲ ﺑﻴﻦ دو ﭘﻴﻜﺴﻞ ﻳﻌﻨﻲ ﻧﻘﻄﻪ ) ‪ ( xk + 1, yk −‬را‬
‫‪2‬‬
‫ﻣﺤﺎﺳﺒﻪ ﻣﻴﻜﻨﻴﻢ و دارﻳﻢ ‪:‬‬
‫‪1‬‬ ‫‪1‬‬
‫‪pk = f circle ( xk + 1, yk − ) = ( xk + 1) 2 + ( yk − ) 2 − r 2‬‬
‫‪2‬‬ ‫‪2‬‬
‫ﺣﺎل اﮔﺮ ‪ pk‬ﻣﺜﺒﺖ ﺑﻮد‪ ،‬ﭘﻴﻜﺴﻞ ﭘﺎﻳﻴﻨﻲ ﻳﺎ )‪ ( xk + 1, yk − 1‬اﻧﺘﺨﺎب ﻣﻴﺸﻮد ‪ .‬در ﻏﻴﺮ اﻳﻦ ﺻﻮرت ﭘﻴﻜﺴﻞ ﺑﺎﻻﻳﻲ ﻳﺎ ﻫﻤﺎن‬
‫) ‪ ( xk + 1, yk‬اﻧﺘﺨﺎب ﻣﻲ ﺷﻮد‪.‬‬
‫ﺑﺮاي راﺣﺘﻲ ﻛﺎر ﻳﻚ ﻓﺮﻣﻮل ﺑﺎزﮔﺸﺘﻲ ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ‪ pk‬ﺑﺪﺳﺖ ﻣﻲ آورﻳﻢ‪.‬‬
‫‪1‬‬ ‫‪1‬‬
‫‪pk +1 = f circle ( xk + 2, yk +1 − ) = ( xk + 2) 2 + ( yk +1 − ) 2 − r 2‬‬
‫‪2‬‬ ‫‪2‬‬
‫ﻛﻪ در آن ﻣﻘﺪار ‪ yk +1‬ﺑﺴﺘﻪ ﺑﻪ ﻋﻼﻣﺖ ‪ pk‬ﻣﻴﺘﻮاﻧﺪ ﻳﻜﻲ از دو ﻣﻘﺪار ‪ yk‬ﻳﺎ ‪ yk − 1‬ﺑﺎﺷﺪ‪ .‬ﺑﺎ ﻣﻘﺎﻳﺴﻪ ‪ pk‬و ‪ pk +1‬دارﻳﻢ ‪:‬‬
‫‪⎧ p + 2 xk + 3‬‬ ‫)‪if yk +1 = yk ;( Pk > 0‬‬
‫‪pk +1 = ⎨ k‬‬
‫‪⎩ pk + 2 xk − 2 yk + 5‬‬ ‫)‪if yk +1 = yk − 1 ;( Pk < 0‬‬
‫ﻣﻘﺪار اوﻟﻴﻪ ﭘﺎراﻣﺘﺮ ﺗﺼﻤﻴﻢ ﮔﻴﺮي ﺑﻪ ازاي ﻧﻘﻄﻪ ﺷﺮوع ) ‪ (0, r‬ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ ‪:‬‬
9 ‫ ﺗﺮﺳﻴﻢ اﺷﻜﺎل ﭘﺎﻳﻪ ﻫﻨﺪﺳﻲ‬: ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي‬

1 1 5
p0 = f circle (1, r − ) = 1 + ( r − ) 2 − r 2 = − r
2 2 4
.‫ را ﻧﺸﺎن ﻣﻴﺪﻫﺪ‬C++ ‫روﻳﻪ زﻳﺮ ﭘﻴﺎده ﺳﺎزي اﻳﻦ اﻟﮕﻮرﻳﺘﻢ در زﺑﺎن‬
void midpoint_circle(const int h,const int k,const int r)
{
int color=getcolor( );
int x=0;
int y=r;
int p=(1-r);
do {
putpixel((h+x),(k+y),color);
putpixel((h+y),(k+x),color);
putpixel((h+y),(k-x),color);
putpixel((h+x),(k-y),color);
putpixel((h-x),(k-y),color);
putpixel((h-y),(k-x),color);
putpixel((h-y),(k+x),color);
putpixel((h-x),(k+y),color);
x++;
if(p<0)
p+=((2*x)+1);
else {
y--;
p+=((2*(x-y))+1);}
}
while(x<=y);
}
: ‫اﻟﮕﻮرﻳﺘﻢ رﺳﻢ ﺑﻴﻀﻲ‬
‫ اﺷﻜﺎل ﺑﻴﻀﻴﻮار را ﻣﻲ ﺗﻮان ﺑﺎ اﺻﻼح اﻟﮕﻮرﻳﺘﻢ‬، ‫ ﺑﻨﺎﺑﺮاﻳﻦ‬. ‫ ﺑﻴﻀﻲ ﻳﻚ داﻳﺮه ﻛﺸﻴﺪه ﺷﺪه اﺳﺖ‬، ‫در ﻳﻚ ﺗﻌﺮﻳﻒ ﻣﻘﺪﻣﺎﺗﻲ‬
. ‫رﺳﻢ داﻳﺮه رﺳﻢ ﻛﺮد‬

: ‫ﺧﻮاص ﺑﻴﻀﻲ‬
‫ﻳﻚ ﺑﻴﻀﻲ ﺑﺼﻮرت ﻣﺠﻤﻮﻋﻪ اي از ﻧﻘﺎط ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮد ﻛﻪ ﻣﺠﻤﻮع ﻓﺎﺻﻠﻪ آﻧﻬﺎ از دو ﻧﻘﻄﻪ ﺛﺎﺑﺖ ) ﻛﺎﻧﻮن ﻫﺎ ( ﻣﻘﺪاري ﺛﺎﺑﺖ‬
. ‫اﺳﺖ‬

d1 + d 2 = Constant
F1 = ( x1 , y1 ), F2 = ( x2 , y2 )
(x-x1 ) 2 + ( y − y1 ) 2 + ( x − x2 ) 2 + ( y − y2 ) 2 = constant
‫‪10‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﺗﺮﺳﻴﻢ اﺷﻜﺎل ﭘﺎﻳﻪ ﻫﻨﺪﺳﻲ‬

‫ﻣﻌﺎدﻟﻪ ﺑﻴﻀﻲ را ﺑﺎ اﺳﺘﻔﺎده از رواﺑﻂ ﺑﺎﻻ ﺑﻪ ﺻﻮرت زﻳﺮ ﻫﻢ ﻣﻲ ﺗﻮان ﻧﻮﺷﺖ‪:‬‬

‫‪Ax 2 + By 2 + Cxy + Dx + Ey + F = 0‬‬


‫ﻛﻪ در آن ﺿﺮاﻳﺐ ‪ A,B.C.D.E.F‬ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻣﺨﺘﺼﺎت ﻧﻘﺎط ﻛﺎﻧﻮﻧﻲ و اﻧﺪازه ﻗﻄﺮ اﺻﻠﻲ و ﻓﺮﻋﻲ ﺑﻴﻀﻲ ﻣﺸﺨﺺ ﻣﻲ ﺷﻮد‬
‫‪ .‬ﻗﻄﺮ اﺻﻠﻲ ‪ ،‬ﺧﻂ ﻣﺴﺘﻘﻴﻤﻲ اﺳﺖ ﻛﻪ از دو ﻛﺎﻧﻮن ﺑﻴﻀﻲ ﻣﻲ ﮔﺬرد و ﻗﻄﺮ دوم ﻋﻤﻮد ﻣﻨﺼﻒ ﻗﻄﺮ اول اﺳﺖ ‪ .‬ﻳﻚ روش‬
‫ﺑﺮاي ﻣﺸﺨﺺ ﻛﺮدن ﺑﻴﻀﻲ داﺷﺘﻦ ﻣﺨﺘﺼﺎت ﻧﻘﺎط ﻛﺎﻧﻮﻧﻲ و ﻣﺨﺘﺼﺎت ﻳﻚ ﻧﻘﻄﻪ روي ﻣﺤﻴﻂ ﺑﻴﻀﻲ اﺳﺖ ‪ .‬ﺑﺎ اﻳﻦ ﺳﻪ‬
‫ﻣﺨﺘﺼﺎت ﻣﻲ ﺗﻮاﻧﻴﻢ ﻣﻘﺪار ﺛﺎﺑﺖ ﻣﻌﺎدﻟﻪ را ﻣﺤﺎﺳﺒﻪ ﻛﺮده و ﺳﭙﺲ ﺿﺮاﻳﺐ ﻣﻌﺎدﻟﻪ را ﺑﺪﺳﺖ آورﻳﻢ ‪ .‬در ﺻﻮرﺗﻲ ﻛﻪ ﻗﻄﺮ اﺻﻠﻲ‬
‫و ﻓﺮﻋﻲ ﺑﻴﻀﻲ ﻫﻢ ﺟﻬﺖ ﻣﺤﻮرﻫﺎي ﻣﺨﺘﺼﺎت ﺑﺎﺷﻨﺪ ‪ ،‬ﻣﻌﺎدﻟﻪ ﺑﻴﻀﻲ ﺑﺴﻴﺎر ﺳﺎده ﺧﻮاﻫﺪ ﺑﻮد ‪ .‬ﺷﻜﻞ ﺑﻴﻀﻲ اﺳﺘﺎﻧﺪارد ﺑﺼﻮرت‬
‫ﺷﻜﻞ ﻣﻘﺎﺑﻞ ﺑﻮده و ﻣﻌﺎدﻟﻪ آﻧﺮا ﻣﻴﺘﻮان ﺑﺼﻮرت زﻳﺮ ﻧﻮﺷﺖ‪:‬‬

‫‪x − xc 2‬‬ ‫‪y − yc 2‬‬


‫(‬ ‫(‪) +‬‬ ‫‪) =1‬‬
‫‪rx‬‬ ‫‪ry‬‬

‫‪⎧ x = xc + rx cos θ‬‬


‫⎨ ﻧﻮﺷﺘﻪ ﻣﻴﺸﻮد‪.‬‬ ‫در ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ ﻧﻴﺰ اﻳﻦ ﻣﻌﺎدﻟﻪ ﺑﺼﻮرت‬
‫‪⎩ y = yc + ry sin θ‬‬
‫ﻫﻤﭽﻨﻴﻦ ﻣﻴﺘﻮان ﺑﺎ در ﻧﻈﺮ ﮔﺮﻓﺘﻦ ﺗﻘﺎرن ﺑﻴﻀﻲ ﻣﻴﺰان ﻣﺤﺎﺳﺒﺎت را ﻛﺎﻫﺶ داد‪ .‬ﺑﺮ ﺧﻼف داﻳﺮه ﻛﻪ در ﻫﺮ ﻳﻚ ﻫﺸﺘﻢ‬
‫ﻣﺘﻘﺎرن اﺳﺖ‪ ،‬ﻳﻚ ﺑﻴﻀﻲ اﺳﺘﺎﻧﺪارد در ﻫﺮ ﻳﻚ ﭼﻬﺎرم ﻣﺘﻘﺎرن ﺧﻮاﻫﺪ ﺑﻮد‪ ،‬ﺑﻨﺎﺑﺮاﻳﻦ ﺑﺎﻳﺪ ﺑﻴﻀﻲ رﺑﻊ اول رﺳﻢ ﻛﺮده و ﺳﭙﺲ‬
‫ﺑﺎ اﺳﺘﻔﺎده از ﺗﻘﺎرن‪ ،‬ﺑﻴﻀﻲ را ﻛﺎﻣﻞ ﻛﺮد‪.‬‬
‫اﻟﮕﻮرﻳﺘﻢ زاوﻳﻪ ﺑﺮاي رﺳﻢ ﺑﻴﻀﻲ‪:‬‬
‫ﭘﻴﺎده ﺳﺎزي روش زاوﻳﻪ در ‪ C++‬ﺑﺼﻮرت زﻳﺮ اﺳﺖ‪:‬‬
‫)‪void trigonometric_ellipse(const int h,const int k,const int rx,const int ry‬‬
‫{‬
‫;) (‪int color=getcolor‬‬
‫;‪float x=0‬‬
‫;‪float y=ry‬‬
‫;‪float angle=0‬‬
‫;‪float range=rx‬‬
‫‪do‬‬
‫{‬
‫;)‪putpixel((int)(h+x+0.5),(int)(k+y+0.5),color‬‬
‫;)‪putpixel((int)(h+x+0.5),(int)(k-y+0.5),color‬‬
‫;)‪putpixel((int)(h-x+0.5),(int)(k-y+0.5),color‬‬
‫;)‪putpixel((int)(h-x+0.5),(int)(k+y+0.5),color‬‬
‫;‪angle+=0.05‬‬
‫;))‪x=(rx*cos(angle‬‬
‫;))‪y=(ry*sin(angle‬‬
‫}‬
‫;)‪while(angle<=range‬‬
‫}‬
‫‪11‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﺗﺮﺳﻴﻢ اﺷﻜﺎل ﭘﺎﻳﻪ ﻫﻨﺪﺳﻲ‬

‫اﻟﮕﻮرﻳﺘﻢ ﻧﻘﻄﻪ ﻣﻴﺎﻧﻲ ﺑﺮاي رﺳﻢ ﺑﻴﻀﻲ ‪:‬‬


‫اﻳﻦ اﻟﮕﻮرﻳﺘﻢ ﻳﻚ روش رﺳﻢ ﺑﻴﻀﻲ در ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي اﺳﺖ‪ .‬اﻳﻦ اﻟﮕﻮرﻳﺘﻢ ﺗﻐﻴﻴﺮ ﻳﺎﻓﺘﻪ اﻟﮕﻮرﻳﺘﻢ ﺑﺮﺳﻨﻬﺎم اﺳﺖ‪ .‬ﻣﺰﻳﺖ‬
‫اﻳﻦ روش ﺗﻐﻴﻴﺮ ﻳﺎﻓﺘﻪ اﻳﻦ اﺳﺖ ﻛﻪ در ﺣﻠﻘﻪ ﺑﺮﻧﺎﻣﻪ ﺗﻨﻬﺎ ﺑﻪ ﻋﻤﻞ ﺟﻤﻊ ﻧﻴﺎز اﺳﺖ ﻛﻪ ﻣﻨﺠﺮ ﺑﻪ ﭘﻴﺎده ﺳﺎزي آﺳﺎن و ﺳﺮﻳﻊ آن‬
‫در ﺗﻤﺎم ﭘﺮدازﻧﺪه ﻫﺎ ﻣﻴﺸﻮد‪.‬‬
‫اﺟﺎزه دﻫﻴﺪ ﺗﻨﻬﺎ ﺑﻪ ﻳﻚ ﭼﻬﺎرم اول ﺑﻴﻀﻲ ﻓﻜﺮ ﻛﻨﻴﻢ‪ .‬ﻣﻨﺤﻨﻲ ﺧﻮد ﺑﻪ دو ﻧﺎﺣﻴﻪ ﺗﻘﺴﻴﻢ ﻣﻴﺸﻮد‪ .‬در ﻧﺎﺣﻴﻪ اول‪ ،‬ﺷﻴﺐ ﻣﻨﺤﻨﻲ‬
‫ﺑﻴﺸﺘﺮ از ‪ -1‬اﺳﺖ‪ .‬در ﺣﺎﻟﻴﻜﻪ در ﻧﺎﺣﻴﻪ دوم ﺷﻴﺐ ﻛﻤﺘﺮ از ‪ -1‬اﺳﺖ‪.‬‬

‫ﺑﻪ ﻣﻌﺎدﻟﻪ ﻛﻠﻲ ﺑﻴﻀﻲ ﺗﻮﺟﻪ ﻛﻨﻴﺪ‪:‬‬


‫‪b x +a y −a b =0‬‬
‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2 2‬‬

‫ﻛﻪ در آن ‪ a‬ﺷﻌﺎع اﻓﻘﻲ و ‪ b‬ﺷﻌﺎع ﻋﻤﻮدي اﺳﺖ‪ .‬ﻣﺎ ﻣﻲ ﺗﻮاﻧﻴﻢ از ﻫﻤﻴﻦ ﺗﺎﺑﻊ ﺑﺮاي رﺳﻢ ﺑﻴﻀﻲ اﺳﺘﻔﺎده ﻛﻨﻴﻢ‪.‬‬
‫در ﻧﺎﺣﻴﻪ اول ﻛﻪ راﺑﻄﻪ ‪ dy / dx > −1‬ﺑﺮﻗﺮار اﺳﺖ ‪:‬‬

‫در ﻫﺮ ﻣﺮﺣﻠﻪ ﻣﺆﻟﻔﻪ ‪ x‬ﻳﻚ واﺣﺪ اﻓﺰاﻳﺶ ﻣﻲ ﻳﺎﺑﺪ‪ .‬ﺑﻪ ﻋﺒﺎرﺗﻲ دارﻳﻢ ‪xk +1 = xk + 1 :‬‬
‫دارﻳﻢ ‪ yk +1 = yk‬ﻫﺮ ﮔﺎه ﭘﻴﻜﺴﻞ ‪ E‬اﻧﺘﺨﺎب ﺷﻮد و دارﻳﻢ ‪ yk +1 = yk − 1‬ﻫﺮ ﮔﺎه ﭘﻴﻜﺴﻞ ‪ SE‬اﻧﺘﺨﺎب ﺷﻮد‪ .‬ﺑﺮاي اﻳﻨﻜﻪ‬
‫ﺑﺘﻮاﻧﻴﻢ ﺑﻴﻦ اﻧﺘﺨﺎب دو ﭘﻴﻜﺴﻞ ‪ S‬و ‪ SE‬ﺗﺼﻤﻴﻢ ﺑﮕﻴﺮﻳﻢ‪ ،‬ﻧﻘﻄﻪ ﻣﻴﺎﻧﻲ دو ﭘﻴﻜﺴﻞ ﻛﺎﻧﺪﻳﺪ را در ﻣﻌﺎدﻟﻪ ﻗﺮار ﻣﻴﺪﻫﻴﻢ‪ .‬ﺗﺎﺑﻊ‬
‫ﭘﻴﺸﮕﻮي ‪ Pk‬ﺑﺼﻮرت زﻳﺮ ﺗﻌﺮﻳﻒ ﻣﻴﺸﻮد‪:‬‬

‫‪Pk = f ( xk + 1, yk − 1 2) = b 2 ( xk + 1) 2 + a 2 ( yk − 1 2 ) 2 − a 2b 2 = b 2 ( xk 2 + 2 xk + 1) + a 2 ( yk 2 − yk + 1 4 ) − a 2b 2‬‬
‫‪if Pk < 0, select E:‬‬
‫‪Pk +1E = f ( xk + 2, yk − 1 2 ) = b 2 ( xk + 2) 2 + a 2 ( yk − 1 2 ) 2 − a 2b 2 = b 2 ( xk 2 + 4 xk + 4) + a 2 ( yk 2 − yk + 1 4 ) − a 2b 2‬‬
‫)‪∆Pk E = Pk +1E − Pk = b 2 (2 xk + 3‬‬
12 ‫ ﺗﺮﺳﻴﻢ اﺷﻜﺎل ﭘﺎﻳﻪ ﻫﻨﺪﺳﻲ‬: ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي‬

if Pk > 0, select SE:


Pk +!SE = f ( xk + 2, yk − 3 2 ) = b 2 ( xk + 2)2 + a 2 ( yk − 3 2 ) 2 − a 2b 2 = b 2 ( xk 2 + 4 xk + 4) + a 2 ( yk 2 − 3 yk + 9 4 ) − a 2b 2
∆Pk SE = Pk +1SE − Pk = b 2 (2 xk + 3) − 2a 2 ( yk − 1)
calculate the change of ∆Pk :
if E is selected :
∆Pk +1E = b 2 (2 xk + 5)
∆ 2 Pk E = ∆Pk +1E − ∆Pk E = 2b 2

∆Pk +1SE = b 2 (2 xk + 5) − 2a 2 ( yk − 1)
∆ 2 Pk SE = ∆Pk +1SE − ∆Pk SE = 2b 2

if SE is selected :
∆Pk +1E = b 2 (2 xk + 5)
∆ 2 Pk E = ∆Pk +1E − ∆Pk E = 2b 2

∆Pk +1SE = b 2 (2 xk + 5) − 2a 2 ( yk − 1)
∆ 2 Pk SE = ∆Pk +1SE − ∆Pk SE = 2( a 2 + b 2 )

Initial Value :
x0 = 0, y0 = b, P0 = b 2 + 1 4 a 2 (1 − 4b)
∆P0 E = 3b 2 , ∆P0 SE = 3b 2 − 2a 2 (b − 1)

‫ در ﻫﺮ‬y ‫ ﺑﺎ اﻳﻦ ﺗﻔﺎوت ﻛﻪ در ﻧﺎﺣﻴﻪ دوم ﻣﻘﺪار‬،‫ ﺗﻤﺎم ﻣﺤﺎﺳﺒﺎت ﻣﺎﻧﻨﺪ ﻧﺎﺣﻴﻪ اول اﺳﺖ‬dy / dx < −1 ‫در ﻧﺎﺣﻴﻪ دوم ﻛﻪ‬
.‫ واﺣﺪ ﻛﺎﻫﺶ ﻣﻲ ﻳﺎﺑﺪ‬1

yk +1 = yk − 1 : ‫ ﺑﻪ ﻋﺒﺎرﺗﻲ دارﻳﻢ‬.‫ ﻳﻚ واﺣﺪ ﻛﺎﻫﺶ ﻣﻲ ﻳﺎﺑﺪ‬y ‫در ﻫﺮ ﻣﺮﺣﻠﻪ ﻣﺆﻟﻔﻪ‬


. xk +1 = xk + 1 : ‫ اﻧﺘﺨﺎب ﺷﻮد دارﻳﻢ‬SE ‫ و اﮔﺮ‬xk +1 = xk : ‫ اﻧﺘﺨﺎب ﺷﻮد دارﻳﻢ‬S ‫اﮔﺮ‬

Pk = f ( xk + 1 2 , yk − 1) = b 2 ( xk + 1 2 ) 2 + a 2 ( yk − 1) 2 − a 2b 2 = b 2 ( xk 2 + xk + 1 4 ) + a 2 ( yk 2 − 2 yk + 1) − a 2b 2
if Pk > 0, select S:
Pk +1S = f ( xk + 1 2 , yk − 2) = b 2 ( xk + 1 2 ) 2 + a 2 ( yk − 2) 2 − a 2b 2 = b 2 ( xk 2 + xk + 1 4) + a 2 ( yk 2 − 4 yk + 4) − a 2b 2
∆Pk S = Pk +1S − Pk = a 2 (3 − 2 yk )
13 ‫ ﺗﺮﺳﻴﻢ اﺷﻜﺎل ﭘﺎﻳﻪ ﻫﻨﺪﺳﻲ‬: ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي‬

if Pk < 0, select SE:


Pk +1SE = f ( xk + 3 2 , yk − 2) = b 2 ( xk + 3 2 ) 2 + a 2 ( yk − 2) 2 − a 2b 2 = b 2 ( xk 2 + 3 xk + 9 4 ) + a 2 ( yk 2 − 4 yk + 4) − a 2b 2
∆Pk SE = Pk +1SE − Pk = 2b 2 ( xk + 1) + a 2 (3 − 2 yk )
calculate the change of ∆Pk :
if S is selected :
∆Pk +1S = a 2 (5 − 2 yk )
∆ 2 Pk S = ∆Pk +1S − ∆Pk S = 2a 2

∆Pk +1SE = 2b 2 ( xk + 1) + a 2 (5 − 2 yk )
∆ 2 Pk SE = ∆Pk +1SE − ∆Pk SE = 2a 2

if SE is selected :
∆Pk +1S = a 2 (5 − 2 yk )
∆ 2 Pk S = ∆Pk +1S − ∆Pk E = 2a 2

∆Pk +1SE = 2b 2 (2 xk + 2) − a 2 (5 − 2 yk )
∆ 2 Pk SE = ∆Pk +1SE − ∆Pk SE = 2( a 2 + b 2 )

:‫درﻣﺮز ﺑﻴﻦ دو ﻧﺎﺣﻴﻪ دارﻳﻢ‬


dy −bx
f ( x, y ) = 0, = .
dx a 1 − x 2 / a 2
2

a2 b2
when dy / dx = −1, x = and y = .
a 2 + b2 a 2 + b2
a2 b2
At region1, dy / dx > −1, x < and y > , therefore
a2 + b2 a2 + b2
⎛ 2a 2 ⎞ ⎛ b2 ⎞
∆Pk SE < b 2 ⎜ + 3 ⎟ − 2a 2 ⎜ − 1⎟ = 2a 2 + 3b 2
⎝ a +b ⎠ ⎝ a +b ⎠
2 2 2 2

Initial Value at region2 :


a2 b2
x0 = and y0 =
a 2 + b2 a 2 + b2
.‫ ﺑﺼﻮرت زﻳﺮ ﭘﻴﺎده ﺳﺎزي ﻣﻴﺸﻮد‬C++ ‫اﻳﻦ اﻟﮕﻮرﻳﺘﻢ در زﺑﺎن‬

void midpoint_ellipse(const int h,const int k,const int a,const int b)


{
float aa=(a*a);
float bb=(b*b);
float aa2=(aa*2);
floatbb2=(bb*2);
float x=0;
14 ‫ ﺗﺮﺳﻴﻢ اﺷﻜﺎل ﭘﺎﻳﻪ ﻫﻨﺪﺳﻲ‬: ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي‬

float y=b;
float fx=0;
float fy=(aa2*b);
float p=(int)(bb-(aa*b)+(0.25*aa)+0.5);
putpixel((h+x),(k+y),color);
putpixel((h+x),(k-y),color);
putpixel((h-x),(k-y),color);
putpixel((h-x),(k+y),color);
while(fx<fy)
{
x++;
fx+=bb2;
if(p<0)
p+=(fx+bb);
else {
y--;
fy-=aa2;
p+=(fx+bb-fy);
}
putpixel((h+x),(k+y),color);
putpixel((h+x),(k-y),color);
putpixel((h-x),(k-y),color);
putpixel((h-x),(k+y),color);
}
p=(int)((bb*(x+0.5)*(x+0.5))+(aa*(y-1)*(y-1))-(aa*bb)+0.5);
while(y>0) {
y--;
fy-=aa2;
if(p>=0)
p+=(aa-fy);
else {
x++;
fx+=bb2;
p+=(fx+aa-fy);
}
putpixel((h+x),(k+y),color);
putpixel((h+x),(k-y),color);
putpixel((h-x),(k-y),color);
putpixel((h-x),(k+y),color);
}
}
‫‪15‬‬ ‫‪15‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﻧﻤﺎﻳﻲ ﻛﻠﻲ از ﺳﻴﺴﺘﻢ ﻫﺎي ﮔﺮاﻓﻴﻜﻲ‬

‫ﻓﺼﻞ دوم ‪:‬‬

‫ﻧﻤﺎﻳﻲ ﻛﻠﻲ از ﺳﻴﺴﺘﻤﻬﺎي‬


‫ﮔﺮاﻓﻴﻜﻲ‬
‫ﻣﺒﺎﺣﺚ اﻳﻦ ﻓﺼﻞ‪:‬‬
‫™ اﻧﻮاع ﺳﻴﺴﺘﻢ ﻫﺎي ﻧﻤﺎﻳﺶ‬
‫‪ o‬ﺳﻴﺴﺘﻢ ﻫﺎي ‪Random Scan‬‬
‫‪ o‬ﺳﻴﺴﺘﻢ ﻫﺎي ‪Raster Scan‬‬
‫™ ﺗﻜﻨﻮﻟﻮژي ﻫﺎي ﻧﻤﺎﻳﺶ ﮔﺮ ﻫﺎ‬
‫• ﻧﻤﺎﻳﺸﮕﺮ ﻫﺎي ﻏﻴﺮ ‪Flat‬‬
‫ƒ ﻧﻤﺎﻳﺸﮕﺮ ﻫﺎي ‪CRT‬‬
‫ƒ ﻧﻤﺎﻳﺸﮕﺮ ﻫﺎي ‪DVST‬‬
‫• ﻧﻤﺎﻳﺸﮕﺮﻫﺎي ‪Flat‬‬
‫ƒ ﻧﻤﺎﻳﺸﮕﺮﻫﺎي ﭘﻼﺳﻤﺎ‬
‫ƒ ﻧﻤﺎﻳﺸﮕﺮﻫﺎي ‪LCD‬‬
‫ƒ ﻧﻤﺎﻳﺸﮕﺮ ﻫﺎي ‪EL‬‬
‫‪16‬‬ ‫‪16‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﻧﻤﺎﻳﻲ ﻛﻠﻲ از ﺳﻴﺴﺘﻢ ﻫﺎي ﮔﺮاﻓﻴﻜﻲ‬

‫ﺑﻪ ﻃﻮر ﻣﺸﺨﺺ‪ ،‬اوﻟﻴﻦ و اﺻﻠﻲ ﺗﺮﻳﻦ دﺳﺘﮕﺎه ﺧﺮوﺟﻲ در ﻳﻚ ﺳﻴﺴﺘﻢ ﮔﺮاﻓﻴﻜﻲ ﻧﻤﺎﻳﺸﮕﺮﻫﺎي وﻳﺪﺋﻮﻳﻲ ﻫﺴﺘﻨﺪ‪ .‬ﻋﻤﻠﻜﺮد‬
‫اﻛﺜﺮ ﻧﻤﺎﻳﺸﮕﺮﻫﺎي وﻳﺪﺋﻮﻳﻲ ﺑﺮ ﭘﺎﻳﻪ ﻃﺮاﺣﻲ ‪ CRT‬اﺳﺖ‪ ،‬اﻣﺎ ﻫﻢ اﻛﻨﻮن ﺗﻜﻨﻮﻟﻮژي ﻫﺎي دﻳﮕﺮي ﻧﻴﺰ وﺟﻮد دارﻧﺪ ﻛﻪ ﻛﺎرﺑﺮد‬
‫ﻓﺮاواﻧﻲ ﻫﻢ دارﻧﺪ‪.‬‬
‫دو روش در رﺳﻢ ﺗﺼﺎوﻳﺮ وﺟﻮد دارد ‪:‬‬
‫‪ -‬روش ﺗﺮﺳﻴﻢ ﺑﺮداري ‪.‬‬
‫‪ -‬روش ﺗﺮﺳﻴﻢ راﺳﺘﺮ ‪.‬‬

‫ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻫﺎي ‪Raster – Scan‬‬


‫اﻛﺜﺮ ﻣﺎﻧﻴﺘﻮرﻫﺎ از ﺳﻴﺴﺘﻢ ‪ raster- scan‬اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻨﺪ‪ .‬در اﻳﻦ ﺳﻴﺴﺘﻢ ﭘﺮﺗﻮ اﻟﻜﺘﺮوﻧﻲ ﻛﻞ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ را ﺑﺼﻮرت‬
‫اﻓﻘﻲ و ﺧﻂ ﺑﻪ ﺧﻂ از ﭼﭗ ﺑﻪ راﺳﺖ و از ﺑﺎﻻ ﺑﻪ ﭘﺎﻳﻴﻦ ﻃﻲ ﻣﻴﻜﻨﺪ‪ .‬در ﻫﻤﺎن ﺣﺎل ﻛﻪ ﭘﺮﺗﻮ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ را ﻃﻲ ﻣﻴﻜﻨﺪ‪،‬‬
‫ﺷﺪت روﺷﻨﺎﻳﻲ ﭘﺮﺗﻮ ﺧﺎﻣﻮش روﺷﻦ ﻣﻴﺸﻮد ﺗﺎ ﻳﻚ اﻟﮕﻮ از ﻧﻘﺎط روﺷﻦ اﻳﺠﺎد ﻛﻨﺪ‪ .‬اﻳﻦ اﻟﮕﻮ در ﺣﺎﻓﻈﻪ اي ﺑﻪ ﻧﺎم ‪Frame‬‬
‫‪ Buffer‬ذﺧﻴﺮه ﻣﻴﺸﻮد‪ .‬ﺳﭙﺲ اﻳﻦ اﻟﮕﻮ ﺑﺮ روي ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻧﻤﺎﻳﺶ داده ﻣﻴﺸﻮد‪ .‬ﺷﻜﻞ زﻳﺮ ﻋﻤﻠﻜﺮد ﺳﻴﺴﺘﻢ – ‪raster‬‬
‫‪ scan‬را ﻧﺸﺎن ﻣﻴﺪﻫﺪ‪.‬‬

‫ﺗﻠﻮﻳﺰﻳﻮﻧﻬﺎ و ﭼﺎﭘﮕﺮﻫﺎ از اﻳﻦ ﺳﻴﺴﺘﻢ اﺳﺘﻔﺎده ﻣﻴﻜﻨﻨﺪ‪ .‬ﻫﺮ ﻧﻘﻄﻪ روﺷﻦ روي ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ را ﻳﻚ ﭘﻴﻜﺴﻞ ﻣﻴﮕﻮﻳﻨﺪ‪.‬‬
‫روﺷﻨﺎﻳﻲ ﻫﺮ ﭘﻴﻜﺴﻞ ﺑﻪ ﺳﻴﺴﺘﻢ ﮔﺮاﻓﻴﻜﻲ ﺑﺴﺘﮕﻲ دارد‪ .‬در ﻳﻚ ﺳﻴﺴﺘﻢ ﺳﻴﺎه ﺳﻔﻴﺪ‪ ،‬ﺗﻨﻬﺎ از ﻳﻚ ﺑﻴﺖ ﺑﺮاي روﺷﻨﺎﻳﻲ ﭘﻴﻜﺴﻞ‬
‫اﺳﺘﻔﺎده ﻣﻴﺸﻮد‪ .‬ﺑﻴﺖ ‪ 1‬ﺑﻪ ﻣﻌﻨﺎي روﺷﻦ ﺑﻮدن و ﺑﻴﺖ ‪ 0‬ﺑﻪ ﻣﻌﻨﺎي ﺧﺎﻣﻮش ﺑﻮدن ﭘﻴﻜﺴﻞ اﺳﺖ‪ .‬در ﺳﻴﺴﺘﻢ ﻫﺎي ﮔﺮاﻓﻴﻚ‬
‫ﺑﺎﻻ ﻣﻌﻤﻮﻻ از ‪ 24‬ﺑﻴﺖ ﺑﻪ ﺑﺎﻻ اﺳﺘﻔﺎده ﻣﻴﺸﻮد‪ .‬ﻫﻤﭽﻨﻴﻦ ﺗﺎزه ﺳﺎزي ﺑﺎ ﺳﺮﻋﺘﻲ ﺣﺪود ‪ 60‬ﺗﺎ ‪ 80‬ﻓﺮم در ﺛﺎﻧﻴﻪ اﻧﺠﺎم ﻣﻴﺸﻮد‪.‬‬

‫ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻫﺎي ‪: Random – scan‬‬


‫در اﻳﻦ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻫﺎ‪ ،‬ﭘﺮﺗﻮ اﻟﻜﺘﺮوﻧﻲ ﺗﻤﺎم ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ را ﻃﻲ ﻧﻤﻴﻜﻨﺪ‪ .‬ﺑﻠﻜﻪ ﭘﺮﺗﻮ ﺗﻨﻬﺎ ﺑﻪ آن ﻗﺴﻤﺖ از ﺻﻔﺤﻪ ﻛﻪ ﻗﺮار‬
‫اﺳﺖ ﺗﺼﻮﻳﺮ در آن رﺳﻢ ﺷﻮد ﻫﺪاﻳﺖ ﻣﻴﺸﻮد‪.‬‬
‫ﺑﻪ اﻳﻦ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻫﺎ‪ ،‬ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻫﺎي ﺑﺮداري ‪ Vector scan‬ﻧﻴﺰ ﮔﻔﺘﻪ ﻣﻴﺸﻮد‪ .‬ﻗﻠﻢ رﺳﺎم از اﻳﻦ ﺳﻴﺴﺘﻢ اﺳﺘﻔﺎده‬
‫ﻣﻴﻜﻨﺪ‪ .‬ﺳﺮﻋﺖ ﺗﺎزه ﺳﺎزي ﺑﺴﺘﮕﻲ ﺑﻪ ﺗﻌﺪاد ﺧﻄﻮﻃﻲ دارد ﻛﻪ ﻗﺮار اﺳﺖ رﺳﻢ ﺷﻮﻧﺪ‪.‬‬
‫‪17‬‬ ‫‪17‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﻧﻤﺎﻳﻲ ﻛﻠﻲ از ﺳﻴﺴﺘﻢ ﻫﺎي ﮔﺮاﻓﻴﻜﻲ‬

‫ﻧﻤﺎﻳﺸﮕﺮﻫﺎي ‪:1 CRT‬‬


‫ﺷﻜﻞ زﻳﺮ ﻧﺤﻮه ﻋﻤﻠﻜﺮد ﻳﻚ ‪ CRT‬را ﻧﺸﺎن ﻣﻴﺪﻫﺪ‪.‬‬

‫ﻳﻚ ﭘﺮﺗﻮ اﻟﻜﺘﺮوﻧﻲ ﺗﻮﺳﻂ ﺗﻔﻨﮓ اﻟﻜﺘﺮوﻧﻲ ﻣﻨﺘﺸﺮ ﻣﻴﺸﻮد‪ .‬ﺳﭙﺲ از ﺳﻴﺴﺘﻢ ﻛﺎﻧﻮﻧﻲ‪ 2‬و ﺳﻴﺴﺘﻢ اﻧﺤﺮاف‪ 3‬ﻛﻪ ﭘﺮﺗﻮ را ﺑﻪ ﻳﻚ‬
‫ﻧﻘﻄﻪ ﻣﻌﻴﻦ روي ﺻﻔﺤﻪ ﻓﺴﻔﺮ ﻫﺪاﻳﺖ ﻣﻴﻜﻨﺪ ﻣﻴﮕﺬرد‪.‬‬
‫ﻓﺴﻔﺮ در ﻫﺮ ﻛﺠﺎ ﻛﻪ ﭘﺮﺗﻮ ﺑﺎ آن ﺑﺮﺧﻮرد ﻛﺮده ﺑﺎﺷﺪ ﻳﻚ ﻧﻘﻄﻪ ﻛﻮﭼﻚ را ﻧﻮراﻧﻲ ﺧﻮاﻫﺪ ﻛﺮد‪ .‬از آﻧﺠﺎﻛﻪ ﭘﺮﺗﻮ ﺗﺎﺑﻴﺪه ﺷﺪه ﺑﻪ‬
‫ﻓﺴﻔﺮ ﺑﻪ ﺳﺮﻋﺖ ﻣﺤﻮ ﻣﻴﺸﻮد ‪ ،‬ﻣﺘﺪﻫﺎﻳﻲ ﻻزم اﺳﺖ ﺗﺎ ﺗﺼﻮﻳﺮ را روي ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻧﮕﻪ دارﻧﺪ‪ .‬ﻳﻜﻲ از اﻳﻦ ﻣﺘﺪﻫﺎ ارﺳﺎل‬
‫ﭘﻴﺎﭘﻲ ﭘﺮﺗﻮ اﻟﻜﺘﺮون ﺑﻪ ﻫﻤﺎن ﻧﻘﻄﻪ ﻗﺒﻠﻲ اﺳﺖ‪ .‬ﺑﻪ اﻳﻦ ﻋﻤﻞ ﺗﺎزه ﺳﺎزي ﻣﻴﮕﻮﻳﻨﺪ‪.‬‬
‫ﺣﺎل ﻗﺴﻤﺘﻬﺎي ﻣﺨﺘﻠﻒ ﻳﻚ ﻧﻤﺎﻳﺸﮕﺮ ‪ CRT‬و وﻇﺎﻳﻒ آﻧﻬﺎ را ﺗﻚ ﺗﻚ ﺗﺸﺮﻳﺢ ﻣﻴﻜﻨﻴﻢ‪:‬‬
‫‪ : Heating filament‬ﺑﻪ ﻛﻤﻚ اﻳﻦ ﮔﺮم ﻛﻨﻨﺪه ﺗﻔﻨﮓ اﻟﻜﺘﺮوﻧﻲ ﮔﺮم ﺧﻮاﻫﺪ ﺷﺪ ﺗﺎ ﺑﺘﻮاﻧﺪ ﺗﻮﻟﻴﺪ ﭘﺮﺗﻮﻫﺎي اﻟﻜﺘﺮوﻧﻲ را‬
‫ﺗﺴﺮﻳﻊ ﺑﺨﺸﺪ‪.‬‬
‫‪ : Electronic Gun‬ﺗﻮﻟﻴﺪ ﭘﺮﺗﻮﻫﺎي اﻟﻜﺘﺮوﻧﻲ ﺑﺎ ﻓﺮﻛﺎﻧﺲ ﺧﺎﺻﻲ را ﺑﺮ ﻋﻬﺪه دارد ﻛﻪ اﻳﻦ ﻓﺮﻛﺎﻧﺲ ﻣﻌﻤﻮﻻً ﺑﻪ دﻗﺖ‬
‫ﻣﺎﻧﻴﺘﻮر واﺑﺴﺘﻪ اﺳﺖ‪.‬‬
‫‪ : Control Grid‬ﺷﺪت ﭘﺮﺗﻮ اﻟﻜﺘﺮوﻧﻲ ﺗﻮﺳﻂ ﺗﻐﻴﻴﺮ ﺳﻄﺢ وﻟﺘﺎژ اﻳﻦ ﻗﺴﻤﺖ ﻛﻨﺘﺮل ﻣﻴﺸﻮد‪ .‬ﻳﻚ وﻟﺘﺎژ ﻣﻨﻔﻲ ﻗﻮي در‬
‫‪ Control Grid‬اﺳﺘﻔﺎده ﻣﻴﺸﻮد ﺗﺎ ﻣﺎﻧﻊ ﻋﺒﻮر اﻟﻜﺘﺮوﻧﻬﺎ از ﺣﻔﺮه اﻧﺘﻬﺎﻳﻲ ‪ control grid‬ﺷﻮد‪ .‬ﻳﻚ وﻟﺘﺎژ ﭘﺎﻳﻴﻦ ﺑﻪ راﺣﺘﻲ ﻣﻴﺘﻮاﻧﺪ‬
‫ﺗﻌﺪاد اﻟﻜﺘﺮوﻧﻬﺎي ﻋﺒﻮري را ﻛﺎﻫﺶ دﻫﺪ‪ .‬از آﻧﺠﺎ ﻛﻪ ﻣﻴﺰان ﻧﻮر ﺳﺎﺗﻊ ﺷﺪه از ﺻﻔﺤﻪ ﻓﺴﻔﺮ ﺑﻪ ﺗﻌﺪاد اﻟﻜﺘﺮوﻧﻬﺎي ﺑﺮﺧﻮردي ﺑﻪ‬
‫ﺻﻔﺤﻪ ﻓﺴﻔﺮ ﺑﺴﺘﮕﻲ دارد‪ ،‬ﻟﺬا ﻣﻴﺘﻮاﻧﻴﻢ ﻣﻴﺰان روﺷﻨﺎﻳﻲ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ را ﺑﺎ ﻛﻨﺘﺮل ﺳﻄﺢ وﻟﺘﺎژ ‪ control grid‬ﺗﻨﻈﻴﻢ ﻛﺮد‪.‬‬
‫ﻫﻤﻬﭽﻨﻴﻦ ﻣﻴﺘﻮان ﺑﺎ اﻋﻤﺎل ﻳﻚ وﻟﺘﺎژ ﻣﺜﺒﺖ ﺳﺮﻋﺖ ﻋﺒﻮر اﻟﻜﺘﺮون را اﻓﺰاﻳﺶ داد‪.‬‬
‫‪ : Focusing System‬اﻳﻦ ﺳﻴﺴﺘﻢ ﭘﺮﺗﻮ ﻧﻮر را ﻣﺠﺒﻮر ﻣﻴﻜﻨﺪ ﺗﺎ در ﻳﻚ ﻧﻘﻄﻪ روي ﺻﻔﺤﻪ ﻓﺴﻔﺮ ﻫﻤﮕﺮا ﺷﻮد‪ .‬ﻋﻤﻞ‬
‫ﻣﺘﻤﺮﻛﺰ ﻛﺮدن ﺗﻮﺳﻂ ﻣﻴﺪاﻧﻬﺎي ﻣﻐﻨﺎﻃﻴﺴﻲ و اﻟﻜﺘﺮﻳﻜﻲ اﻧﺠﺎم ﻣﻴﺸﻮد‪.‬‬

‫ﻣﺎﻧﻴﺘﻮرﻫﺎي ‪ CRT‬رﻧﮕﻲ‪:‬‬
‫اﻳﻦ ﻣﺎﻧﻴﺘﻮرﻫﺎ ﺗﺼﺎوﻳﺮ رﻧﮕﻲ را ﺑﺎ اﺳﺘﻔﺎده از ﺻﻔﺤﺎت ﻓﺴﻔﺮي ﻛﻪ رﻧﮕﻬﺎي ﻣﺨﺘﻠﻒ را از ﺧﻮد ﺳﺎﺗﻊ ﻣﻴﻜﻨﻨﺪ‪ ،‬ﻧﺸﺎن ﻣﻴﺪﻫﻨﺪ‪ .‬ﺑﺎ‬
‫ﺗﺮﻛﻴﺐ اﻳﻦ رﻧﮕﻬﺎ ﻣﻴﺘﻮان رﻧﮕﻬﺎي ﻣﺘﻌﺪدي را ﺑﺪﺳﺖ آورد‪.‬‬
‫ﻳﻜﻲ از روﺷﻬﺎي ﺗﻮﻟﻴﺪ ﻣﺎﻧﻴﺘﻮرﻫﺎي ‪ CRT‬رﻧﮕﻲ‪ ،‬اﺳﺘﻔﺎده از ﺻﻔﺤﺎت ‪ Shadow mask‬اﺳﺖ‪.‬‬

‫‪1‬‬
‫‪Cathode Ray Tube‬‬
‫‪2‬‬
‫‪Focusing System‬‬
‫‪3‬‬
‫‪Deflection System‬‬
‫‪18‬‬ ‫‪18‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﻧﻤﺎﻳﻲ ﻛﻠﻲ از ﺳﻴﺴﺘﻢ ﻫﺎي ﮔﺮاﻓﻴﻜﻲ‬

‫روش ‪ Shadow mask‬ﺑﻴﺸﺘﺮ روي ﺳﻴﺴﺘﻢ ﻫﺎي ‪ raster – scan‬اﺳﺘﻔﺎده ﻣﻴﺸﻮد‪ .‬اﻳﻦ ﮔﻮﻧﻪ ﻣﺎﻧﻴﺘﻮر داراي ﺳﻪ ﺻﻔﺤﻪ‬
‫ﻓﺴﻔﺮ اﻧﺪ‪ .‬ﻳﻜﻲ ﻧﻮر ﻗﺮﻣﺰ‪ ،‬دﻳﮕﺮي ﻧﻮر آﺑﻲ و ﺳﻮﻣﻲ ﻧﻮر ﺳﺒﺰ را از ﺧﻮد ﻣﻨﺘﺸﺮ ﻣﻴﻜﻨﺪ‪ .‬ﻫﻤﭽﻨﻴﻦ در اﻳﻦ روش از ﺳﻪ ﺗﻔﻨﮓ‬
‫اﻟﻜﺘﺮوﻧﻲ اﺳﺘﻔﺎده ﻣﻴﺸﻮد‪ .‬ﺳﻪ ﭘﺮﺗﻮ اﻟﻜﺘﺮوﻧﻲ ﺗﻮﻟﻴﺪ ﺷﺪه ﺑﺼﻮرت ﮔﺮوﻫﻲ ﻣﺘﻤﺮﻛﺰ و ﻣﻨﺤﺮف ﻣﻴﺸﻮﻧﺪ و ﭘﺲ از ﻋﺒﻮر از ﺻﻔﺤﻪ‬
‫‪ Shadow mask‬ﺑﺼﻮرت ﻳﻚ ﻧﻘﻄﻪ رﻧﮕﻲ ﻛﻮﭼﻚ روي ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻇﺎﻫﺮ ﻣﻴﺸﻮﻧﺪ‪.‬‬

‫ﺗﻜﻨﻮﻟﻮژِي ‪: DVST4‬‬
‫اﻳﻦ ﺗﻜﻨﻮﻟﻮژي ﻣﺎﻧﻨﺪ ﺗﻜﻨﻮﻟﻮژي ‪ CRT‬اﺳﺖ‪ .‬ﺑﺎ اﻳﻦ ﺗﻔﺎوت ﻛﻪ ﻧﻴﺎز ﺑﻪ ﻋﻤﻞ ﺗﺎزه ﺳﺎزي ﻧﺨﻮاﻫﻴﻢ داﺷﺖ‪ .‬در اﻳﻦ ﺗﻜﻨﻮﻟﻮژي‬
‫ﺗﺼﺎوﻳﺮ در ﺻﻔﺤﻪ ﺑﻪ ﻋﻨﻮان ‪ Charge Distribution‬ذﺧﻴﺮه ﻣﻴﺸﻮﻧﺪ ‪ .‬ﻣﻌﺎدل ﺑﺎ ﻫﺮ ﭘﻴﻜﺴﻞ ﻳﻚ ﺧﺎزن دارﻳﻢ‪ .‬در ﭘﺸﺖ‬
‫ﺻﻔﺤﻪ اﺻﻠﻲ ﺻﻔﺤﻪ اي اﺳﺖ ﻛﻪ ﻣﺎﻧﻨﺪ ﺧﺎزن ﻋﻤﻞ ﻣﻴﻜﻨﺪ و ﻗﺪرت ذﺧﻴﺮه ﺳﺎزي وﻟﺘﺎژ را ﺧﻮاﻫﺪ داﺷﺖ‪.‬‬
‫ﻣﺰﻳﺖ اﻳﻦ ﺗﻜﻨﻮﻟﻮژي ‪ :‬ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ اﻳﻨﻜﻪ در اﻳﻦ روش ﻧﻴﺎز ﺑﻪ ﻋﻤﻞ ﺗﺎزه ﺳﺎزي ﻧﻴﺴﺖ ﻧﻴﺎز ﺑﻪ ﭘﻬﻨﺎي ﺑﺎﻧﺪ ﺑﺎﻻ ﻧﺪارد و ﺗﺼﺎوﻳﺮ ﺑﺎ‬
‫دﻗﺖ ﺑﺎﻻ ﻣﻴﺘﻮاﻧﻨﺪ ﺑﺪون ﻟﺮزش روي ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻧﺸﺎن داده ﺷﻮﻧﺪ‪.‬‬
‫ﻋﻴﺐ اﻳﻦ ﺗﻜﻨﻮﻟﻮژي ‪ :‬ﺑﺮاي ﺗﻐﻴﻴﺮ دادن ﺑﺨﺸﻲ از ﺗﺼﻮﻳﺮ ﺑﺎﻳﺪ اﻟﮕﻮي ﺗﺼﻮﻳﺮ دوﺑﺎره در ﺧﺎزن ذﺧﻴﺮه ﺷﻮد ﻛﻪ اﻳﻦ ﻋﻤﻞ ﻣﺪت‬
‫زﻣﺎن زﻳﺎدي ﻃﻮل ﻣﻴﻜﺸﺪ‪.‬‬

‫ﺻﻔﺤﻪ ﻧﻤﺎﻳﺸﮕﺮﻫﺎي ‪: Flat Panel‬‬


‫ﺑﺎ اﻳﻨﻜﻪ اﻛﺜﺮ ﻣﺎﻧﻴﺘﻮرﻫﺎﻳﻲ ﻛﻪ اﻣﺮوزه اﺳﺘﻔﺎده ﻣﻴﺸﻮﻧﺪ‪ ،‬ﻣﺎﻧﻴﺘﻮرﻫﺎي ‪ CRT‬ﻫﺴﺘﻨﺪ اﻣﺎ ﺗﻜﻨﻮﻟﻮژي ﻫﺎي دﻳﮕﺮي ﻧﻴﺰ ﭘﺪﻳﺪ آﻣﺪه‬
‫اﻧﺪ ﻛﻪ ﺑﻪ زودي ﺟﺎي ﻣﺎﻧﻴﺘﻮرﻫﺎي ‪ CRT‬را ﺧﻮاﻫﻨﺪ ﮔﺮﻓﺖ‪.‬‬
‫واژه ﻧﻤﺎﻳﺸﮕﺮﻫﺎي ‪ Flat Panel‬ﺑﻪ رده اي از ﻧﻤﺎﻳﺸﮕﺮﻫﺎ ﻣﺮﺑﻮط ﻣﻴﺸﻮد ﻛﻪ در ﻣﻘﺎﻳﺴﻪ ﺑﺎ ﻣﺎﻧﻴﺘﻮرﻫﺎي ‪ CRT‬داراي ﺣﺠﻢ‪،‬‬
‫وزن و ﺗﻮان ﻣﺼﺮﻓﻲ ﻛﻤﺘﺮي ﻫﺴﺘﻨﺪ‪ .‬ﻣﻬﻤﺘﺮﻳﻦ ﺧﺼﻴﺼﻪ اﻳﻦ ﻧﻤﺎﻳﺸﮕﺮﻫﺎ ﺑﺎرﻳﻚ ﺑﻮدن آﻧﻬﺎﺳﺖ ﺑﻪ ﮔﻮﻧﻪ اي ﻛﻪ ﺣﺘﻲ ﻣﻴﺘﻮان‬
‫آﻧﻬﺎ را ﺑﻪ دﻳﻮار آوﻳﺰان ﻛﺮد‪ .‬اﻳﻦ ﻣﺎﻧﻴﺘﻮرﻫﺎ ﺑﻴﺸﺘﺮ در ﻣﺎﺷﻴﻦ ﺣﺴﺎﺑﻬﺎ ‪ ،‬ﻟﭙﺘﺎب ﻫﺎ و ‪ ...‬اﺳﺘﻔﺎده ﻣﻴﺸﻮﻧﺪ‪.‬‬
‫ﻧﻤﺎﻳﺸﮕﺮﻫﺎي ‪ flat panel‬را ﻣﻴﺘﻮان ﺑﻪ دو دﺳﺘﻪ ﺗﻘﺴﻴﻢ ﻛﺮد‪ .‬ﻧﻤﺎﻳﺸﮕﺮﻫﺎي ﺳﺎﺗﻊ ﻛﻨﻨﺪه‪ 5‬و ﻏﻴﺮ ﺳﺎﺗﻊ ﻛﻨﻨﺪه ‪.‬‬
‫‪6‬‬

‫ﻣﺜﺎﻟﻲ از ﻧﻤﺎﻳﺸﮕﺮﻫﺎي ﺳﺎﺗﻊ ﻛﻨﻨﺪه ﻋﺒﺎرﺗﻨﺪ از ‪ :‬ﺻﻔﺤﻪ ﻧﻤﺎﻳﺸﮕﺮﻫﺎي ﭘﻼﺳﻤﺎ و ﻧﻤﺎﻳﺸﮕﺮ ﻫﺎي دﻳﻮدي‪ .‬در ﻣﻘﺎﺑﻞ ﺻﻔﺤﻪ‬
‫ﻧﻤﺎﻳﺸﮕﺮﻫﺎي ﻛﺮﻳﺴﺘﺎل ﻣﺎﻳﻊ ﻧﻤﻮﻧﻪ اي از ﻧﻤﺎﻳﺸﮕﺮﻫﺎي ﻏﻴﺮﺳﺎﺗﻊ ﻛﻨﻨﺪه اﻧﺪ‪.‬‬

‫‪4‬‬
‫‪Direct View Storage Tube‬‬
‫‪5‬‬
‫‪Emissive Display‬‬
‫‪6‬‬
‫‪Non-Emissive Display‬‬
‫‪19‬‬ ‫‪19‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﻧﻤﺎﻳﻲ ﻛﻠﻲ از ﺳﻴﺴﺘﻢ ﻫﺎي ﮔﺮاﻓﻴﻜﻲ‬

‫ﺗﻜﻨﻮﻟﻮژي ﭘﻼﺳﻤﺎ‪: 7‬‬


‫ﺻﻔﺤﻪ ﻧﻤﺎﻳﺸﮕﺮﻫﺎي ﭘﻼﺳﻤﺎ ﻛﻪ ﺑﻪ آﻧﻬﺎ ‪ gas-discharge display‬ﻧﻴﺰ ﮔﻔﺘﻪ ﻣﻴﺸﻮد ﺑﺼﻮرت زﻳﺮ ﺳﺎﺧﺘﻪ ﻣﻴﺸﻮﻧﺪ‪ .‬اﺑﺘﺪا‬
‫ﻣﺤﻮﻃﻪ ﺑﻴﻦ دو ﺻﻔﺤﻪ ﺷﻴﺸﻪ اي ﺑﺎ ﻣﺨﻠﻮﻃﻲ از ﮔﺎزﻫﺎ ﻛﻪ ﻣﻌﻤﻮﻻً ﺣﺎوي ﻧﺌﻮن اﺳﺖ ﭘﺮ ﻣﻴﺸﻮد‪.‬‬
‫ﻳﻚ ﺳﺮي از ﻧﻮارﻫﺎي ﻫﺎدي ﻋﻤﻮدي روي ﻳﻜﻲ از ﺻﻔﺤﺎت ﻗﺮار ﻣﻴﮕﻴﺮد‪ .‬روي ﺻﻔﺤﻪ دﻳﮕﺮ ﻧﻮارﻫﺎي ﻫﺎدي اﻓﻘﻲ ﻗﺮار ﻣﻴﮕﻴﺮد‪.‬‬
‫ﺷﻜﻞ زﻳﺮ ﺳﺎﺧﺘﻤﺎن اﻳﻦ ﻧﻮع ﻧﻤﺎﻳﺸﮕﺮ را ﻧﺸﺎن ﻣﻴﺪﻫﺪ‪.‬‬

‫اﻋﻤﺎل ﻳﻚ وﻟﺘﺎژ ﮔﺮﻣﺎﻳﺸﻲ ﺑﻪ ﻫﺮ ﺟﻔﺖ از ﻫﺪاﻳﺖ ﻛﻨﻨﺪه ﻫﺎي‬


‫اﻓﻘﻲ و ﻋﻤﻮدي ﻣﻮﺟﺐ ﻣﻴﺸﻮد ﮔﺎز ﻣﻮﺟﻮد در ﺗﻘﺎﻃﻊ دو ﻧﻮار‬
‫ﻫﺎدي ﺑﻪ ذرات ﭘﻼﺳﻤﺎي ﺗﺎﺑﺎن از ﻳﻮﻧﻬﺎ و اﻟﻜﺘﺮوﻧﻬﺎ ﺗﺒﺪﻳﻞ‬
‫ﺷﻮد‪ .‬اﻟﮕﻮي ﺗﺼﻮﻳﺮ در ‪ Refresh Buffer‬ذﺧﻴﺮه ﻣﻴﺸﻮد و‬
‫ﺳﭙﺲ وﻟﺘﺎژ ﮔﺮﻣﺎﻳﺸﻲ در ﻫﺮ ﺛﺎﻧﻴﻪ ‪ 60‬ﺑﺎر اﻋﻤﺎل ﻣﻴﺸﻮد‪.‬‬

‫ﻣﺰﻳﺖ ﻫﺎ ‪ :‬زاوﻳﻪ دﻳﺪ ﺑﺰرگ ‪ ،‬روﺷﻨﺎﻳﻲ ﻧﺴﺒﺘﺎً ﺧﻮب ‪ ،‬ﻣﻨﺎﺳﺐ‬


‫ﺑﺮاي ﺗﺼﺎوﻳﺮ ﺑﺰرگ‬
‫ﻣﻌﺎﻳﺐ ‪ :‬ﻫﺰﻳﻨﻪ ﺑﺎﻻ ‪ ،‬روﺷﻨﺎﻳﻲ ﻛﻤﺘﺮ از ‪ ، CRT‬ﭘﻴﻜﺴﻞ ﻫﺎي‬
‫ﺑﺰرگ در ﺣﺪود ‪ 1‬ﻣﻴﻠﻴﻤﺘﺮ‬

‫ﺗﻜﻨﻮﻟﻮژي ﻛﺮﻳﺴﺘﺎل ﻣﺎﻳﻊ‪:‬‬


‫اﻳﻨﮕﻮﻧﻪ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺸﻬﺎ ﺑﻴﺸﺘﺮ در دﺳﺘﮕﺎه ﻫﺎي ﻛﻮﭼﻚ ﻣﺎﻧﻨﺪ ﻣﺎﺷﻴﻦ ﺣﺴﺎﺑﻬﺎ ‪ ،‬ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎي ﻟﭙﺘﺎپ و ‪ ...‬اﺳﺘﻔﺎده ﻣﻴﺸﻮﻧﺪ‪.‬‬
‫ﻛﻠﻤﻪ ‪ Liquid Crystal‬ﺑﻪ اﻳﻦ ﺣﻘﻴﻘﺖ ﺑﺮﻣﻴﮕﺮدد ﻛﻪ اﻳﻦ ﻧﻤﺎﻳﺸﮕﺮﻫﺎ ﺣﺎوي ﻣﻮﻟﻜﻮﻟﻬﺎي ﺑﻠﻮرﻳﻨﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﻣﺎﻧﻨﺪ‬
‫ﻣﻮﻟﻜﻮﻟﻬﺎي ﻣﺎﻳﻊ ﻣﻌﻠﻘﻨﺪ‪ .‬اﻳﻦ ﻧﻤﺎﻳﺸﮕﺮ ﻫﺎ داراي ‪ 6‬ﻻﻳﻪ ﻫﺴﺘﻨﺪ‪ .‬اوﻟﻴﻦ ﻻﻳﻪ ﻛﺮﻳﺴﺘﺎل ﺧﻮاﻫﺪ ﺑﻮد و آﺧﺮﻳﻦ ﻻﻳﻪ ‪Reflector‬‬
‫ﻛﻪ ﻧﻮر را ﺑﺮﮔﺸﺖ ﻣﻴﺪﻫﺪ‪ .‬ﺧﺎﺻﻴﺖ ﻣﻮﻟﻜﻮل ﻫﺎي ﺑﻠﻮرﻳﻦ در اﻳﻦ اﺳﺖ ﻛﻪ در ﺟﻬﺖ ﻗﻄﺒﻲ ﺷﺪن ﻳﺎ ﭘﻼرﻳﺘﻪ ﺷﺪن ﻧﻮر ﻣﺮﺗﺐ‬
‫ﻣﻴﺸﻮﻧﺪ ‪ .‬ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﻧﻮر از اوﻟﻴﻦ ﺻﻔﺤﻪ ﻋﺒﻮر ﻣﻴﻜﻨﺪ ﺑﻪ ﻃﻮر ﻋﻤﻮدي ﭘﻼرﻳﺘﻪ ﻣﻴﺸﻮد‪ .‬ﻫﻨﮕﺎﻣﻲ ﻛﻪ از ﻛﺮﻳﺴﺘﺎل ﻋﺒﻮر‬
‫ﻣﻴﻜﻨﻨﺪ ‪ 90‬درﺟﻪ ﭼﺮﺧﺶ و ﺑﻪ ﺻﻮرت اﻓﻘﻲ در ﺧﻮاﻫﻨﺪ آﻣﺪ‪ .‬ﻛﺮﻳﺴﺘﺎﻟﻬﺎ اﮔﺮ در ﻣﻴﺪان اﻟﻜﺘﺮﻳﻜﻲ ﻗﺮار ﮔﻴﺮﻧﺪ‪ ،‬در اﻳﻦ ﺟﻬﺖ‬
‫ﻣﺮﺗﺐ ﺧﻮاﻫﻨﺪ ﺷﺪ و ﻧﻮري ﻛﻪ از آﻧﻬﺎ ﻋﺒﻮر ﻣﻴﻜﻨﺪ ﻣﻴﺘﻮاﻧﺪ ﺗﻐﻴﻴﺮي در ﺟﻬﺖ ﭘﻼرﻳﺘﻪ ﺷﺪن اﻳﺠﺎد ﻧﻜﻨﺪ‪ .‬اﮔﺮ ﺟﻬﺖ ﭘﻼرﻳﺘﻪ‬
‫ﺷﺪن ﻋﻮض ﻧﺸﻮد ﻧﻘﻄﻪ ﻣﺮﺑﻮﻃﻪ ﺗﺎرﻳﻚ دﻳﺪه ﺧﻮاﻫﺪ ﺷﺪ‪ .‬در واﻗﻊ ﻧﻮر در ﺻﻔﺤﻪ ﺑﻌﺪي ﺟﺬب ﻣﻴﮕﺮدد‪ ،‬اﻣﺎ اﮔﺮ ﺟﻬﺖ ﭘﻼرﻳﺘﻪ‬
‫ﺷﻮد ﺗﻐﻴﻴﺮ ﻛﻨﺪ‪ ،‬ﻧﻮر ﺑﻪ آﺧﺮﻳﻦ ﺻﻔﺤﻪ ﺑﺮﺧﻮرد ﺧﻮاﻫﺪ ﻛﺮد و ﺑﺮﮔﺸﺖ داده ﻣﻴﺸﻮد ﻛﻪ در اﻳﻦ ﺣﺎﻟﺖ ﻧﻘﻄﻪ روﺷﻦ دﻳﺪه‬
‫ﺧﻮاﻫﺪ ﺷﺪ‪ .‬در ﻣﺎﻧﻴﺘﻮر ‪ LCD‬ﻧﻴﺰ ﻧﻴﺎز ﺑﻪ ﻋﻤﻞ ‪ refresh‬دارﻳﻢ‪ ،‬زﻳﺮا ﺟﻬﺖ ﻋﻮض ﺷﺪن ﭘﻼرﻳﺘﻪ ﻫﺎ ﺑﻪ ﺻﻮرت ﻣﻮﻗﺖ‬
‫ﻣﻴﺒﺎﺷﺪ‪ .‬در ﺑﻌﻀﻲ از ﻣﺎﻧﻴﺘﻮر ﻫﺎي ‪ LCD‬ﺑﺮاي ﻫﺮ ﻧﻘﻄﻪ ﻳﻚ ﺗﺮاﻧﺰﻳﺴﺘﻮر وﺟﻮد دارد ﺗﺎ ﺑﺘﻮان ﺗﻐﻴﻴﺮ ﻛﺮﻳﺴﺘﺎل را ﺳﺮﻳﻌﺘﺮ‬
‫اﻧﺠﺎم داد‪.‬‬

‫ﺗﻜﻨﻮﻟﻮژي ‪: EL‬‬
‫اﻳﻦ ﺗﻜﻨﻮﻟﻮژي ﺗﺮﻛﻴﺒﻲ از ﭘﻼﺳﻤﺎ و ‪ DVST‬ﻣﻴﺒﺎﺷﺪ‪ .‬ﺗﺨﺖ ﺑﻮدن آن از ﭘﻼﺳﻤﺎ و ‪ Refresh‬ﻛﺮدن آن از ‪. DVST‬‬

‫‪7‬‬
‫‪Plasma Display Panel‬‬
‫‪20‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﭘﺮﻛﺮدن و ﺑﺮش اﺷﻜﺎل‬

‫ﻓﺼﻞ ﺳﻮم ‪:‬‬

‫ﭘﺮ ﻛﺮدن و‬
‫ﺑﺮش اﺷﻜﺎل‬
‫ﻣﺒﺎﺣﺚ اﻳﻦ ﻓﺼﻞ‪:‬‬

‫™ ﭘﺮ ﻛﺮدن اﺷﻜﺎل‬
‫™ رﺳﻢ اﺷﻜﺎل ﺑﺎ ﻗﻄﺮ ﺑﻴﺶ از ﻳﻚ ﭘﻴﻜﺴﻞ‬
‫• ‪Replaceing pixel‬‬
‫• ‪Moving Pen‬‬
‫• ‪Filling Area Between Bound Areas‬‬
‫• ‪Approximately By Tick Poly Line‬‬
‫™ ﺑﺮش اﺷﻜﺎل‬
‫• اﻟﮕﻮرﻳﺘﻢ ‪Cohen-suterland‬‬
‫• اﻟﮕﻮرﻳﺘﻢ ‪Cyrus-Beck‬‬
‫‪21‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﭘﺮﻛﺮدن و ﺑﺮش اﺷﻜﺎل‬

‫ﭘﺮ ﻛﺮدن اﺷﻜﺎل‪:‬‬


‫دو رﻫﻴﺎﻓﺖ اﺳﺎﺳﻲ ﺑﺮاي ﭘﺮﻛﺮدن ﻧﻮاﺣﻲ در ﺳﻴﺴﺘﻢ ﻫﺎي راﺳﺘﺮ وﺟﻮد دارد‪ .‬روش اول ﺑﺮ ﭘﺎﻳﻪ اﺳﻜﻦ ﺧﻄﻮط و روش دوم‬
‫ﺑﺮ ﭘﺎﻳﻪ ﻣﻌﺎدﻻت رﻳﺎﺿﻲ ﻣﻴﺒﺎﺷﺪ‪ .‬در اﻳﻦ ﺑﺨﺶ ﻣﺎ ﺑﻪ ﺗﻮﺿﻴﺢ روش اول ﻣﻴﭙﺮدازﻳﻢ‪.‬‬

‫اﻟﮕﻮرﻳﺘﻢ ﭘﺮ ﻛﺮدن ﭼﻨﺪﺿﻠﻌﻲ ﻧﺎﻣﻨﺘﻈﻢ ﺑﺎ اﺳﺘﻔﺎده از روش اﺳﻜﻦ ﺧﻄﻮط‪:‬‬


‫ﺷﻜﻞ زﻳﺮ ﻧﺤﻮه ﻋﻤﻠﻜﺮد اﻳﻦ اﻟﮕﻮرﻳﺘﻢ را ﺑﺮاي رﻧﮕﺎﻣﻴﺰي ﻳﻚ ﭼﻨﺪﺿﻠﻌﻲ ﻧﺎﻣﻨﺘﻈﻢ ﻧﺸﺎن ﻣﻴﺪﻫﺪ‪.‬‬

‫ﺑﺮاي ﻫﺮ ﺧﻂ اﺳﻜﻦ ﺷﺪه ﻛﻪ از ﭼﻨﺪﺿﻠﻌﻲ ﻋﺒﻮر ﻛﺮده اﺳﺖ‪ ،‬اﻟﮕﻮرﻳﺘﻢ ﻧﻘﺎط ﺗﻘﺎﺗﻊ ﺧﻂ اﺳﻜﻦ ﺷﺪه ﺑﺎ ﭼﻨﺪﺿﻠﻌﻲ را ﺑﺪﺳﺖ‬
‫ﻣﻲ آورد‪ .‬ﺳﭙﺲ اﻳﻦ ﻧﻘﺎط ﺗﻘﺎﻃﻊ از ﭼﭗ ﺑﻪ راﺳﺖ ﻣﺮﺗﺐ ﻣﻴﺸﻮﻧﺪ و در ﻧﻬﺎﻳﺖ ﻣﻜﺎﻧﻬﺎي ﺑﻴﻦ ﻫﺮ ﺟﻔﺖ از اﻳﻦ ﻧﻘﺎط در‬
‫ﻣﻴﺎﻧﮕﻴﺮ ﻗﺎب ﺑﺎ رﻧﮓ ﻣﺸﺨﺼﻲ ﻣﻘﺪاردﻫﻲ ﻣﻴﺸﻮﻧﺪ‪.‬‬
‫در ﻫﻤﻴﻦ ﻣﺜﺎل ﻗﺒﻠﻲ ﭼﻬﺎر ﻧﻘﻄﻪ ﺗﻘﺎﻃﻊ ﺗﻮﺳﻂ اﻟﮕﻮرﻳﺘﻢ ﺗﻌﻴﻴﻦ ﻣﻴﺸﻮﻧﺪ و ﭘﻴﻜﺴﻠﻬﺎي داﺧﻠﻲ از ‪ x = 10‬ﺗﺎ ‪ x = 14‬و از‬
‫‪ x = 18‬ﺗﺎ ‪ x = 24‬در ﻣﻴﺎﻧﮕﻴﺮ ﻗﺎب ﺑﺎ رﻧﮓ ﻣﺸﺨﺺ ﻣﻘﺪاردﻫﻲ ﻣﻴﺸﻮﻧﺪ‪.‬‬
‫اﻣﺎ دﻗﺖ ﻛﻨﻴﺪ ﻛﻪ اﮔﺮ ﻧﻘﺎط ﺗﻘﺎﻃﻊ ﺧﻂ اﺳﻜﻦ ﺑﺎ ﭼﻨﺪﺿﻠﻌﻲ‪ ،‬رﺋﻮس ﭼﻨﺪﺿﻠﻌﻲ ﺑﺎﺷﺪ در اﻳﻦ ﺻﻮرت ﻧﻴﺎز ﺑﻪ ﻳﻚ ﺳﺮي‬
‫دﺳﺘﻜﺎري ﻧﻘﺎط ﺗﻘﺎﻃﻊ دارﻳﻢ‪ .‬ﺑﺮاي ﻣﺜﺎل ﺷﻜﻞ زﻳﺮ را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪ .‬در اﻳﻦ ﺻﻮرت ﭼﮕﻮﻧﻪ ﻣﻴﺘﻮان ﻧﺎﺣﻴﻪ داﺧﻞ ﭼﻨﺪﺿﻠﻌﻲ‬
‫را ﺗﺸﺨﻴﺺ داد‪.‬‬

‫در اﻳﻨﺠﺎ ﺧﻂ اﺳﻜﻦ ‪ y‬ﻫﻴﭻ ﻣﺸﻜﻠﻲ ﻫﻤﺮاه ﻧﺪارد اﻣﺎ ﺧﻂ اﺳﻜﻦ ‪ y′‬در ﻧﻘﻄﻪ ‪ 2‬داراي ﻣﺸﻜﻞ اﺳﺖ‪ .‬ﺑﺮاي ﺣﻞ ﻣﺸﻜﻞ‬
‫ﻣﻴﺘﻮان ﺑﺪﻳﻨﮕﻮﻧﻪ ﻋﻤﻞ ﻛﺮد‪ :‬ﺑﺮاي ﻫﺮ ﻧﻘﻄﻪ ﺗﻘﺎﻃﻊ‪ ،‬ﻗﺒﻞ و ﺑﻌﺪ ﻧﻘﻄﻪ را ﻧﮕﺎه ﻣﻴﻜﻨﻴﻢ‪ .‬اﮔﺮ ﺑﻪ ﻃﻮر ﻳﻜﻨﻮاﺧﺖ ﻧﺰوﻟﻲ ﻳﺎ ﺻﻌﻮدي‬
‫‪22‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﭘﺮﻛﺮدن و ﺑﺮش اﺷﻜﺎل‬

‫ﺑﻮد ﻛﻪ ﻧﻘﻄﻪ را ﺑﻪ ﻋﻨﻮان ﻧﻘﻄﻪ ﺗﻘﺎﻃﻊ در ﻧﻈﺮ ﻣﻴﮕﻴﺮﻳﻢ و در ﻏﻴﺮاﻳﻦ ﺻﻮرت ﻧﻘﻄﻪ را ﺑﻪ ﺻﻮرت دو ﻧﻘﻄﻪ ﺗﻘﺎﻃﻊ در ﻳﻚ ﻣﻜﺎن‬
‫در ﻧﻈﺮ ﻣﻴﮕﻴﺮﻳﻢ‪.‬‬
‫ﺑﺮاي ﭘﻴﺎده ﺳﺎزي اﻳﻦ روش ﻧﻴﺎز ﺑﻪ ﻣﺤﺎﺳﺒﺎت ﻓﺮاوان ﻣﻴﺒﺎﺷﺪ‪ .‬وﻟﻲ ﻣﺰﻳﺖ آن ﻧﺴﺒﺖ ﺑﻪ اﻟﮕﻮرﻳﺘﻢ ﻣﻌﺎدﻻت رﻳﺎﺿﻲ ﺗﻮاﻧﺎﻳﻲ در‬
‫ﭘﺮ ﻛﺮدن اﺷﻜﺎل ﭼﻨﺪﺿﻠﻌﻲ ﻧﺎﻣﻨﺘﻈﻢ اﺳﺖ‪.‬‬

‫رﺳﻢ اﺷﻜﺎل ﺑﺎ ﻗﻄﺮ ﺑﻴﺶ از ﻳﻚ ﭘﻴﻜﺴﻞ‪:‬‬


‫ﺟﻬﺖ رﺳﻢ اﺷﻜﺎل ﺑﺎ ﻗﻄﺮ ﺑﺎ ﺑﻴﺶ از ﻳﻚ ﭘﻴﻜﺴﻞ ﭼﻬﺎر روش وﺟﻮد دارد‪:‬‬
‫روش اول ‪: Replaceing pixel‬‬
‫در اﻳﻦ روش ﻓﺮض ﻣﻴﺸﻮد ﻛﻪ ﻗﻄﺮ ﺷﻜﻞ ﻳﻚ ﭘﻴﻜﺴﻞ اﺳﺖ و ﺷﻜﻞ رﺳﻢ ﻣﻴﺸﻮد‪ .‬ﺑﻪ ﻛﻤﻚ ﻫﺮ ﭘﻴﻜﺴﻞ ﻣﻴﺘﻮان ﭘﻴﻜﺴﻞ‬
‫ﻫﺎي اﻃﺮاف آن را ﺗﻌﻴﻴﻦ ﻧﻤﻮد‪ .‬ﻣﺸﻜﻼت اﻳﻦ روش ﻋﺒﺎرﺗﻨﺪ از ‪:‬‬
‫‪ (1‬ﺿﺨﺎﻣﺖ ﻳﻜﺴﺎﻧﻲ روي ﺧﻄﻮط اﻓﻘﻲ‪ ،‬ﻋﻤﻮدي و ﻣﺎﻳﻞ وﺟﻮد ﻧﺪارد‬
‫‪ (2‬ﻳﻜﻨﻮاﺧﺘﻲ روي ﻣﺮز اﺷﻴﺎء وﺟﻮد ﻧﺪارد‪.‬‬
‫‪ (3‬ﺑﺮاي اﺷﻜﺎل ﻏﻴﺮ از ﺧﻂ ﻣﺤﺎﺳﺒﺎت زﻳﺎدي ﺑﺎﻳﺪ اﻧﺠﺎم ﺷﻮد‪.‬‬
‫روش دوم ‪: Moving Pen‬‬
‫در اﻳﻦ روش ﻳﻚ ﻗﻠﻢ ﺑﻪ ﺷﻜﻞ ﻛﺎدر ﻣﺴﺘﻄﻴﻞ ﺷﻜﻞ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﻴﺸﻮد ﻛﻪ ﻣﺮﻛﺰ ﻳﺎ ﮔﻮﺷﻪ ﻛﺎدر ﻣﺴﺘﻄﻴﻞ ﺷﻜﻞ روي‬
‫ﻳﻚ ﭘﻴﻜﺴﻞ از ﺧﻂ ﻣﺮزي ﺣﺮﻛﺖ ﻣﻴﻜﻨﺪ‪ .‬ﺑﺮاي رﺳﻢ ﺧﻂ اﻳﻦ روش ﺑﻬﺘﺮﻳﻦ ﻧﺘﻴﺠﻪ را ﺧﻮاﻫﺪ داد‪.‬‬
‫روش ﺳﻮم ‪: Filling Area Between Bound Areas‬‬
‫در اﻳﻦ روش اﺑﺘﺪا ﻣﺮز دروﻧﻲ و ﺑﻴﺮوﻧﻲ اﺷﻴﺎء ﺗﻌﻴﻴﻦ ﺷﺪه و ﺳﭙﺲ ﻓﺎﺻﻠﻪ ﺑﻴﻦ اﻳﻦ دو ﻣﺮز ﭘﺮ ﺧﻮاﻫﺪ ﺷﺪ‪ .‬در اﻳﻦ روش‬
‫ﺑﺎﻳﺪ ﭘﻴﻜﺴﻞ ﻫﺎي ﻣﺮز ﺑﻴﺮوﻧﻲ را ﺑﺎ ﻣﺤﺎﺳﺒﺎت رﻳﺎﺿﻲ ﺑﺪﺳﺖ آورﻳﻢ‪ .‬ﻫﻤﭽﻨﻴﻦ ﺑﺪﺳﺖ آوردن ﻧﻘﺎط ﺑﻴﻦ ﻣﺮزﻫﺎ ﻧﻴﺰ ﻣﺸﻜﻞ‬
‫اﺳﺖ‪.‬‬
‫روش ﭼﻬﺎرم ‪: Approximately By Tick Poly Line‬‬
‫ﺑﺎ اﺳﺘﻔﺎده از ﺗﻌﺪادي ﺧﻂ ﭘﻴﻮﺳﺘﻪ ﻛﻪ ﻣﻌﻤﻮﻻً داراي ﻃﻮﻟﻲ ﻛﻮﺗﺎه ﻣﻲ ﺑﺎﺷﻨﺪ‪ ،‬ﺷﻜﻞ را ﺗﻘﺮﻳﺐ ﻣﻴﺰﻧﻨﺪ‪ .‬اﻳﻦ روش ﻛﺎراﻳﻲ‬
‫ﭼﻨﺪاﻧﻲ ﻧﺪارد‪.‬‬

‫ﻋﻤﻠﻴﺎت ﺑﺮش‪: 8‬‬


‫ﺑﻪ ﻃﻮر ﻛﻠﻲ ﻫﺮ روﻳﻪ‪ ،‬ﻛﻪ ﺑﺨﺸﻲ از ﺗﺼﻮﻳﺮ ﻛﻪ داﺧﻞ ﻳﺎ ﺧﺎرج ﻳﻚ ﻣﺤﺪوده ﻣﻌﻴﻦ اﺳﺖ را ﻣﺸﺨﺺ ﻣﻴﻜﻨﺪ‪ ،‬اﻟﮕﻮرﻳﺘﻢ‬
‫ﺑﺮش‪ 9‬ﻧﺎﻣﻴﺪه ﻣﻴﺸﻮد‪ .‬ﻧﺎﺣﻴﻪ اي ﻛﻪ ﻋﻤﻞ ﺑﺮش ﺑﺮ روي آن اﻧﺠﺎم ﻣﻴﺸﻮد ﭘﻨﺠﺮه ﺑﺮش‪ 10‬ﻧﺎﻣﻴﺪه ﻣﻴﺸﻮد‪.‬‬
‫ﻋﻤﻠﻴﺎت ﺑﺮش ﻣﻌﻤﻮﻻً ﺑﺮاي اﻧﺘﺨﺎب ﺑﺨﺸﻲ از ﺗﺼﻮﻳﺮ‪ ،‬ﺧﻮش ﻧﻤﺎﺳﺎزي ﺧﻄﻮط و ﻳﺎ ﻣﺮزﻫﺎي اﺷﻴﺎء‪ ،‬و ﻫﻤﭽﻨﻴﻦ ﻋﻤﻠﻴﺎت ﻣﺮﺑﻮط‬
‫ﺑﻪ ﻧﻘﺎﺷﻲ و ﺗﺮﺳﻴﻢ )ﻣﺎﻧﻨﺪ ﻛﭙﻲ‪ ،‬اﻧﺘﻘﺎل و ﻳﺎ ﺣﺬف ﻧﺎﺣﻴﻪ اي ﻣﺸﺨﺺ( ﻛﺎرﺑﺮد دارد‪.‬‬

‫‪8‬‬
‫‪Clipping Operation‬‬
‫‪9‬‬
‫‪Clipping Algorithm‬‬
‫‪10‬‬
‫‪Clipping Window‬‬
‫‪23‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﭘﺮﻛﺮدن و ﺑﺮش اﺷﻜﺎل‬

‫ﺑﺴﺘﻪ ﺑﻪ ﻧﻮع ﻛﺎرﺑﺮد‪ ،‬ﭘﻨﺠﺮه ﺑﺮش ﻣﻴﺘﻮاﻧﺪ ﻳﻚ ﭼﻨﺪﺿﻠﻌﻲ ﻧﺎﻣﺘﻘﺎرن و ﻳﺎ ﻳﻚ ﻣﻨﺤﻨﻲ ﺑﺴﺘﻪ ﺑﺎﺷﺪ‪ .‬در اﻳﻨﺠﺎ ﺗﻨﻬﺎ ﺑﺮش را ﺑﺎ‬
‫ﭘﻨﺠﺮه ﺑﺮش ﻣﺴﺘﻄﻴﻞ ﺷﻜﻞ اﻧﺠﺎم ﺧﻮاﻫﻴﻢ داد‪.‬‬
‫در اﻳﻦ ﻓﺼﻞ ﻣﺎ ﺑﺮش ﻧﻘﻄﻪ و ﺑﺮش ﺧﻂ را ﺑﺮرﺳﻲ ﻣﻴﻜﻨﻴﻢ‪ .‬رواﻟﻬﺎي ﺑﺮش ﺧﻂ و ﺑﺮش ﻧﺎﺣﻴﻪ از اﺟﺰاء اﺳﺘﺎﻧﺪارد ﺑﺴﺘﻪ ﻫﺎي‬
‫ﮔﺮاﻓﻴﻜﻲ ﻫﺴﺘﻨﺪ اﻣﺎ ﻫﻤﻪ اﻳﻦ ﺑﺴﺘﻪ ﻫﺎ داراي روال ﻣﺨﺼﻮص ﺑﺮاي ﺑﺮش ﻣﻨﺤﻨﻲ و اﺷﻜﺎل ﻛﺎﻧﻮﻧﻲ)ﻣﺜﻞ داﻳﺮه و ﺑﻴﻀﻲ(‬
‫ﻧﻴﺴﺘﻨﺪ و ﻣﻤﻜﻦ اﺳﺖ اﻳﻦ اﺷﻜﺎل را ﺑﺼﻮرت ﺧﻂ ﻣﺴﺘﻘﻴﻢ در ﻧﻈﺮ ﺑﮕﻴﺮﻧﺪ و ﺳﭙﺲ ﺑﺎ اﺳﺘﻔﺎده از روال ﻫﺎي ﺑﺮش ﺧﻂ و‬
‫ﻧﺎﺣﻴﻪ ﺑﻪ ﻫﺪف ﺧﻮد ﺑﺮﺳﻨﺪ‪.‬‬

‫ﺑﺮش ﻧﻘﻄﻪ )‪(Point Clipping‬‬


‫ﻓﺮض ﻛﻨﻴﺪ ﭘﻨﺠﺮه ﺑﺮش ﻣﺎ ﻳﻚ ﻣﺴﺘﻄﻴﻞ در ﻣﻮﻗﻌﻴﺖ اﺳﺘﺎﻧﺪارد ﺑﺎﺷﺪ‪ .‬ﻣﺎ ﻳﻚ ﻧﻘﻄﻪ را ﺑﺮاي ﻧﻤﺎﻳﺶ ذﺧﻴﺮه ﻣﻴﻜﻨﻴﻢ اﮔﺮ‬
‫ﻣﻌﺎدﻻت زﻳﺮ ﺑﺮ ﻗﺮار ﺑﺎﺷﺪ‪:‬‬
‫‪⎧ xwmin ≤ x ≤ xwmax‬‬
‫⎨‬
‫‪⎩ ywmin ≤ y ≤ ywmax‬‬
‫ﻛﻪ در آن رﺋﻮس ﭘﻨﺠﺮه ﺑﺮش ﻣﺴﺘﻄﻴﻞ ﺷﻜﻞ ﻋﺒﺎرﺗﻨﺪ از ‪:‬‬
‫) ‪( xwmin , xwmax , ywmin , ywm ax‬‬
‫در ﺻﻮرﺗﻴﻜﻪ ﺣﺘﻲ ﻳﻜﻲ از ﭼﻬﺎر ﻣﻌﺎدﻟﻪ ﻓﻮق ﻧﺎدرﺳﺖ ﺑﺎﺷﺪ ﻧﻘﻄﻪ ﺣﺬف ﺧﻮاﻫﺪ ﺷﺪ)ﺑﺮاي ﻧﻤﺎﻳﺶ ذﺧﻴﺮه ﻧﻤﻴﺸﻮد(‪.‬‬
‫ﺑﺎ اﻳﻨﻜﻪ روﻳﻪ ﺑﺮش ﻧﻘﻄﻪ ﻛﻤﺘﺮ از روﻳﻪ ﻫﺎي ﺑﺮش ﺧﻂ و ﻧﺎﺣﻴﻪ ﻛﺎرﺑﺮد دارد‪ ،‬ﺑﺎ اﻳﻦ ﺣﺎل ﺑﻌﻀﻲ از ﻛﺎرﺑﺮدﻫﺎ ﺑﻪ اﻳﻦ روﻳﻪ‬
‫ﻧﻴﺎزﻣﻨﺪﻧﺪ‪) .‬ﻣﺎﻧﻨﺪ ﺻﺤﻨﻪ ﻫﺎي ﻣﺮﺑﻮط ﺑﻪ اﻧﻔﺠﺎر(‬

‫ﺑﺮش ﺧﻂ )‪(Line Clipping‬‬


‫ﺷﻜﻞ زﻳﺮ راﺑﻄﻪ ﺑﻴﻦ ﻣﻮﻗﻌﻴﺖ ﺧﻄﻮط و ﻣﻮﻗﻌﻴﺖ ﭘﻨﺠﺮه ﺑﺮش را ﺑﺮاي ﻋﻤﻠﻴﺎت ﺑﺮش ﻧﺸﺎن ﻣﻴﺪﻫﺪ‪.‬‬

‫اﺑﺘﺪا ﺑﺮرﺳﻲ ﻣﻴﻜﻨﻴﻢ ﻛﻪ آﻳﺎ ﺧﻂ ﺑﻪ ﻃﻮر ﻛﺎﻣﻞ داﺧﻞ ﭘﻨﺠﺮه ﺑﺮش ﻗﺮار دارد ﻳﺎ ﻧﻪ‪ .‬اﮔﺮ ﻗﺮار ﻧﺪاﺷﺖ ﺑﺮرﺳﻲ ﻣﻴﻜﻨﻴﻢ آﻳﺎ ﺧﻂ‬
‫ﻛﺎﻣﻼ ﺧﺎرج ﭘﻨﺠﺮه ﺑﺮش ﻗﺮار دارد ﻳﺎ ﻧﻪ‪ .‬در ﻧﻬﺎﻳﺖ اﮔﺮ ﺧﻂ ﻛﺎﻣﻼ در داﺧﻞ ﻳﺎ ﺧﺎرج ﻧﺎﺣﻴﻪ ﺑﺮش ﻧﺒﻮد ﺑﺎ اﻧﺠﺎم ﻳﻚ ﺳﺮي‬
‫ﻣﻌﺎدﻻت ﺗﺸﺨﻴﺺ ﻣﻴﺪﻫﻴﻢ ﻛﺪام ﺑﺨﺶ از ﺧﻂ‪ ،‬داﺧﻞ و ﻛﺪام ﺑﺨﺶ ﺧﺎرج ﭘﻨﺠﺮه ﺑﺮش ﻗﺮار دارد‪ .‬در ﻧﻬﺎﻳﺖ ﻫﺪف ﻣﺎ ﺑﺪﺳﺖ‬
‫آوردن اﻟﮕﻮرﻳﺘﻤﻲ ﻛﺎراﻣﺪ ﺑﺮاي ﺣﺬف ﺧﻄﻮط ﺧﺎرج از ﻧﺎﺣﻴﻪ ﺑﺎ اﻧﺠﺎم ﻛﻤﺘﺮﻳﻦ ﻣﺤﺎﺳﺒﺎت اﺳﺖ‪.‬‬
‫‪24‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﭘﺮﻛﺮدن و ﺑﺮش اﺷﻜﺎل‬

‫اﻟﮕﻮرﻳﺘﻢ ﻫﺎي ﻛﺎراﻣﺪي ﺑﺮاي ﺑﺮش ﺧﻂ وﺟﻮد دارد ﻛﻪ ﻣﺎ در اﻳﻨﺠﺎ ﻣﻬﻤﺘﺮﻳﻦ آﻧﻬﺎ را ﺑﺮرﺳﻲ ﻣﻴﻜﻨﻴﻢ‪ .‬ﺑﻌﻀﻲ از اﻳﻦ‬
‫اﻟﮕﻮرﻳﺘﻤﻬﺎ ﻣﺨﺘﺺ اﺷﻜﺎل دو ﺑﻌﺪي ﻣﻲ ﺑﺎﺷﻨﺪ و ﺑﻌﻀﻲ دﻳﮕﺮ ﺑﻪ ﺳﺎدﮔﻲ ﺑﻪ اﺷﻜﺎل ﺳﻪ ﺑﻌﺪي ﺗﻌﻤﻴﻢ ﻣﻲ ﻳﺎﺑﻨﺪ‪.‬‬

‫اﻟﮕﻮرﻳﺘﻢ ‪: Cohen – Sutherland‬‬


‫اﻳﻦ اﻟﮕﻮرﻳﺘﻢ از اﻟﮕﻮرﻳﺘﻤﻬﺎي ﻗﺪﻳﻤﻲ اﺳﺖ ﻛﻪ ﺑﺪﻟﻴﻞ ﺗﻌﺪاد ﻛﻢ ﻣﺤﺎﺳﺒﺎت از ﺳﺮﻋﺖ اﺟﺮاي ﺑﺎﻻﻳﻲ ﺑﺮﺧﻮردار اﺳﺖ‪ .‬در اﻳﻦ‬
‫روش ﺑﻪ ﻫﺮ ﻳﻚ از دو ﺳﺮ اﻧﺘﻬﺎﻳﻲ ﺧﻂ ﻳﻚ ﻛﺪ دودوﻳﻲ ﭼﻬﺎر رﻗﻤﻲ ﻧﺴﺒﺖ داده ﻣﻴﺸﻮد ﻛﻪ اﻳﻦ ﻛﺪ ﻣﻮﻗﻌﻴﺖ ﺧﻂ را ﻧﺴﺒﺖ‬
‫ﺑﻪ ﻣﺮزﻫﺎي ﻣﺴﺘﻄﻴﻞ ﺑﺮش ﻣﺸﺨﺺ ﻣﻴﻜﻨﺪ‪ .‬ﻧﺎﺣﻴﻪ ﻫﺎ ﺑﻪ ﺻﻮرت زﻳﺮ ﻛﺪ ﮔﺬاري ﻣﻴﺸﻮﻧﺪ‪.‬‬

‫ﺑﺎ اﻳﻦ ﻛﺪ ﮔﺬاري ﻣﻴﺘﻮان ﺑﺮاﺣﺘﻲ وﺿﻌﻴﺖ ﺧﻂ را ﻧﺴﺒﺖ ﺑﻪ ﻣﺴﺘﻄﻴﻞ ﺑﺮش ﺗﺸﺨﻴﺺ داد‪.‬‬
‫اﻟﻒ ( ﺧﻂ داﺧﻞ ﻣﺴﺘﻄﻴﻞ ﺑﺮش اﺳﺖ‪ :‬زﻣﺎﻧﻴﻜﻪ ﻛﺪ ﻣﺮﺑﻮط ﺑﻪ اﻧﺘﻬﺎي ﻫﺮ دو ﺳﺮ ﺧﻂ ﺑﺮاﺑﺮ ‪ 0000‬ﺑﺎﺷﺪ‪ .‬اﻳﻦ ﺧﻄﻮط ﺑﺪون‬
‫اﻧﺠﺎم ﻣﺤﺎﺳﺒﺎت رﻳﺎﺿﻲ ﭘﺬﻳﺮﻓﺘﻪ ﻣﻴﺸﻮﻧﺪ‪ .‬ﺑﺮاي ﺗﺴﺖ اﻳﻦ ﺷﺮط ﻣﻴﺘﻮان ﻛﺪ ﻣﺮﺑﻮط ﺑﻪ دو اﻧﺘﻬﺎي ﺧﻂ را ﺑﺎ ﻫﻢ ‪ OR‬ﻛﺮد اﮔﺮ‬
‫ﻧﺘﻴﺠﻪ ‪ 0000‬ﺑﻮد ﺧﻂ ﺗﻤﺎﻣﺎً داﺧﻞ ﻧﺎﺣﻴﻪ ﺑﺮش اﺳﺖ‪.‬‬
‫ب ( ﺧﻂ ﺧﺎرج ﻧﺎﺣﻴﻪ ﺑﺮش اﺳﺖ ‪ :‬زﻣﺎﻧﻴﻜﻪ ﺣﺪاﻗﻞ ﻳﻚ ﺑﻴﺖ ‪ 1‬در ﻳﻚ ﻣﻜﺎن ﻣﺸﺨﺺ در ﻛﺪ ﻫﺮ دو اﻧﺘﻬﺎي ﺧﻂ ﻳﺎﻓﺖ ﺷﻮد‪.‬‬
‫اﻳﻦ ﺧﻄﻮط ﺑﺪون اﻧﺠﺎم ﻣﺤﺎﺳﺒﺎت رﻳﺎﺿﻲ ﺣﺬف ﻣﻴﺸﻮﻧﺪ‪ .‬ﺑﺮاي ﺗﺴﺖ اﻳﻦ ﺷﺮط ﻣﻴﺘﻮان ﻛﺪ ﻣﺮﺑﻮط ﺑﻪ دو اﻧﺘﻬﺎي ﺧﻂ را ﺑﺎ‬
‫ﻫﻢ ‪ AND‬ﻛﺮد اﮔﺮ ﻧﺘﻴﺠﻪ ﭼﻴﺰي ﻏﻴﺮ از ‪ 0000‬ﺑﻮد ﺧﻂ ﺗﻤﺎﻣﺎً ﺧﺎرج ﻧﺎﺣﻴﻪ ﺑﺮش اﺳﺖ‪.‬‬
‫ج ( ﺑﺨﺸﻲ از ﺧﻂ داﺧﻞ و ﺑﺨﺸﻲ از ﺧﻂ ﺧﺎرج ﻧﺎﺣﻴﻪ ﺑﺮش اﺳﺖ‪ :‬ﻫﺮ ﺣﺎﻟﺘﻲ ﺑﻪ ﺟﺰ ﺣﺎﻻت ﺑﺎﻻ‪ .‬در اﻳﻦ ﺣﺎﻟﺖ ﺑﺮاي اﻳﻨﻜﻪ‬
‫ﻣﻮﻗﻌﻴﺖ ﺧﻂ را ﻧﺴﺒﺖ ﺑﻪ ﻣﺴﺘﻄﻴﻞ ﺗﺸﺨﻴﺺ دﻫﻴﻢ ﻧﻴﺎز ﺑﻪ ﻳﻚ ﺳﺮي ﻣﺤﺎﺳﺒﺎت رﻳﺎﺿﻲ دارﻳﻢ‪.‬‬
‫ﺑﺮاي درك ﻋﻤﻠﻜﺮد اﻳﻦ اﻟﮕﻮرﻳﺘﻢ‪ ،‬ﻣﺜﺎﻟﻲ را ﺗﺸﺮﻳﺢ ﻣﻴﻜﻨﻴﻢ‪ .‬ﻣﺜﺎل ﺷﻜﻞ زﻳﺮ را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪:‬‬

‫ﺑﺎ ﻛﺪﮔﺬاري اﻧﺘﻬﺎي ﺧﻂ ﻣﺸﺨﺺ ﻣﻴﺸﻮد ﺧﻂ ﺑﻪ ﻃﻮر ﻛﺎﻣﻞ داﺧﻞ ﻳﺎ ﺧﺎرج ﻣﺴﺘﻄﻴﻞ ﺑﺮش ﻗﺮار ﻧﺪارد و در ﺷﺮاﻳﻂ اول و‬
‫دوم ﺻﺪق ﻧﻤﻴﻜﻨﺪ‪ ،‬ﺑﺮاي ﺑﺮش ﺧﻂ ﻧﻴﺎز ﺑﻪ ﻳﻚ ﺳﺮي ﻣﺤﺎﺳﺒﺎت رﻳﺎﺿﻲ دارﻳﻢ‪.‬‬
‫‪25‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﭘﺮﻛﺮدن و ﺑﺮش اﺷﻜﺎل‬

‫ﺑﺮاي ﭘﻴﺪا ﻛﺮدن ﻧﻘﺎط ﺗﻘﺎﻃﻊ ﻣﻴﺘﻮان از ﻓﺮﻣﻮل ﺷﻴﺐ ﺧﻂ اﺳﺘﻔﺎده ﻛﺮد‪ .‬ﺑﺮاي ﺧﻄﻲ ﺑﺎ ﻧﻘﺎط اﻧﺘﻬﺎﻳﻲ ) ‪ ( x1 , y1‬و ) ‪( x2 , y2‬‬
‫ﻓﺮﻣﻮل ﺧﻂ ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬
‫) ‪y = y1 + m( x − x1‬‬
‫ﻣﻘﺪار ‪ m‬ﻛﻪ ﺑﺼﻮرت زﻳﺮ ﻣﺤﺎﺳﺒﻪ ﻣﻴﺸﻮد‪:‬‬
‫) ‪m = ( y2 − y1 ) ( x2 − x1‬‬
‫ﻫﺮ ﻛﺠﺎ ﻣﻘﺪار ‪ x‬ﺑﺮاﺑﺮ ﺑﺎ ﻳﻜﻲ از ﻣﻘﺎدﻳﺮ ‪ xwmin‬ﻳﺎ ‪ xwmax‬ﻗﺮار ﮔﻴﺮد‪ ،‬آﻧﮕﺎه ﻣﻘﺪار ﻣﺘﻨﺎﻇﺮ ﺑﺎ ‪ y‬ﺑﺪﺳﺖ ﻣﻴ‪Ĥ‬ﻳﺪ‪ .‬اﻳﻦ ﺷﺮط‬
‫ﻫﺎ در زﻳﺮ آورده ﺷﺪه اﺳﺖ‪ .‬ﺑﺮاي ﻧﻘﺎط اﻧﺘﻬﺎﻳﻲ ﺷﺮاﻳﻂ زﻳﺮ را ﺑﺮرﺳﻲ ﻣﻴﻜﻨﻴﻢ‪.‬‬
‫‪x p ≥ xwmin else P′ : y = m.xwmin + b‬‬
‫‪x p ≤ xwmax else P′ : y = m.xwmax + b‬‬
‫‪y p ≥ ywmin else P′ : ywmin = m.x + b‬‬
‫‪y p ≤ ywmax else P′ : ywmax = m.x + b‬‬

‫اﺑﺘﺪا ‪ p1‬را ﺑﺎ ﭼﻬﺎر ﺿﻠﻊ ﻣﺴﺘﻄﻴﻞ ﺑﺮش ﻣﻘﺎﻳﺴﻪ ﻣﻴﻜﻨﻴﻢ‪ .‬ﻧﺘﻴﺠﻪ ﻣﻴﮕﻴﺮﻳﻢ ﻛﻪ ‪ p1‬در ﭘﺎﻳﻴﻦ ﻣﺴﺘﻄﻴﻞ ﻗﺮار دارد‪ .‬ﺑﻨﺎﺑﺮاﻳﻦ‬
‫‪ p1′‬را ﻛﻪ ﻧﻘﻄﻪ ﺗﻘﺎﻃﻊ ﺧﻂ ﺑﺎ ﻣﺴﺘﻄﻴﻞ ﺑﺮش اﺳﺖ را ﭘﻴﺪا ﻣﻴﻜﻨﻴﻢ‪ .‬اﻳﻦ ﻛﺎر ﺑﺮاي ﻧﻘﻄﻪ ‪ p2‬ﻧﻴﺰ اﻧﺠﺎم ﻣﻴﺸﻮد‪.‬ﻣﺰﻳﺖ اﻳﻦ‬
‫اﻟﮕﻮرﻳﺘﻢ ﻣﺤﺎﺳﺒﺎت ﻛﻢ و ﻋﻴﺐ آن ﻛﺎر ﻛﺮدن ﺗﻨﻬﺎ ﺑﺎ ﻧﺎﺣﻴﻪ ﺑﺮش ﻣﺴﺘﻄﻴﻞ ﺷﻜﻞ اﺳﺖ‪.‬‬

‫اﻟﮕﻮرﻳﺘﻢ ‪: Cyrus – Beck‬‬


‫اﻳﻦ اﻟﮕﻮرﻳﺘﻢ ﻳﻜﻲ از اﻟﮕﻮرﻳﺘﻢ ﻫﺎي ﺳﺮﻳﻊ ﺑﺮاي ﺑﺮش ﺧﻂ اﺳﺖ ﻛﻪ ﺑﺮ ﭘﺎﻳﻪ ﻣﻌﺎدﻻت ﭘﺎراﻣﺘﺮي ﺧﻂ و ﺑﻮﺳﻴﻠﻪ ‪ Cyrus‬و‬
‫‪ Beck‬ﺗﻮﺳﻌﻪ ﻳﺎﻓﺘﻪ اﺳﺖ‪.‬‬
‫ﻣﻌﺎدﻟﻪ ﺧﻂ در دﺳﺘﮕﺎه دﻛﺎرﺗﻲ ﺑﻪ ﺳﻪ ﺻﻮرت ﻧﻮﺷﺘﻪ ﻣﻴﺸﻮد‪:‬‬
‫اﻟﻒ ( ﻣﻌﺎدﻟﻪ ﺧﻂ ﺑﺮ اﺳﺎس ﺷﻴﺐ و ﻋﺮض از ﻣﺒﺪأ آن‪y = mx + b :‬‬
‫ب ( ﻣﻌﺎدﻟﻪ ﺿﻤﻨﻲ ﺧﻂ‪Ax + By + C = 0 :‬‬
‫ج ( ﻣﻌﺎدﻟﻪ ﭘﺎراﻣﺘﺮي ﺧﻂ‪ :‬در اﻳﻦ ﻓﺮم ﺧﻂ ﺑﺮ اﺳﺎس دو ﻧﻘﻄﻪ اﺑﺘﺪاﻳﻲ و اﻧﺘﻬﺎﻳﻲ آن ﻧﻮﺷﺘﻪ ﻣﻴﺸﻮد‪.‬‬
‫‪ P(t ) = P0 + ( P1 − P0 )t‬ﻛﻪ در آن ‪ P‬ﺧﻮد ﻳﻚ ﺑﺮدار ﺑﻪ ﺻﻮرت ] ‪ [ x, y‬اﺳﺖ‪ .‬ﺑﻨﺎﺑﺮاﻳﻦ ﻣﻴﺘﻮان ﻣﻌﺎدﻟﻪ ﺧﻂ را ﺑﻪ‬
‫ﺻﻮرت دو ﻣﻌﺎدﻟﻪ زﻳﺮ ﻫﻢ ﻧﻮﺷﺖ‪:‬‬
‫‪⎧ x = x0 + ( x1 − x0 )t‬‬
‫⎨‬
‫‪⎩ y = y0 + ( y1 − y0 )t‬‬
‫ﺑﺮاي درك اﻳﻦ اﻟﮕﻮرﻳﺘﻢ ﻣﺮاﺣﻞ زﻳﺮ را ﮔﺎم ﺑﻪ ﮔﺎم اﻧﺠﺎم ﻣﻴﺪﻫﻴﻢ‪:‬‬
‫‪26‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﭘﺮﻛﺮدن و ﺑﺮش اﺷﻜﺎل‬

‫‪ (1‬ﻣﻌﺎدﻟﻪ ﭘﺎراﻣﺘﺮي ﺧﻂ را ﻣﻴﻨﻮﻳﺴﻴﻢ‪.‬‬


‫‪ (2‬ﺑﺮاي ﻫﺮ ﻟﺒﻪ )ﺿﻠﻊ( ﻣﺴﺘﻄﻴﻞ ﺑﺮش دو ﭘﺎراﻣﺘﺮ زﻳﺮ را ﺑﺪﺳﺖ ﻣﻴ‪Ĥ‬ورﻳﻢ‪:‬‬
‫‪ .a‬ﺑﺮدار ﻋﻤﻮد ﺑﺮ ﻟﺒﻪ ‪ N L‬ﻛﻪ ﻣﻴﺘﻮاﻧﺪ ﻳﻜﻲ از ﻣﻘﺎدﻳﺮ زﻳﺮ را اﺧﺘﻴﺎر ﻛﻨﺪ‪:‬‬
‫)‪(1, 0), (0,1), (−1, 0), (0, −1‬‬
‫‪ .b‬ﻳﻚ ﻧﻘﻄﻪ ﺑﺮ روي ﻟﺒﻪ ‪PL‬‬

‫‪ (3‬ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ اﻳﻨﻜﻪ ﺑﺮدار ﻫﺎي ‪ N L‬و ‪ P (t ) − PL‬ﺑﺮ ﻫﻢ ﻋﻤﻮدﻧﺪ دارﻳﻢ ‪:‬‬
‫‪N L • ( P(t ) − PL ) = 0‬‬
‫‪ (4‬ﻣﻘﺪار ) ‪ P (t‬را در ﻓﺮﻣﻮل ﺑﺎﻻ ﺟﺎﻳﮕﺰﻳﻦ ﻣﻴﻜﻨﻴﻢ و ﺳﭙﺲ ﻣﻘﺪار ‪ t‬را از آن ﺑﺼﻮرت زﻳﺮ ﺑﺪﺳﺖ ﻣﻲ آورﻳﻢ‪:‬‬
‫) ‪N • ( P0 − PL‬‬
‫‪t= L‬‬
‫) ‪− N L • ( P1 − P0‬‬
‫‪ (5‬ﻣﻘﺪار ‪ t‬را از راﺑﻄﻪ ﺑﺎﻻ ﺑﺮاي ﺗﻤﺎم ﻧﻘﺎط ﻣﺸﺘﺮك ﺧﻂ و ﻟﺒﻪ ﻫﺎي ﻣﺴﺘﻄﻴﻞ ﺑﺮش ﺑﺪﺳﺖ ﻣﻲ آورﻳﻢ‪.‬‬
‫‪ (6‬ﺑﺮ اﺳﺎس ﻣﻘﺪار ‪ t‬دارﻳﻢ‪:‬‬
‫‪ .a‬ﺗﻤﺎم ‪ t < 0‬ﻳﺎ ‪ t > 1‬رد ﻣﻴﺸﻮﻧﺪ‪.‬‬
‫‪ .b‬ﻧﻘﺎط اﺷﺘﺮاﻛﻲ ﺑﺎﻗﻴﻤﺎﻧﺪه را رده ﺑﻨﺪي ﻣﻴﻜﻨﻴﻢ‪.‬‬
‫‪N L [ P1 − P0 ] < 0‬‬ ‫‪ .i‬ﻧﻘﺎط ﻣﺴﺘﻌﺪ ﺑﺮاي داﺧﻞ ﺑﻮدن)‪(PE‬‬
‫‪N L [ P1 − P0 ] > 0‬‬ ‫‪ .ii‬ﻧﻘﺎط ﻣﺴﺘﻌﺪ ﺑﺮاي ﺧﺎرج ﺑﻮدن)‪(PL‬‬
‫‪ (7‬در اﻳﻦ ﻣﺮﺣﻠﻪ ﻛﻤﺘﺮﻳﻦ ﻣﻘﺪار ‪ PL‬و ﺑﻴﺸﺘﺮﻳﻦ ﻣﻘﺪار ‪ PE‬را ﭘﻴﺪا و ﻣﻘﺪار ‪ t‬آﻧﻬﺎ را در ﻣﻌﺎدﻟﻪ ﭘﺎراﻣﺘﺮي ﺧﻂ‬
‫ﺟﺎﻳﮕﺰﻳﻦ ﻛﺮده و ﺧﻂ ﺑﻴﻦ ﻧﻘﺎط ﺣﺎﺻﻞ را ﺑﻪ ﻋﻨﻮان ﺑﺮﺷﻲ از ﺧﻂ اوﻟﻴﻪ رﺳﻢ ﻣﻴﻜﻨﻴﻢ‪.‬‬
‫‪27‬‬ ‫‪27‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﺗﺒﺪﻳﻼت ﻫﻨﺪﺳﻲ دو ﺑﻌﺪي و ﺳﻪ ﺑﻌﺪي‬

‫ﻓﺼﻞ ﭼﻬﺎرم ‪:‬‬

‫ﺗﺒﺪﻳﻼت ﻫﻨﺪﺳﻲ دو ﺑﻌﺪي‬


‫و‬
‫ﺳﻪ ﺑﻌﺪي‬
‫ﻣﺒﺎﺣﺚ اﻳﻦ ﻓﺼﻞ‪:‬‬

‫™ ﺗﺒﺪﻳﻼت اوﻟﻴﻪ‬
‫• اﻧﺘﻘﺎل‬
‫• دوران‬
‫• ﺗﻐﻴﻴﺮ ﻣﻘﻴﺎس‬
‫™ ﻣﺎﺗﺮﻳﺴﻬﺎي ﻫﻤﮕﻦ‬
‫™ ﺗﺒﺪﻳﻼت ﻣﺮﻛﺐ‬
‫™ ﺗﺒﺪﻳﻼت ﺳﻪ ﺑﻌﺪي‬
‫™ ﺳﺎﻳﺮ ﺗﺒﺪﻳﻼت‬
‫• ﺗﺒﺪﻳﻼت ‪Shear‬‬
‫• ﺗﺒﺪﻳﻼت ‪Affine‬‬
‫‪28‬‬ ‫‪28‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﺗﺒﺪﻳﻼت ﻫﻨﺪﺳﻲ دو ﺑﻌﺪي و ﺳﻪ ﺑﻌﺪي‬
‫ﺗﺒﺪﻳﻼت ﻫﻨﺪﺳﻲ ﻋﺒﺎرﺗﻨﺪ از ﺗﻐﻴﻴﺮ در ﻣﻮﻗﻌﻴﺖ ﻳﺎ ﺷﻜﻞ و ﻳﺎ اﻧﺪازه اﺷﻜﺎل و ﺗﺼﺎوﻳﺮ‪ .‬ﺗﺒﺪﻳﻼت ﻫﻨﺪﺳﻲ اوﻟﻴﻪ ﻋﺒﺎرﺗﻨﺪ از ‪:‬‬
‫اﻧﺘﻘﺎل‪ ،‬دوران و ﺗﻐﻴﻴﺮ ﻣﻘﻴﺎس‪ .‬ﺳﺎﻳﺮ ﺗﺒﺪﻳﻼﺗﻲ ﻛﻪ ﺑﻪ اﺷﻜﺎل اﻋﻤﺎل ﻣﻴﺸﻮﻧﺪ ﻋﺒﺎرﺗﻨﺪ از ‪ :‬اﻧﻌﻜﺎس و ﺗﺒﺪﻳﻼت ‪. Shear‬‬

‫ﺗﺒﺪﻳﻼت اوﻟﻴﻪ ‪:‬‬


‫در اﻳﻨﺠﺎ ﺑﻪ ﺗﺒﺪﻳﻼت ﻫﻨﺪﺳﻲ ﭘﺎﻳﻪ ﻣﻴﭙﺮدازﻳﻢ و در ﺑﺨﺶ ﺑﻌﺪي ﺑﻴﺎن ﻣﻴﻜﻨﻴﻢ ﭼﮕﻮﻧﻪ اﻳﻦ ﺗﺒﺪﻳﻼت را ﺑﻪ ﺻﻮرت ﺑﻴﺎن رﻳﺎﺿﻲ‬
‫از ﻣﺎﺗﺮﻳﺴﻬﺎي ﺳﺎده ﺗﺮ ﭘﻴﺎده ﺳﺎزي ﻛﻨﻴﻢ ﺗﺎ ﺑﺘﻮان ﺗﺮﻛﻴﺒﻲ از اﻳﻦ ﺗﺒﺪﻳﻼت را ﻣﺤﺎﺳﺒﻪ ﻛﺮد‪.‬‬

‫اﻧﺘﻘﺎل ‪:‬‬
‫اﻧﺘﻘﺎل ﻳﻌﻨﻲ ﺣﺮﻛﺖ دادن ﻳﻚ ﺷﺊ در اﻣﺘﺪاد ﻳﻚ ﺧﻂ راﺳﺖ از ﻧﻘﻄﻪ اي ﺑﻪ ﻧﻘﻄﻪ دﻳﮕﺮ‪ .‬ﺑﺮاي اﻧﺘﻘﺎل ﻳﻚ ﻧﻘﻄﻪ در‬
‫(‬
‫‪ t x , t y‬را ﺑﻪ ﻣﺨﺘﺼﺎت آن ﻧﻘﻄﻪ اﺿﺎﻓﻪ ﻛﻨﻴﻢ‪.‬‬ ‫ﻣﺨﺘﺼﺎت دو ﺑﻌﺪي ﻛﺎﻓﻴﺴﺖ ﻣﺨﺘﺼﺎت ﺑﺮدار اﻧﺘﻘﺎل )‬
‫‪x′ = x + t x‬‬ ‫‪,‬‬ ‫‪y′ = y + t y‬‬
‫ﺷﻜﻞ زﻳﺮ اﻧﺘﻘﺎل ﻧﻘﻄﻪ ﺗﻮﺳﻂ ﺑﺮدار اﻧﺘﻘﺎل ﻧﺸﺎن ﻣﻴﺪﻫﺪ ‪:‬‬

‫ﻣﻌﺎدﻻت ﺑﺎﻻ را ﻣﻴﺘﻮان ﺑﻪ ﺻﻮرت ﻣﺎﺗﺮﻳﺴﻲ ﻧﻴﺰ ﺑﻴﺎن ﻛﺮد‪:‬‬


‫⎤‪⎡ x‬‬ ‫⎤ ‪⎡ x′‬‬ ‫⎤ ‪⎡t x‬‬
‫⎥ ⎢ = ‪p = ⎢ ⎥ , p′ = ⎢ ⎥ , t‬‬
‫⎦‪⎣ y‬‬ ‫⎦‪⎣ y′‬‬ ‫⎦ ‪⎣t y‬‬
‫‪p′ = p + t‬‬
‫واﺿﺢ اﺳﺖ ﻛﻪ اﻧﺘﻘﺎل ﻧﻮﻋﻲ ﺗﺒﺪﻳﻞ ﻫﻨﺪﺳﻲ ﺳﺨﺖ اﺳﺖ ﻳﻌﻨﻲ ﺷﻜﻞ را ﺗﻐﻴﻴﺮ ﻧﻤﻴﺪﻫﺪ‪ ،‬ﺗﻨﻬﺎ ﻣﻜﺎن ﻫﺮﻧﻘﻄﻪ از ﺗﺼﻮﻳﺮ را‬
‫ﺗﻮﺳﻂ ﻳﻚ ﻣﻘﺪار ﺛﺎﺑﺖ ﺗﻐﻴﻴﺮ ﻣﻴﺪﻫﺪ‪.‬‬
‫‪29‬‬ ‫‪29‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﺗﺒﺪﻳﻼت ﻫﻨﺪﺳﻲ دو ﺑﻌﺪي و ﺳﻪ ﺑﻌﺪي‬

‫دوران ‪:‬‬
‫دوران در ﻣﺨﺘﺼﺎت دو ﺑﻌﺪي ﻳﻌﻨﻲ اﻧﺘﻘﺎل ﺷﺊ روي ﻳﻚ ﻣﺴﻴﺮ داﻳﺮه اي در ﺻﻔﺤﻪ ‪ . xy‬ﺑﺮاي اﻧﺠﺎم ﻋﻤﻞ دوران ﺑﻪ دو‬
‫ﭘﺎراﻣﺘﺮ ﻧﻴﺎز دارﻳﻢ‪ :‬اول زاوﻳﻪ ﭼﺮﺧﺶ و دوم ﻧﻘﻄﻪ ﻣﺤﻮري‪ .‬اﺑﺘﺪا ﻣﻌﺎدﻻت دوران ﻳﻚ ﻧﻘﻄﻪ ﺣﻮل ﻣﺒﺪأ ﻣﺨﺘﺼﺎت را ﺑﺪﺳﺖ‬
‫ﻣﻲ آورﻳﻢ‪ .‬ﺷﻜﻞ زﻳﺮ دوران ﻧﻘﻄﻪ ﺣﻮل ﻣﺒﺪأ ﻣﺨﺘﺼﺎت را ﻧﺸﺎن ﻣﻴﺪﻫﺪ‪.‬‬

‫‪x′ = r cos(φ + θ ) = r cos φ cos θ − r sin φ sin θ‬‬


‫‪y′ = r sin(φ + θ ) = r cos φ sin θ + r sin φ cos θ‬‬

‫ﻫﻤﭽﻨﻴﻦ ﻣﺨﺘﺼﺎت اوﻟﻴﻪ ﻧﻘﻄﻪ در ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ ‪:‬‬


‫‪x = r cos φ‬‬ ‫‪,‬‬ ‫‪y = r sin φ‬‬
‫ﺑﺎ ﺟﺎﻳﮕﺰﻳﻨﻲ ﻣﻌﺎدﻻت ﺑﺎﻻ دارﻳﻢ‪:‬‬
‫‪x′ = x cos θ − y sin θ‬‬
‫‪y′ = x sin θ + y cos θ‬‬
‫ﻣﺎﻧﻨﺪ ﻗﺒﻞ ﻣﻴﺘﻮان اﻳﻦ ﻣﻌﺎدﻻت را ﺑﺮ ﺣﺴﺐ ﻣﺎﺗﺮﻳﺴﻬﺎ ﺑﺪﺳﺖ آورد‪:‬‬
‫⎤‪⎡ x‬‬ ‫⎤ ‪⎡ x′‬‬ ‫‪⎡cos θ‬‬ ‫⎤ ‪− sin θ‬‬
‫⎢ = ‪p = ⎢ ⎥ , p′ = ⎢ ⎥ , R‬‬
‫⎦‪⎣ y‬‬ ‫⎦‪⎣ y′‬‬ ‫‪⎣ sin θ‬‬ ‫⎦⎥ ‪cos θ‬‬
‫‪p′ = R. p‬‬
‫ﺑﺮاي دوران ﺣﻮل ﻧﻘﻄﻪ ﻏﻴﺮﻣﺒﺪأ از ﻓﺮﻣﻮل ﻫﺎي زﻳﺮ اﺳﺘﻔﺎده ﻣﻴﻜﻨﻴﻢ‪:‬‬

‫‪x′ = x1 + ( x − x1 ) cos θ − ( y − y1 ) sin θ‬‬


‫‪y′ = y1 + ( x − x1 ) sin θ + ( y − y1 ) cos θ‬‬

‫ﻧﻜﺘﻪ ‪ : 1‬ﺟﺮﺧﺶ در ﺟﻬﺖ ﻋﻜﺲ ﺣﺮﻛﺖ ﻋﻘﺮﺑﻪ ﻫﺎي ﺳﺎﻋﺖ اﺳﺖ ‪.‬‬
‫ﻧﻜﺘﻪ ‪ : 2‬واﺿﺢ اﺳﺖ ﻛﻪ دوران ﻳﻚ ﺗﺒﺪﻳﻞ ﺳﺨﺖ اﺳﺖ‪..‬‬
‫‪30‬‬ ‫‪30‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﺗﺒﺪﻳﻼت ﻫﻨﺪﺳﻲ دو ﺑﻌﺪي و ﺳﻪ ﺑﻌﺪي‬

‫ﺗﻐﻴﻴﺮ ﻣﻘﻴﺎس‪:‬‬
‫ﺗﻐﻴﻴﺮ ﻣﻘﻴﺎس ﺗﺒﺪﻳﻠﻲ اﺳﺖ ﻛﻪ اﻧﺪازه ﺗﺼﻮﻳﺮ را ﺗﻐﻴﻴﺮ ﻣﻴﺪﻫﺪ‪ .‬ﺑﺮاي ﺗﻐﻴﻴﺮ اﻧﺪازه از ﺿﺮﻳﺐ ﻣﻘﻴﺎس اﺳﺘﻔﺎده ﻣﻴﺸﻮد‪.‬‬
‫‪x′ = x ⋅ s x‬‬ ‫‪,‬‬ ‫‪y′ = y ⋅ s y‬‬
‫ﻛﻪ در آن ‪ sx‬ﺗﻐﻴﻴﺮ اﻧﺪازه روي ﻣﺤﻮر ‪ x‬و ‪ s y‬ﺗﻐﻴﻴﺮ اﻧﺪازه روي ﻣﺤﻮر ‪ y‬ﻣﻴﺒﺎﺷﺪ‪ .‬اﻳﻦ ﻣﻌﺎدﻻت را ﻣﻴﺘﻮان ﺑﻪ ﺻﻮرت‬
‫ﻣﻌﺎدﻻت زﻳﺮ ﻧﻮﺷﺖ‪:‬‬
‫⎤‪⎡ x‬‬ ‫⎤ ‪⎡ x′‬‬ ‫⎤ ‪⎡Sx 0‬‬
‫⎢ = ‪p = ⎢ ⎥ , p′ = ⎢ ⎥ , S‬‬ ‫⎥‬ ‫‪⇒ p′ = S . p‬‬
‫⎦‪⎣ y‬‬ ‫⎦‪⎣ y′‬‬ ‫⎣‬ ‫‪0‬‬ ‫‪S‬‬ ‫‪y‬‬ ‫⎦‬
‫ﻣﻴﺘﻮان ﻫﺮ ﻣﻘﺪار ﻣﺜﺒﺘﻲ را ﺑﻪ ﺿﺮﻳﺐ ﻣﻘﻴﺎس ﻧﺴﺒﺖ داد‪ .‬ﻣﻘﺎدﻳﺮ ﻛﻤﺘﺮ از ﻳﻚ ﻣﻮﺟﺐ ﻛﻮﭼﻚ ﺷﺪن و ﻣﻘﺎدﻳﺮ ﺑﻴﺸﺘﺮ از ﻳﻚ‬
‫ﻣﻮﺟﺐ ﺑﺰرﮔﺘﺮ ﺷﺪن ﺟﺴﻢ ﻣﻲ ﺷﻮد‪ .‬اﮔﺮ ﺑﻪ ﻫﺮ دو ﻣﺆﻟﻔﻪ ي ﺿﺮﻳﺐ ﻣﻘﻴﺎس‪ ،‬ﻣﻘﺪار ﻳﻚ داده ﺷﻮد‪ ،‬در اﻳﻦ ﺻﻮرت ﺷﻜﻞ‬
‫ﺗﻐﻴﻴﺮ اﻧﺪازه ﻧﺨﻮاﻫﺪ داد‪.‬‬

‫ﻧﻤﺎﻳﺶ ﻣﺎﺗﺮﻳﺴﻲ و ﻣﺨﺘﺼﺎت ﻫﻤﮕﻦ‪:‬‬


‫در ﺑﺮﻧﺎﻣﻪ ﻫﺎي ﮔﺮاﻓﻴﻜﻲ ﻣﻌﻤﻮﻻً از ﺗﺮﻛﻴﺒﻲ از ﺗﺒﺪﻳﻼت ﻣﺘﻮاﻟﻲ اﺳﺘﻔﺎده ﻣﻴﺸﻮد‪ .‬دراﻳﻦ ﺑﺨﺶ ﻣﺎ ﻓﺮﻣﻮﻟﻬﺎي ﻣﺎﺗﺮﻳﺴﻲ ﺑﺨﺶ‬
‫ﻗﺒﻞ را دوﺑﺎره ﺑﺎزﻧﻮﻳﺴﻲ ﻣﻴﻜﻨﻴﻢ ﺗﺎ ﻓﺮاﻳﻨﺪ ﭼﻨﺪ ﺗﺒﺪﻳﻞ ﻣﺘﻮاﻟﻲ را راﺣﺘﺘﺮ اﻧﺠﺎم دﻫﻴﻢ‪ .‬در ﺑﺨﺶ ﭘﻴﺶ دﻳﺪﻳﻢ ﻛﻪ ﻫﺮ ﻳﻚ از‬
‫ﺗﺒﺪﻳﻼت اوﻟﻴﻪ را ﻣﻴﺘﻮان ﺑﻪ ﺻﻮرت زﻳﺮ ﺑﻴﺎن ﻛﺮد ‪:‬‬
‫‪P′ = M 1.P + M 2‬‬
‫ﻛﻪ در آن ‪ P‬ﻣﺨﺘﺼﺎت ﻧﻘﻄﻪ اوﻟﻴﻪ‪ P ′ ،‬ﻣﺨﺘﺼﺎت ﻧﻘﻄﻪ ﻧﻬﺎﻳﻲ‪ M 1 ،‬ﻳﻚ ﻣﺎﺗﺮﻳﺲ دو در دو ﻛﻪ ﻣﻴﺘﻮاﻧﺪ ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺿﺮﻳﺐ‬
‫ﻣﻘﻴﺎس و ﻳﺎ ﻳﻚ ﻣﺎﺗﺮﻳﺲ دوران ﺑﺎﺷﺪ و در ﻧﻬﺎﻳﺖ ‪ M 2‬ﺑﺮاﺑﺮ ﺑﺎ ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻳﻚ در دو اﺳﺖ ﻛﻪ ﻳﻚ ﻣﺎﺗﺮﻳﺲ اﻧﺘﻘﺎل اﺳﺖ‪.‬‬
‫اﮔﺮ ﺑﻪ ﺟﺎي اﺳﺘﻔﺎده از ﻣﺎﺗﺮﻳﺲ دو در دو از ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺳﻪ در ﺳﻪ اﺳﺘﻔﺎده ﻛﻨﻴﻢ‪ ،‬ﻣﻴﺘﻮاﻧﻴﻢ ﺗﻤﺎم ﺗﺒﺪﻳﻼت را ﺑﺼﻮرت‬
‫ﺿﺮب ﺑﻴﺎن ﻛﻨﻴﻢ‪ .‬ﺑﺮاي اﻳﻦ ﻣﻨﻈﻮر ﺑﻪ ﺟﺎي اﺳﺘﻔﺎده از ﻣﺨﺘﺼﺎت دوﺑﻌﺪي ) ‪ ( x, y‬از ﻣﺨﺘﺼﺎت ﺳﻪ ﺑﻌﺪي )‪ ( x, y,1‬اﺳﺘﻔﺎده‬
‫ﻣﻴﻜﻨﻴﻢ‪ .‬اﺳﺘﻔﺎده از ﻣﺨﺘﺼﺎت ﺳﻪ ﺑﻌﺪي اﻳﻦ اﻣﻜﺎن را ﻣﻴﺪﻫﺪ ﺗﺎ ﻓﺮﻣﻮﻟﻬﺎي ﺗﺒﺪﻳﻼت را دوﺑﺎره و ﺗﻨﻬﺎ ﺑﺮ اﺳﺎس ﺿﺮب ﺑﻴﺎن‬
‫ﻛﻨﻴﻢ‪ .‬ﺣﺎل دوﺑﺎره ﻓﺮﻣﻮﻟﻬﺎي ﺗﺒﺪﻳﻼت ﻫﻨﺪﺳﻲ را ﺑﺮ اﺳﺎس ﺿﺮب ﻣﺎﺗﺮﻳﺴﻬﺎي ﺳﻪ در ﺳﻪ ﺑﻴﺎن ﻣﻴﻜﻨﻴﻢ‪:‬‬
‫اﻧﺘﻘﺎل ‪:‬‬
‫⎤ ‪⎡ x′ ⎤ ⎡ 1 0 t x ⎤ ⎡ x‬‬
‫⎥ ‪⎢ y′⎥ = ⎢0 1 t ⎥ ⋅ ⎢ y‬‬ ‫‪,‬‬ ‫‪P′ = T (t x , t y ) ⋅ P‬‬
‫⎢ ⎥ ⎢‬ ‫⎥ ⎢ ⎥‪y‬‬

‫⎦⎥ ‪⎢⎣ 1 ⎥⎦ ⎢⎣0 0 1 ⎥⎦ ⎢⎣ 1‬‬


‫دوران‪:‬‬
‫‪⎡ x′ ⎤ ⎡cos θ‬‬ ‫‪− sin θ‬‬ ‫⎤ ‪0⎤ ⎡ x‬‬
‫‪⎢ y′⎥ = ⎢ sin θ‬‬ ‫‪cos θ‬‬ ‫⎥⎥ ‪0⎥⎥ ⋅ ⎢⎢ y‬‬ ‫‪,‬‬ ‫‪P′ = R(θ ) ⋅ P‬‬
‫⎢ ⎥ ⎢‬
‫‪⎢⎣ 1 ⎥⎦ ⎢⎣ 0‬‬ ‫‪0‬‬ ‫⎦⎥ ‪1 ⎥⎦ ⎢⎣ 1‬‬

‫ﺗﻐﻴﻴﺮ ﻣﻘﻴﺎس‪:‬‬
‫‪⎡ x′ ⎤ ⎡ S x‬‬ ‫‪0‬‬ ‫⎤ ‪0⎤ ⎡ x‬‬
‫‪⎢ y′⎥ = ⎢ 0‬‬ ‫‪sy‬‬ ‫⎥⎥ ‪0⎥⎥ ⋅ ⎢⎢ y‬‬ ‫‪,‬‬ ‫‪P′ = S ( s x , s y ) ⋅ P‬‬
‫⎢ ⎥ ⎢‬
‫‪⎢⎣ 1 ⎥⎦ ⎢⎣ 0‬‬ ‫‪0‬‬ ‫⎦⎥ ‪1 ⎥⎦ ⎢⎣ 1‬‬
‫‪31‬‬ ‫‪31‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﺗﺒﺪﻳﻼت ﻫﻨﺪﺳﻲ دو ﺑﻌﺪي و ﺳﻪ ﺑﻌﺪي‬

‫ﺗﺒﺪﻳﻼت ﻣﺮﻛﺐ‬
‫ﺑﺎ اﺳﺘﻔﺎده از ﻧﻤﺎﻳﺶ ﻣﺎﺗﺮﻳﺴﻲ ﻛﻪ در ﺑﺨﺶ ﻗﺒﻞ اراﺋﻪ ﺷﺪ‪ ،‬ﻣﻴﺘﻮان ﺑﺮاي ﻫﺮ ﺗﺮﻛﻴﺒﻲ از ﺗﺒﺪﻳﻼت ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺗﺒﺪﻳﻞ ﻣﺮﻛﺐ‬
‫ﺑﻨﻮﻳﺴﻴﻢ‪ .‬ﻣﺎﺗﺮﻳﺲ ﺣﺎﺻﻞ را ﻣﻌﻤﻮﻻً ﻣﺎﺗﺮﻳﺲ ﻣﺮﻛﺐ ﻳﺎ ﻣﺎﺗﺮﻳﺲ اﻟﺤﺎق ﻣﻲ ﻧﺎﻣﻨﺪ‪ .‬ﺑﺮاي ﺑﺪﺳﺖ آوردن ﻣﺎﺗﺮﻳﺲ ﺗﺒﺪﻳﻞ ﻣﺮﻛﺐ‪،‬‬
‫ﻣﺎﺗﺮﻳﺴﻬﺎي ﺗﺒﺪﻳﻞ را از آﺧﺮ ﺑﻪ اول در ﻫﻢ ﺿﺮب ﻣﻴﻜﻨﻴﻢ‪.‬‬
‫و ‪ T2‬ﺑﻪ ﻳﻚ ﻧﻘﻄﻪ اﻋﻤﺎل ﺷﻮد‪ ،‬ﻣﺎﺗﺮﻳﺲ ﺗﺒﺪﻳﻞ ﻣﺮﻛﺐ ﺑﻪ ﺻﻮرت زﻳﺮ ﺑﺪﺳﺖ ﻣﻲ آﻳﺪ‪.‬‬ ‫اﮔﺮ دو ﺗﺒﺪﻳﻞ اﻧﺘﻘﺎل ‪T1‬‬
‫⎤ ‪⎡1 0 t x 2 ⎤ ⎡1 0 t x1 ⎤ ⎡1 0 t x1 + t x 2‬‬
‫⎥ ‪⎢0 1 t ⎥ ⋅ ⎢0 1 t ⎥ = ⎢0 1 t + t‬‬
‫⎢‬ ‫⎢ ⎥ ‪y2‬‬ ‫⎥ ‪y1‬‬ ‫⎢‬ ‫‪y1‬‬ ‫⎥ ‪y2‬‬

‫‪⎢⎣ 0 0 1 ⎥⎦ ⎢⎣ 0 0 1 ⎥⎦ ⎢⎣0 0‬‬ ‫⎦⎥ ‪1‬‬

‫ﺑﻪ ﻫﻤﻴﻦ ﺗﺮﺗﻴﺐ ﺑﺮاي دو دوران ﻣﺘﻮاﻟﻲ ) ‪ R (θ1‬و ) ‪ R (θ 2‬دارﻳﻢ ‪:‬‬


‫) ‪Rtotal = R(θ 2 ).R(θ1 ) = R (θ1 + θ 2‬‬
‫و در ﻧﻬﺎﻳﺖ ﺑﺮاي دو ﺗﻐﻴﻴﺮ ﻣﻘﻴﺎس ﻣﺘﻮاﻟﻲ ﺑﺎ ﺿﺮﻳﺐ ‪ S1‬و ‪ S 2‬دارﻳﻢ ‪:‬‬

‫‪⎡ sx 2‬‬ ‫‪0‬‬ ‫‪0 ⎤ ⎡ sx1‬‬ ‫‪0 0⎤ ⎡ sx1.sx 2‬‬ ‫‪0‬‬ ‫⎤‪0‬‬
‫‪⎢0‬‬ ‫‪sy2‬‬ ‫‪0 ⎥⎥ ⋅ ⎢⎢ 0‬‬ ‫‪s y1 0⎥⎥ = ⎢⎢ 0‬‬ ‫‪s y1.s y 2‬‬ ‫⎥⎥ ‪0‬‬
‫⎢‬
‫‪⎢⎣ 0‬‬ ‫‪0‬‬ ‫‪1 ⎥⎦ ⎢⎣ 0‬‬ ‫‪0 1 ⎥⎦ ⎢⎣ 0‬‬ ‫‪0‬‬ ‫⎦⎥ ‪1‬‬

‫دوران ﺣﻮل ﻧﻘﻄﻪ دﻟﺨﻮاه ‪:‬‬


‫ﺑﺮاي دوران ﺣﻮل ﻧﻘﻄﻪ دﻟﺨﻮاه ﻣﺮاﺣﻞ زﻳﺮ را دﻧﺒﺎل ﻣﻴﻜﻨﻴﻢ‪:‬‬
‫‪ -1‬ﺷﻜﻞ را ﻫﻤﺮاه ﺑﺎ ﻧﻘﻄﻪ ﻣﺤﻮري ﺑﻪ ﻣﺒﺪأ اﻧﺘﻘﺎل ﻣﻴﺪﻫﻴﻢ‪.‬‬
‫‪ -2‬ﺷﻜﻞ را ﺣﻮل ﻣﺒﺪأ ﻣﺨﺘﺼﺎت دوران ﻣﻴﺪﻫﻴﻢ ‪.‬‬
‫‪ -3‬ﺷﻜﻞ را ﺑﻪ ﻣﻜﺎن اوﻟﻴﻪ ﺧﻮد ﺑﺎز ﻣﻴﮕﺮداﻧﻴﻢ‪.‬‬
‫اﻳﻦ اﻧﺘﻘﺎﻻت در ﺷﻜﻞ زﻳﺮ ﻧﺸﺎن داده ﺷﺪه اﺳﺖ)از ﭼﭗ ﺑﻪ راﺳﺖ(‪.‬‬

‫ﺑﻨﺎﺑﺮاﻳﻦ اﺑﺘﺪا ﻳﻚ اﻧﺘﻘﺎل در اﻣﺘﺪاد ﺑﺮدار ) ‪ (− xc , − yc‬ﺳﭙﺲ ﻳﻚ دوران ﺑﻪ اﻧﺪازه ‪ θ‬و در ﻧﻬﺎﻳﺖ ﻳﻚ اﻧﺘﻘﺎل دﻳﮕﺮ در‬
‫اﻣﺘﺪاد ﺑﺮدار ) ‪ . ( xc , yc‬ﻟﺬا ﻣﺎﺗﺮﻳﺲ ﺗﺮﻛﻴﺐ ﺑﻪ ﺻﻮرت زﻳﺮ ﺑﺪﺳﺖ ﻣﻲ آﻳﺪ‪.‬‬
‫‪32‬‬ ‫‪32‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﺗﺒﺪﻳﻼت ﻫﻨﺪﺳﻲ دو ﺑﻌﺪي و ﺳﻪ ﺑﻌﺪي‬

‫‪⎡1 0‬‬ ‫‪xr ⎤ ⎡cos θ‬‬ ‫‪− sin θ‬‬ ‫‪0⎤ ⎡1 0 − xr ⎤ ⎡ cos θ‬‬ ‫‪− sin θ‬‬ ‫⎤ ‪xr (1 − cos θ ) + yr sin θ‬‬
‫‪⎢0 1‬‬ ‫‪yr ⎥⎥ ⋅ ⎢⎢ sin θ‬‬ ‫‪cos θ‬‬ ‫‪0 ⎥⎥ . ⎢⎢ 0 1 − yr ⎥⎥ = ⎢⎢ sin θ‬‬ ‫‪cos θ‬‬ ‫⎥⎥ ‪yr (1 − cos θ ) − xr sin θ‬‬
‫⎢‬
‫‪⎢⎣ 0 0‬‬ ‫‪1 ⎥⎦ ⎢⎣ 0‬‬ ‫‪0‬‬ ‫‪1 ⎥⎦ ⎢⎣ 0 0 1 ⎥⎦ ⎢⎣ 0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫⎦⎥‬

‫ﺑﺮاي ﻋﻤﻞ ﺗﻐﻴﻴﺮ ﻣﻘﻴﺎس ﻧﻴﺰ ﻛﺎﻓﻴﺴﺖ ﻛﻪ ﻧﻘﻄﻪ را ﺑﻪ ﻣﺒﺪأ ﻣﺨﺘﺼﺎت اﻧﺘﻘﺎل و ﺳﭙﺲ ﻋﻤﻞ ﺗﻐﻴﻴﺮ ﻣﻘﻴﺎس را اﻧﺠﺎم دﻫﻴﻢ‪.‬‬

‫ﺗﺒﺪﻳﻼت ﺳﻪ ﺑﻌﺪي ‪:‬‬


‫در ﻣﺨﺘﺼﺎت ﺳﻪ ﺑﻌﺪي‪ ،‬ﻳﻚ ﻧﻘﻄﻪ از ﻣﻮﻗﻌﻴﺖ ) ‪ P ( x, y , z‬ﺑﻪ ﻣﻮﻗﻌﻴﺖ )‪ P′( x′, y′, z ′‬ﺗﻮﺳﻂ ﻣﺎﺗﺮﻳﺲ زﻳﺮ‬ ‫اﻧﺘﻘﺎل ‪:‬‬
‫اﻧﺘﻘﺎل ﻣﻲ ﻳﺎﺑﺪ‪.‬‬
‫‪⎡ x′ ⎤ ⎡ 1‬‬ ‫‪0‬‬ ‫⎤ ‪0 tx ⎤ ⎡ x‬‬
‫⎢ ⎥‪⎢ ′‬‬ ‫‪⎧ x = x + tx‬‬
‫‪⎢ y ⎥ = ⎢0‬‬ ‫‪1‬‬ ‫⎪ ⎥⎥ ‪0 t y ⎥⎥ ⎢⎢ y‬‬
‫⋅‬ ‫‪⇒ ⎨ y = y + ty‬‬
‫‪⎢ z′ ⎥ ⎢0‬‬ ‫‪0‬‬ ‫⎪ ⎥ ‪1 tz ⎥ ⎢ z‬‬
‫⎢ ⎥ ⎢‬ ‫⎥ ⎢ ⎥‬ ‫‪z = z + tz‬‬
‫‪⎣ 1 ⎦ ⎣0‬‬ ‫‪0‬‬ ‫⎩ ⎦ ‪0 1 ⎦ ⎣1‬‬
‫ﺗﻐﻴﻴﺮ اﻧﺪازه ‪ :‬ﻣﺎﺗﺮﻳﺲ ﺗﻐﻴﻴﺮ اﻧﺪازه را ﻣﻴﺘﻮان ﺑﻪ ﺻﻮرت زﻳﺮ ﻧﻮﺷﺖ ‪:‬‬
‫‪⎡ x′ ⎤ ⎡ S x‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫⎤ ‪0⎤ ⎡ x‬‬
‫‪⎢ y′⎥ ⎢ 0‬‬ ‫‪⎧ x = x.S x‬‬
‫⎢=⎥ ⎢‬ ‫‪Sy‬‬ ‫‪0‬‬ ‫⎪ ⎥⎥ ‪0 ⎥⎥ ⎢⎢ y‬‬
‫⋅‬ ‫‪⇒ ⎨ y = y.S y‬‬
‫‪⎢ z′ ⎥ ⎢ 0‬‬ ‫‪0‬‬ ‫‪Sz‬‬ ‫⎪ ⎥ ‪0⎥ ⎢ z‬‬
‫⎢ ⎥ ⎢‬ ‫⎥ ⎢ ⎥‬ ‫‪z = z.S z‬‬
‫‪⎣1⎦ ⎣ 0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫⎩ ⎦ ‪1⎦ ⎣ 1‬‬
‫دوران ‪ :‬ﺑﺮاي ﺗﻮﻟﻴﺪ ﻳﻚ ﺗﺒﺪﻳﻞ دوران ﺑﺎﻳﺪ ﻣﺤﻮر دوران و زاوﻳﻪ ﭼﺮﺧﺶ را ﻣﺸﺨﺺ ﻛﻨﻴﻢ‪ .‬در ﺳﻪ ﺑﻌﺪي دوران را ﻣﻴﺘﻮان‬
‫ﺣﻮل ﻫﺮ ﺧﻂ ﻣﻮﺟﻮد در ﻓﻀﺎ اﻧﺠﺎم داد اﻣﺎ در اﻳﻨﺠﺎ ﻣﺎ ﺗﻨﻬﺎ دوران ﺣﻮل ﻣﺤﻮرﻫﺎي ﻣﺨﺘﺼﺎت را ﺑﺮرﺳﻲ ﻣﻲ ﻛﻨﻴﻢ‪.‬‬
‫دوران ﺣﻮل ﻣﺤﻮر ‪: z‬‬

‫⎤ ‪⎡ x′ ⎤ ⎡cos θ − sin θ 0 0 ⎤ ⎡ x‬‬


‫‪⎧ x′ = x cos θ − y sin θ‬‬ ‫⎥ ‪⎢ y′⎥ ⎢ sin θ cos θ 0 0 ⎥ ⎢ y‬‬
‫⎪‬
‫⎢ = ⎥ ⎢ ⇒ ‪⎨ y′ = x sin θ + y cos θ‬‬ ‫⎥ ⎢⋅⎥‬
‫‪⎪ z′ = z‬‬ ‫⎢‬ ‫‪z‬‬ ‫‪′‬‬ ‫⎥‬ ‫⎢‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫⎥‪⎥ ⎢z‬‬
‫⎩‬ ‫⎢ ⎥ ⎢‬ ‫⎥ ⎢ ⎥‬
‫‪⎣1⎦ ⎣ 0‬‬ ‫‪0‬‬ ‫⎦ ‪0 1⎦ ⎣ 1‬‬
‫ﺑﺮاي ﺑﺪﺳﺖ آوردن ﻓﺮﻣﻮل دوران ﺣﻮل ﺳﺎﻳﺮ ﻣﺤﻮرﻫﺎ از ﺟﺎﻳﮕﺬاري ‪ x → y → z → x‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪.‬‬
‫دوران ﺣﻮل ﻣﺤﻮر ‪: x‬‬

‫‪⎡ x′ ⎤ ⎡ 1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫⎤ ‪0⎤ ⎡ x‬‬


‫‪⎧ x′ = x‬‬ ‫‪⎢ y′⎥ ⎢0 cos θ‬‬
‫⎪‬ ‫⎢=⎥ ⎢‬ ‫‪− sin θ‬‬ ‫⎥⎥ ‪0 ⎥⎥ ⎢⎢ y‬‬
‫⎨‬ ‫‪y‬‬ ‫‪′‬‬ ‫=‬ ‫‪y‬‬ ‫‪cos‬‬ ‫‪θ‬‬ ‫‪−‬‬ ‫‪z‬‬ ‫‪sin‬‬ ‫‪θ‬‬ ‫⇒‬ ‫⋅‬
‫‪⎪ z′ = y sin θ + z cos θ‬‬ ‫‪⎢ z′ ⎥ ⎢0 sin θ‬‬ ‫‪cos θ‬‬ ‫⎥ ‪0⎥ ⎢ z‬‬
‫⎩‬ ‫⎢ ⎥ ⎢‬ ‫⎥ ⎢ ⎥‬
‫‪⎣ 1 ⎦ ⎣0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫⎦ ‪1⎦ ⎣ 1‬‬
‫‪33‬‬ ‫‪33‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﺗﺒﺪﻳﻼت ﻫﻨﺪﺳﻲ دو ﺑﻌﺪي و ﺳﻪ ﺑﻌﺪي‬
‫دوران ﺣﻮل ﻣﺤﻮر‪: y‬‬

‫‪⎡ x′ ⎤ ⎡ cos θ‬‬ ‫‪0 sin θ‬‬ ‫⎤ ‪0⎤ ⎡ x‬‬


‫‪⎧ x′ = z cos θ − x cos θ‬‬ ‫‪⎢ y′⎥ ⎢ 0‬‬
‫⎪‬ ‫‪1‬‬ ‫‪0‬‬ ‫⎥⎥ ‪0 ⎥⎥ ⎢⎢ y‬‬
‫‪⎨ y′ = y‬‬ ‫⎢=⎥ ⎢⇒‬ ‫⋅‬
‫⎪‬ ‫‪⎢ z′ ⎥ ⎢ − sin θ‬‬ ‫‪0 cos θ‬‬ ‫⎥ ‪0⎥ ⎢ z‬‬
‫‪⎩ z′ = z cos θ − x sin θ‬‬ ‫⎢ ⎥ ⎢‬ ‫⎥ ⎢ ⎥‬
‫‪⎣1⎦ ⎣ 0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫⎦ ‪1⎦ ⎣ 1‬‬

‫ﺳﺎﻳﺮ ﺗﺒﺪﻳﻼت ‪:‬‬


‫ﻋﻼوه ﺑﺮ ﺗﺒﺪﻳﻼت اوﻟﻴﻪ ﻛﻪ ﺑﻴﺎن ﺷﺪﻧﺪ‪ ،‬ﺗﺒﺪﻳﻼت ﻣﻔﻴﺪ دﻳﮕﺮي ﻧﻴﺰ وﺟﻮد دارﻧﺪ ﻛﻪ ﻣﻬﻤﺘﺮﻳﻦ آﻧﻬﺎ ﻋﺒﺎرﺗﻨﺪ از ‪ :‬ﺑﺎزﺗﺎب و‬
‫ﺗﺒﺪﻳﻼت ‪.Shear‬‬
‫ﺑﺮاي ﻋﻤﻞ ﺑﺎزﺗﺎب ﻳﻚ ﻣﺤﻮر ﺑﺎزﺗﺎب ﻧﻴﺎز دارﻳﻢ ‪ .‬در دو ﺑﻌﺪي اﻳﻦ ﻣﺤﻮر ﻣﻴﺘﻮاﻧﺪ ﻫﺮ ﺧﻄﻲ در ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت ﺑﺎﺷﺪ‪ .‬ﻣﺎ در‬
‫اﻳﻦ ﺟﺎ ﺑﺎزﺗﺎب ﻧﺴﺒﺖ ﺑﻪ ﻣﺤﻮرﻫﺎي اﺻﻠﻲ و ﻣﺤﻮرﻫﺎي ﻓﺮﻋﻲ ﺑﻴﺎن ﻣﻴﻜﻨﻴﻢ‪.‬‬

‫ﻣﻌﺎدﻻت ﻣﺮﺑﻮط ﺑﻪ ﺑﺎزﺗﺎب اﺷﻜﺎل ﺑﺎﻻ ﻋﺒﺎرﺗﻨﺪ از ‪:‬‬


‫⎤ ‪⎡1 0 0‬‬ ‫⎤ ‪⎡ −1 0 0‬‬ ‫⎤ ‪⎡ −1 0 0‬‬ ‫⎤‪⎡0 1 0‬‬
‫⎥ ‪⎢ 0 −1 0‬‬ ‫⎥‪⎢ 0 1 0‬‬ ‫⎥ ‪⎢ 0 −1 0‬‬ ‫⎥ ‪⎢1 0 0‬‬
‫⎢‬ ‫⎥‬ ‫⎢‬ ‫⎥‬ ‫⎢‬ ‫⎥‬ ‫⎢‬ ‫⎥‬
‫⎦⎥ ‪⎣⎢ 0 0 1‬‬ ‫⎦⎥ ‪⎣⎢ 0 0 1‬‬ ‫⎦⎥ ‪⎣⎢ 0 0 1‬‬ ‫⎦⎥ ‪⎣⎢ 0 0 1‬‬
‫‪34‬‬ ‫‪34‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﺗﺒﺪﻳﻼت ﻫﻨﺪﺳﻲ دو ﺑﻌﺪي و ﺳﻪ ﺑﻌﺪي‬

‫ﺗﺒﺪﻳﻼت ‪: Shear‬‬
‫ﺗﺒﺪﻳﻼت ‪ Shear‬ﺗﺼﻮﻳﺮ را در ﺟﻬﺘﻬﺎي ﻣﺸﺨﺺ ﺷﻴﻔﺖ ﻣﻴﺪﻫﻨﺪ‪ .‬در واﻗﻊ اﻳﻦ ﺗﺒﺪﻳﻼت ﻧﻘﻄﻪ را ﺑﻪ ﻧﺴﺒﺖ ﻓﺎﺻﻠﻪ از ﻳﻚ ﺧﻂ‬
‫و ﻣﻮازي ﺑﺎ ﺧﻂ ﺣﺮﻛﺖ ﻣﻴﺪﻫﻨﺪ‪ .‬ﻧﻘﺎط واﻗﻊ ﺑﺮ روي ﺧﻂ ﺷﻴﻔﺖ‬
‫داده ﻧﻤﻴﺸﻮد و ﻧﻘﺎﻃﻲ ﻛﻪ در ﻃﺮف ﻣﻘﺎﺑﻞ اﻧﺪ در ﺟﻬﺖ ﻣﺨﺎﻟﻒ‬
‫ﺷﻴﻔﺖ ﻣﻴﺎﺑﻨﺪ‪ .‬ﺗﺒﺪﻳﻼت ‪ Shear‬ﺷﺊ را دﮔﺮﮔﻮن ﻣﻴﻜﻨﻨﺪ اﻣﺎ ﺑﺎ اﻳﻦ‬
‫ﺣﺎل ﻣﻮازي ﺑﻮدن ﺧﻄﻮط را ﺣﻔﻆ ﻣﻴﻜﻨﻨﺪ‪ .‬ﺷﻜﻞ روﺑﺮو ﻳﻚ ﻧﻤﻮﻧﻪ‬
‫از اﻳﻦ ﺗﺒﺪﻳﻞ را ﻧﺸﺎن ﻣﻴﺪﻫﺪ ﻛﻪ ﺑﺎ ﻣﻘﻴﺎس ‪ 1‬و ﻧﺴﺒﺖ ﺑﻪ ﺧﻂ‬
‫‪ y = 2‬اﻧﺠﺎم ﺷﺪه اﺳﺖ‪.‬‬
‫ﻣﻌﻤﻮﻻً ﺷﻴﻔﺖ ‪ Shear‬در ﺟﻬﺖ ﻣﺤﻮر ‪ x‬ﻳﺎ ‪ y‬اﻧﺠﺎم ﻣﻴﺸﻮد ‪.‬‬
‫ﺷﻴﻔﺖ ‪ Shear‬در ﺟﻬﺖ ﻣﺤﻮر ‪ : x‬ﻣﺎﺗﺮﻳﺲ زﻳﺮ ﻧﻘﺎط را ﺑﺎ‬
‫ﻣﻘﻴﺎس ‪ shx‬و ﺑﻪ ﻧﺴﺒﺖ ﻓﺎﺻﻠﻪ از ﺧﻂ ‪ y = yref‬و ﻣﻮازي ﺑﺎ آن‬
‫ﺷﻴﻔﺖ ﻣﻴﺪﻫﺪ‪.‬‬
‫‪⎡1 shx‬‬ ‫⎤ ‪− shx ⋅ yref‬‬
‫⎢‬ ‫) ‪⎥ ⇒ ⎧ x′ = x + shx ( y − yref‬‬
‫‪⎢0 1‬‬ ‫‪0‬‬ ‫⎨ ⎥‬ ‫‪y′ = y‬‬
‫‪⎢⎣ 0 0‬‬ ‫‪1‬‬ ‫⎩ ⎦⎥‬

‫ﺷﻴﻔﺖ ‪ Shear‬در ﺟﻬﺖ ﻣﺤﻮر ‪ : y‬ﻣﺎﺗﺮﻳﺲ زﻳﺮ ﻧﻘﺎط را ﺑﺎ ﻣﻘﻴﺎس ‪ shy‬و ﺑﻪ ﻧﺴﺒﺖ ﻓﺎﺻﻠﻪ از ﺧﻂ ‪ x = xref‬و ﻣﻮازي ﺑﺎ‬
‫آن ﺷﻴﻔﺖ ﻣﻴﺪﻫﺪ‪.‬‬
‫‪⎡ 1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫⎤‬
‫‪⎢ sh‬‬ ‫⎧‬ ‫‪x′ = x‬‬
‫‪⎢ y‬‬ ‫⎨ ⇒ ⎥⎥ ‪1 − shy ⋅ xref‬‬
‫) ‪y′ = y + shy ( x − xref‬‬
‫‪⎢⎣ 0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫⎩ ⎦⎥‬
‫ﺗﺒﺪﻳﻼت ‪: Affine‬‬
‫ﺗﺒﺪﻳﻼﺗﻲ ﻫﺴﺘﻨﺪ ﻛﻪ در آﻧﻬﺎ ﻣﻮازي ﺑﻮدن ﺧﻄﻮط ﺣﻔﻆ ﻣﻴﺸﻮد وﻟﻲ ﻃﻮل ﺧﻄﻮط ﺗﻐﻴﻴﺮ ﻧﻤﻲ ﻳﺎﺑﻨﺪ‪ .‬ﻣﻌﺮوﻓﺘﺮﻳﻦ اﻳﻦ ﺗﺒﺪﻳﻼت‬
‫ﻋﺒﺎرﺗﻨﺪ از ‪ :‬اﻧﺘﻘﺎل‪ ،‬دوران و ﺗﻐﻴﻴﺮ اﻧﺪازه‪ .‬ﺑﺮاي اﻳﻦ ﺳﻪ ﺗﺒﺪﻳﻞ زواﻳﻪ ﺑﻴﻦ ﺧﻄﻮط ﺑﻌﺪ از ﺗﺒﺪﻳﻞ ﺗﻐﻴﻴﺮ ﻧﺨﻮاﻫﺪ ﻛﺮد‪.‬‬

‫ﺳﺆال ‪ :‬ﭼﻪ راﺑﻄﻪ اي ﺑﻴﻦ دوران ﺑﺎ زاوﻳﻪ ‪ θ = nπ‬و ﻋﻤﻞ ﺗﻐﻴﻴﺮ ﻣﻘﻴﺎس در ﺣﺎﻟﺖ دوﺑﻌﺪي وﺟﻮد دارد ؟ ﺑﺎ اﺳﺘﻔﺎده از‬
‫رواﺑﻂ ﺟﺒﺮي ارﺗﺒﺎط ﻣﻮرد ﻧﻈﺮ را اﺛﺒﺎت ﻛﻨﻴﺪ‪.‬‬
‫‪⎡ cos θ‬‬ ‫‪− sin θ‬‬ ‫⎤‪0‬‬ ‫‪⎡1 0‬‬ ‫⎤‪0‬‬
‫‪⎢ sin θ‬‬ ‫⎥‬ ‫⎢‬ ‫‪⎧ sx = 1‬‬
‫⎢‬ ‫‪cos θ‬‬ ‫‪θ = nπ , n = 2 k‬‬
‫‪0 ⎥ ⎯⎯⎯⎯→ ⎢0 1‬‬ ‫⎨ ⇒ ⎥⎥ ‪0‬‬
‫‪sy = 1‬‬
‫‪⎢⎣ 0‬‬ ‫‪0‬‬ ‫⎦⎥ ‪1‬‬ ‫‪⎢⎣0 0‬‬ ‫⎩ ⎦⎥ ‪1‬‬
‫‪⎡ cos θ‬‬ ‫‪− sin θ‬‬ ‫⎤‪0‬‬ ‫‪⎡ −1‬‬ ‫⎤‪0 0‬‬
‫⎢‬ ‫⎥‬ ‫‪⎧ sx = −1‬‬
‫‪⎢ sin θ‬‬ ‫‪cos θ‬‬ ‫‪θ = nπ , n = 2 k +1‬‬
‫⎯⎯⎯⎯⎯ ⎥ ‪0‬‬ ‫‪→ ⎢⎢ 0‬‬ ‫⎨ ⇒ ⎥⎥ ‪−1 0‬‬
‫‪s y = −1‬‬
‫‪⎢⎣ 0‬‬ ‫‪0‬‬ ‫⎦⎥ ‪1‬‬ ‫‪⎢⎣ 0‬‬ ‫⎩ ⎦⎥ ‪0 1‬‬
‫از ﺣﺎﻟﺖ اول ﻧﺘﻴﺠﻪ ﻣﻴﮕﻴﺮﻳﻢ ﻛﻪ دوران ﺑﺎ ‪ 2kπ‬ﻫﻴﭻ ﺗﻐﻴﻴﺮي در ﺷﻜﻞ ﻧﺪارد‪.‬‬
‫در ﺣﺎﻟﺖ دوم ﻧﻤﻴﺘﻮان راﺑﻄﻪ اي ﺑﻴﻦ ﺗﻐﻴﻴﺮ ﻣﻘﻴﺎس و دوران ﭘﻴﺪا ﻧﻤﻮد‪ .‬ﭼﺮا ﻛﻪ ﻣﻮﻟﻔﻪ ﻫﺎي ﺗﻐﻴﻴﺮ ﻣﻘﻴﺎس ﻣﻨﻔﻲ ﻣﻴﺸﻮﻧﺪ‪.‬‬
‫‪35‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﭘﺮدازش ﺗﺼﻮﻳﺮ‬

‫ﻓﺼﻞ ﭘﻨﺠﻢ ‪:‬‬

‫ﭘﺮدازش ﺗﺼﻮﻳﺮ‬
‫ﻣﺒﺎﺣﺚ اﻳﻦ ﻓﺼﻞ‪:‬‬

‫™ ﺳﻴﺴﺘﻢ ﭘﺮدازش ﺗﺼﻮﻳﺮ‬


‫™ ﻓﺸﺮده ﺳﺎزي ﺗﺼﺎوﻳﺮ‬
‫™ ﻛﺪﮔﺬاري ﺗﺼﺎوﻳﺮ‬
‫‪36‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﭘﺮدازش ﺗﺼﻮﻳﺮ‬

‫ﭘﺮدازش ﺗﺼﻮﻳﺮ ‪:‬‬


‫ﺑﻄﻮر ﻛﻠﻲ ﮔﺮاﻓﻴﻚ ﻋﻠﻤﻲ اﺳﺖ ﻛﻪ در ارﺗﺒﺎط ﺑﺎ ﻧﺤﻮه رﺳﻢ اﺷﻜﺎل ﭘﺎﻳﻪ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺳﺨﺖ اﻓﺰار ﻣﺮﺑﻮﻃﻪ و ﻣﺤﺎﺳﺒﺎت ﺑﻬﻴﻨﻪ‬
‫ﺑﺤﺚ ﻣﻲ ﻧﻤﺎﻳﺪ‪.‬‬
‫اﻣﺎ ﭘﺮدازش ﺗﺼﻮﻳﺮ ﻋﻠﻤﻲ اﺳﺖ ﻛﻪ در ارﺗﺒﺎط ﺑﺎ ﻋﻤﻠﻴﺎت ﺑﺮ روي ﺗﺼﺎوﻳﺮ و ﻫﻤﭽﻨﻴﻦ ﺗﺸﺨﻴﺺ ﺑﻪ ﻛﻤﻚ ﺗﺼﻮﻳﺮ اﺳﺘﻔﺎده‬
‫ﻣﻴﺸﻮد‪.‬‬
‫ﻣﻮارد ﻣﻬﻢ در ﭘﺮدازش ﺗﺼﻮﻳﺮ ﻋﺒﺎرﺗﻨﺪ از ‪:‬‬
‫ƒ ﺑﻬﻴﻨﻪ ﺳﺎزي ﻛﻴﻔﻴﺖ ﺗﺼﺎوﻳﺮ‬
‫ƒ ﻣﻘﺎﻳﺴﻪ ﺗﺼﺎوﻳﺮ ﺑﺎ ﻳﻜﺪﻳﮕﺮ‬
‫ƒ ﺑﺮش و ﺗﺮﻛﻴﺐ ﺗﺼﺎوﻳﺮ‬
‫ƒ ﺗﺸﺨﻴﺺ ﺑﻪ ﻛﻤﻚ ﺗﺼﻮﻳﺮ‬

‫ﻣﻌﻤﻮﻻً ﭘﺮدازش ﺗﺼﻮﻳﺮ در ﺣﺎﻟﺖ دوﺑﻌﺪي و ﺳﻪ ﺑﻌﺪي ﻣﻮرد ﺑﺮرﺳﻲ ﻗﺮار ﻣﻴﮕﻴﺮد‪ .‬ﻣﺤﺎﺳﺒﺎﺗﻲ ﻛﻪ در ﭘﺮدازش ﺗﺼﻮﻳﺮ ﻣﻮرد‬
‫ﻧﻴﺎزﻧﺪ ﻋﺒﺎرﺗﻨﺪ از ﻣﺤﺎﺳﺒﺎت ﻣﺮﺑﻮط ﺑﻪ ﻣﺎﺗﺮﻳﺴﻬﺎ و ﻫﻤﭽﻨﻴﻦ ﻣﺤﺎﺳﺒﺎت ﻣﺮﺑﻮط ﺑﻪ اﻧﺘﮕﺮاﻟﻬﺎ ﻛﻪ در ﺑﺤﺚ ﺑﻬﻴﻨﻪ ﺳﺎزي ﺗﺼﺎوﻳﺮ‬
‫اﺳﺘﻔﺎده ﻣﻴﺸﻮد‪.‬‬
‫ﻣﻬﻤﺘﺮﻳﻦ اﺟﺰاي ﻳﻚ ﺳﻴﺴﺘﻢ ﭘﺮدازش ﺗﺼﻮﻳﺮ ﻋﺒﺎرﺗﻨﺪ از ‪:‬‬
‫ƒ وﺳﻴﻠﻪ اي ﺟﻬﺖ اﻧﺘﻘﺎل ﺗﺼﺎوﻳﺮ ﺑﻪ درون ﻛﺎﻣﭙﻴﻮﺗﺮ‬
‫ƒ ﺣﺎﻓﻈﻪ‬
‫ƒ ﻋﻤﻠﻴﺎت ﻛﻨﺘﺮل‬
‫ƒ ﻧﻤﺎﻳﺸﮕﺮ‬
‫ƒ ﻳﻚ ﭘﺮدازﺷﮕﺮ‬
‫ﺟﻬﺖ ﻣﻘﺎﻳﺴﻪ ﺗﺼﺎوﻳﺮ ﺑﺎﻳﺪ ﺑﺘﻮان ﺗﺼﺎوﻳﺮ را ﻣﺪل ﺳﺎزي ﻧﻤﻮد‪ .‬ﺑﺮاي اﻳﻦ ﻛﺎر ﻳﻚ ﻣﺪل رﻳﺎﺿﻲ را از ﺗﺼﻮﻳﺮ اﻳﺠﺎد ﻣﻴﻜﻨﻴﻢ‪ .‬ﺑﻪ‬
‫ﻃﻮر ﻛﻠﻲ ﺑﺮاي ﻣﺪل ﺳﺎزي ﻳﻚ ﺗﺼﻮﻳﺮ از راﺑﻄﻪ زﻳﺮ اﺳﺘﻔﺎده ﻣﻴﻜﻨﻴﻢ‪.‬‬
‫) ‪f ( x, y ) = i ( x, y ) + r ( x, y‬‬
‫ﻛﻪ در آن ) ‪ f ( x, y‬و ) ‪ i ( x, y‬ﺑﻴﻦ ﺻﻔﺮ و ﺑﻴﻨﻬﺎﻳﺖ ﻣﻴﺒﺎﺷﻨﺪ و ) ‪ r ( x, y‬ﺑﻴﻦ ﺻﻔﺮ و ﻳﻚ اﺳﺖ‪.‬‬
‫ﺑﻨﺎﺑﺮاﻳﻦ ﺑﺮاي ﻣﺪﻟﺴﺎزي ﺑﺎﻳﺪ ﻫﺮ دو ﻗﺴﻤﺖ ) ‪ i ( x, y‬و ) ‪ r ( x, y‬ﻣﺨﺎﻟﻒ ﺻﻔﺮ ﺑﺎﺷﻨﺪ‪ .‬راﺑﻄﻪ ﻓﻮق ﻛﻪ راﺑﻄﻪ ﻣﺪﻟﺴﺎزي اﺳﺖ‬
‫ﺑﺎﻳﺪ ﺗﻌﻴﻴﻦ ﻛﻨﻨﺪه ﺑﺤﺚ ﻧﻤﻮﻧﻪ ﺑﺮداري از ﺗﺼﻮﻳﺮ و روﺷﻨﺎﻳﻲ ﻣﺮﺑﻮط ﺑﻪ ﺗﺼﻮﻳﺮ ﺑﺎﺷﺪ‪.‬‬
‫‪ -1‬ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ‪:‬‬
‫ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪ ‪f (ω ) = ∫ f (t )e − jωt dt :‬‬
‫∞‬
‫ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﭘﻴﻮﺳﺘﻪ ‪f (ω ) = ∑ f ( n)e − jω n :‬‬
‫‪n=2‬‬

‫‪ -2‬ﺗﺒﺪﻳﻞ ‪ : Wavelet‬ﻣﺎﻧﻨﺪ ﻓﻮرﻳﻪ اﺳﺖ ﺑﺎ اﻳﻦ ﺗﻔﺎوت ﻛﻪ ﺑﺠﺎي ﺗﺎﺑﻊ ‪ e − jω n‬ﻣﻴﺘﻮان از ﺗﻮاﺑﻊ دﻳﮕﺮ ﻣﺜﻞ‬
‫)‪ cos(ω n‬اﺳﺘﻔﺎده ﻧﻤﻮد‪ .‬ﻛﺎرﺑﺮد اﻳﻦ ﺗﺒﺪﻳﻞ در ﻓﺸﺮده ﺳﺎزي اﺳﺖ‪.‬‬

‫‪ -3‬ﺗﺒﺪﻳﻞ ‪ :Sin-convolation‬در اﻳﻦ روش اﻧﺘﮕﺮال ﺑﻪ ﺻﻮرت دو ﺑﻌﺪي و ﺳﻪ ﺑﻌﺪي ﺗﺨﻤﻴﻦ زده ﻣﻴﺸﻮد‪ .‬و‬
‫اﻃﻼﻋﺎت ﻣﺮﺑﻮﻃﻪ ﺑﻪ ﺻﻮرت ﻣﺴﺘﻘﻴﻢ در ﺣﺎﻓﻈﻪ ﺑﻪ روش ﻣﺎﺗﺮﻳﺴﻲ ذﺧﻴﺮه ﻣﻴﺸﻮد‪.‬‬
‫‪37‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﭘﺮدازش ﺗﺼﻮﻳﺮ‬

‫ﺑﻌﺪ از ﻣﺪﻟﺴﺎزي ﻛﻪ ﺗﺎﺑﻊ ) ‪ f ( x, y‬ﺗﻮﻟﻴﺪ ﺷﺪ‪ ،‬ﻣﻮﻟﻔﻪ ) ‪ i ( x, y‬در واﻗﻊ ﺗﻌﻴﻴﻦ ﻛﻨﻨﺪه ﻣﻴﺰان ﻧﻮر ﺧﺎرج ﺷﺪه از ﻣﻨﺒﻊ اﺳﺖ و‬
‫) ‪ r ( x, y‬ﻣﻴﺰان ﻧﻮر ﻣﻨﻌﻜﺲ ﺷﺪه از ﺟﺴﻢ را ﻧﺸﺎن ﻣﻴﺪﻫﺪ‪ .‬ﺑﻄﻮر ﻛﻠﻲ ﺗﺎﺑﻊ ﻳﻚ ﺗﺎﺑﻊ ﭘﻴﻮﺳﺘﻪ اﺳﺖ و ﺑﺮاي ﺗﺒﺪﻳﻞ اﻳﻦ ﺗﺎﺑﻊ‬
‫ﺑﻪ ﮔﺴﺴﺘﻪ ﻳﺎ دﻳﺠﻴﺘﺎل از ﻣﺮاﺣﻞ ﻧﻤﻮﻧﻪ ﺑﺮداري )‪ (Sampling‬و ﻛﻮاﻧﺘﻮﻣﻲ ﻛﺮدن )‪ (Quantization‬اﺳﺘﻔﺎده ﻣﻴﺸﻮد‪.‬‬
‫ﻣﻨﻈﻮر از ﻧﻤﻮﻧﻪ ﺑﺮداري اﻳﻦ اﺳﺖ ﻛﻪ ﺑﺎ ﻳﻚ ﺑﺎزه زﻣﺎﻧﻲ ﺧﺎص ﺑﺘﻮان ﺑﻪ ﻃﻮر ﺗﻜﺮاري ﻣﻘﺎدﻳﺮي را از ﺗﺎﺑﻊ ﭘﻴﻮﺳﺘﻪ اﻧﺪازه ﮔﻴﺮي‬
‫ﻧﻤﻮد‪ .‬ﻧﻤﻮﻧﻪ ﻫﺎي ﻧﺒﺎﻳﺪ از ﻳﻜﺪﻳﮕﺮ ﺧﻴﻠﻲ ﻓﺎﺻﻠﻪ داﺷﺘﻪ ﺑﺎﺷﻨﺪ‪ ،‬زﻳﺮا در اﻳﻦ ﺻﻮرت ﺗﻌﺪاد ﻧﻤﻮﻧﻪ ﻫﺎ ﻛﻢ و ﻣﻤﻜﻦ اﺳﺖ در ﻛﺎر‬
‫ﺳﻴﺴﺘﻢ اﺧﺘﻼل اﻳﺠﺎد ﺷﻮد‪ .‬ﻫﻤﭽﻨﻴﻦ اﮔﺮ ﺗﻌﺪاد ﻧﻤﻮﻧﻪ ﻫﺎ زﻳﺎد ﺑﺎﺷﺪ‪ ،‬ﻧﻴﺎز دارﻳﻢ ﻛﻪ ﺣﺠﻢ زﻳﺎدي از ﻧﻤﻮﻧﻪ ﻫﺎي را ﻧﮕﻬﺪاري‬
‫ﻛﻨﻴﻢ ﻛﻪ ﻣﺸﻜﻼﺗﻲ را ﺑﺮاي ﺣﺎﻓﻈﻪ اﻳﺠﺎد ﺧﻮاﻫﺪ ﻛﺮد‪ .‬ﺑﻨﺎﺑﺮاﻳﻦ ﻓﺮﻛﺎﻧﺲ ﻧﻤﻮﻧﻪ ﮔﻴﺮي ﺑﺎﻳﺪ ﻣﺘﻌﺎدل ﺑﺎﺷﺪ‪.‬‬
‫ﻣﻨﻈﻮر از ﻣﺮﺣﻠﻪ ﻛﻮاﻧﺘﻮﻣﻲ ﻛﺮدن اﻳﻦ اﺳﺖ ﻛﻪ ﺑﺘﻮان ﻧﺘﺎﻳﺞ ﺑﺪﺳﺖ آﻣﺪه از ﻣﺮﺣﻠﻪ ﻧﻤﻮﻧﻪ ﺑﺮداري را ﺑﻪ ﻣﻘﺎدﻳﺮ ﺑﺎﻻﺗﺮ ﮔﺮد‬
‫ﻧﻤﻮد‪.‬‬
‫ﺗﻜﻨﻴﻚ ﻫﺎي ﻧﻤﻮﻧﻪ ﺑﺮداري‪:‬‬
‫روش ‪: Non-Uniform‬‬ ‫روش ‪: Uniform‬‬
‫در اﻳﻦ روش ﺗﻤﺎﻣﻲ ﻣﺨﺘﺼﺎت ﺗﺎﺑﻊ ) ‪ f ( x, y‬ﺑﺼﻮرت در اﻳﻦ روش ‪ m, n‬را ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﭘﻴﭽﻴﺪﮔﻲ ﺗﺼﻮﻳﺮ ﺗﻐﻴﻴﺮ‬
‫ﻧﻘﻄﻪ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ و آﻧﻬﺎ را در ﻳﻚ ﻣﺎﺗﺮﻳﺲ ‪ m × n‬ﻣﻴﺪﻫﻴﻢ‪ .‬ﻳﻌﻨﻲ ‪ m, n‬در ﻫﺮ ﻗﺴﻤﺖ از ﺗﺼﻮﻳﺮ ﻣﻘﺎدﻳﺮ‬
‫ذﺧﻴﺮه ﻣﻴﻜﻨﻴﻢ‪ .‬ﻫﺮ ﭼﻪ ﺗﻌﺪاد ﻧﻤﻮﻧﻪ ﻫﺎ ﺑﻴﺸﺘﺮ ﺑﺎﺷﺪ‪ ،‬دﻗﺖ ﻣﺘﻔﺎوﺗﻲ ﺧﻮاﻫﺪ داﺷﺖ‪.‬‬
‫ﻧﻤﻮﻧﻪ ﺑﺮداري ﺑﻴﺸﺘﺮ ﺧﻮاﻫﺪ ﺑﻮد‪ .‬و ﺑﻄﻮر ﻛﻠﻲ ﻫﺮ ﭼﻪ ‪ m, n‬در ﻫﺮ ﻛﺠﺎ ﻛﻴﻔﻴﺖ ﺑﻴﺸﺘﺮ ﺑﺎﺷﺪ‪ m, n ،‬ﺑﻴﺸﺘﺮ ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬
‫ﺑﻴﺸﺘﺮ ﺷﻮد ﻛﻴﻔﻴﺖ ﺗﺼﻮﻳﺮ ﺑﻴﺸﺘﺮ ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬

‫ﻣﻬﻤﺘﺮﻳﻦ اﻫﺪاف ﻛﺪﮔﺬاري ﺗﺼﻮﻳﺮ ﻋﺒﺎرﺗﻨﺪ از ﺣﺠﻢ ﻛﻮﭼﻜﺘﺮ و اﻣﻨﻴﺖ ﺑﺎﻻﺗﺮ در ﻫﻨﮕﺎم اﻧﺘﻘﺎل داده ﻫﺎ‪ .‬ﺑﻄﻮر ﻛﻠﻲ داده‬
‫دﻳﺠﻴﺘﺎل ﻣﻴﺘﻮاﻧﺪ ﻛﺪﮔﺬاري ﺷﻮد و در واﻗﻊ ﻋﻼوه ﺑﺮ ﻛﺪﮔﺬاري ﻗﺎﺑﻠﻴﺖ ﻓﺸﺮده ﺳﺎزي را ﻧﻴﺰ دارد‪ .‬اﻣﺎ داده آﻧﺎﻟﻮگ ﻗﺎﺑﻠﻴﺖ‬
‫ﻛﺪﮔﺬاري و ﻗﺎﺑﻠﻴﺖ ﻓﺸﺮده ﺳﺎزي را ﻧﺪارد‪.‬‬
‫‪ : BMP‬ﻓﺎﻳﻠﻬﺎي ﭘﺮدازش ﻧﺸﺪه ﺑﺎ ﺣﺠﻢ ﺑﺎﻻ‬
‫‪ : GIF‬ﺗﻌﺪاد رﻧﮓ ﻫﺎ ﻓﺸﺮده ﺳﺎزي ﺷﺪه اﺳﺖ‪.‬‬
‫‪ : JPG‬ﻣﻘﺪار رﻧﮓ و ﺟﺰﺋﻴﺎت ﻓﺸﺮده ﺳﺎزي ﺷﺪه اﺳﺖ‪.‬‬

‫در ﻛﺪﮔﺬازي‪ ،‬ﺗﺼﻮﻳﺮ ﺑﻪ ﻳﻚ ﺗﺼﻮﻳﺮ ﺟﺪﻳﺪ ﺗﺒﺪﻳﻞ ﻣﻴﺸﻮد ﻛﻪ ﻣﻌﻤﻮﻻً ﻛﻴﻔﻴﺖ ﺗﺼﻮﻳﺮ ﺟﺪﻳﺪ را ﻧﺨﻮاﻫﺪ داﺷﺖ‪ .‬روش ﻫﺎي‬
‫ﻣﺨﺘﻠﻒ ﻛﺪﮔﺬاري در ﺟﺪول زﻳﺮ آورده ﺷﺪه اﻧﺪ‪.‬‬
‫روﺷﻬﺎي ﻛﺪﮔﺬاري داده ﻫﺎ‬
‫در اﻳﻦ روش ﻳﻚ ﻣﺎﺗﺮﻳﺲ‪ ،‬ﻣﻌﺎدل ﺗﺼﻮﻳﺮ ﻣﺮﺑﻮﻃﻪ اﻳﺠﺎد ﻣﻴﮕﺮدد و ﺟﺎﺑﺠﺎﻳﻲ ﺑﻴﻦ ﻧﻘﺎط‬ ‫روش ﻛﺪﮔﺬاري ﻣﺎﺗﺮﻳﺲ‬
‫ﻣﺎﺗﺮﻳﺲ ﻛﻪ در واﻗﻊ ﻧﻘﺎط ﺗﺼﻮﻳﺮ ﻫﺴﺘﻨﺪ ﺑﺮ اﺳﺎس اﻟﮕﻮرﻳﺘﻤﻲ ﺧﺎص ﺻﻮرت ﻣﻲ ﮔﻴﺮد‪.‬‬
‫اﺳﺘﻔﺎده از اﻳﻦ روش ﻣﻮﺟﺐ ﻣﻴﺸﻮد ﺗﺼﻮﻳﺮ ﻛﺪﺷﺪه ﺑﺎ ﺗﺼﻮﻳﺮ اوﻟﻴﻪ ﺗﻔﺎوت ﭘﻴﺪا ﻛﻨﺪ‪ .‬اﻣﺎ‬
‫ﺗﺄﺛﻴﺮي ﺑﺮ روي ﺣﺠﻢ داده ﻫﺎي ذﺧﻴﺮه ﺷﺪه و ﻋﻤﻞ ﻓﺸﺮده ﺳﺎزي ﻧﺨﻮاﻫﺪ داﺷﺖ‪ .‬ﻣﺰﻳﺖ‬
‫اﻳﻦ روش ﺳﺎدﮔﻲ و ﻋﻴﺐ آن دﻗﺖ ﭘﺎﻳﻴﻦ آن اﺳﺖ‪.‬‬
‫در اﻳﻦ روش ﺗﻐﻴﻴﺮات رﻧﮓ ﺑﺮاي ﻫﺮ ﭘﻴﻜﺴﻞ ﻧﺴﺒﺖ ﺑﻪ ﻳﻚ ﻣﻘﺪار ﭘﺎﻳﻪ ذﺧﻴﺮه ﻣﻴﮕﺮدد‪.‬‬ ‫روش ‪PCM‬‬
‫ﻫﺪف اﻳﻦ روش ﻓﺸﺮده ﺳﺎزي و ﻋﻴﺐ آن ﻣﺸﻜﻞ ﺑﻮدن ﻳﺎﻓﺘﻦ ﻣﻘﺪار ﭘﺎﻳﻪ اﺳﺖ‪.‬‬
‫ﻫﺪف اﻳﻦ روش ﺑﻬﻴﻨﻪ ﺳﺎزي ﻃﻮل ﻛﺪ ﻣﻮردﻧﻈﺮ اﺳﺖ‪ .‬ﺑﻪ اﻳﻦ ﺻﻮرت ﻛﻪ اﮔﺮ ﻳﻚ‬ ‫روش ﻫﺎﻓﻤﻦ‬
‫‪38‬‬ ‫ﮔﺮاﻓﻴﻚ ﻛﺎﻣﭙﻴﻮﺗﺮي ‪ :‬ﭘﺮدازش ﺗﺼﻮﻳﺮ‬

‫ﺣﺮف ﺗﻌﺪاد ﺗﻜﺮار ﻛﻤﺘﺮي داﺷﺘﻪ ﺑﺎﺷﺪ‪ ،‬ﻃﻮل ﻛﺪ اﺧﺘﺼﺎص ﻳﺎﻓﺘﻪ ﺑﻪ آن ﻛﻤﺘﺮ اﺳﺖ‪.‬‬
‫اﻳﻦ روش ﻣﺎﻧﻨﺪ روش ﻫﺎﻓﻤﻦ اﺳﺖ ‪ .‬و ﻟﻲ ﺑﻬﺘﺮ از آن ﻋﻤﻞ ﻣﺒﻜﻨﺪ‪.‬‬ ‫روش ‪Entropy‬‬
‫اﺳﺎس اﻳﻦ روش ﺑﺮ اﻳﻦ اﺳﺖ ﻛﻪ ﭘﻴﻜﺴﻠﻬﺎي ﻫﻤﺴﺎﻳﻪ داراي رﻧﮓ ﻣﺸﺎﺑﻪ اﻧﺪ‪ .‬اﻳﻦ روش‬ ‫روش ‪Ran length‬‬
‫ﻧﺴﺒﺖ ﺑﻪ روش اول ﻛﻼﺳﻴﻚ ﺗﺮ اﺳﺖ‪ .‬ﻣﻨﻈﻮر از ﭘﻴﻜﺴﻠﻬﺎي ﻫﻤﺴﺎﻳﻪ ﭘﻴﻜﺴﻠﻬﺎﻳﻲ ﻫﺴﺘﻨﺪ ﻛﻪ‬
‫ﻓﺎﺻﻠﻪ آﻧﻬﺎ ﺗﺎ ﻧﻘﻄﻪ ﻣﻮرد ﻧﻈﺮ ﻳﻚ واﺣﺪ اﺳﺖ‪ .‬در اﻳﻦ روش ﺑﻪ ﺟﺎي ذﺧﻴﺮه ﺳﺎزي‬
‫ﻣﺨﺘﺼﺎت ) ‪ f ( x, y‬ﻣﻴﺘﻮان ﻓﺎﺻﻠﻪ ﺑﻴﻦ ﻣﻜﺎﻧﻬﺎ را ﻛﻪ ﻣﻌﻤﻮﻻً ﻋﺪدي ﺛﺎﺑﺖ اﺳﺖ ذﺧﻴﺮه‬
‫ﻧﻤﻮد‪ .‬ﻋﻴﺐ اﻳﻦ روش اﻳﻦ اﺳﺖ ﻛﻪ ﺣﺠﻢ داده ﻛﺪ ﺷﺪه ﺑﻪ ﭘﻴﭽﻴﺪﮔﻲ ﺗﺼﻮﻳﺮ واﺑﺴﺘﻪ اﺳﺖ و‬
‫ﻣﻤﻜﻦ اﺳﺖ ﺣﺠﻢ را ﺧﻴﻠﻲ ﻛﻢ ﻧﻜﻨﺪ‪ .‬ﺑﻄﻮر ﻛﻠﻲ ﺑﺮاي ﺗﺼﺎوﻳﺮ ﺳﺎده ﺧﻮب اﺳﺖ‪ ،‬اﻣﺎ ﺑﺮاي‬
‫ﺗﺼﺎوﻳﺮ ﭘﻴﭽﻴﺪه ﺑﻪ ﺧﻮﺑﻲ ﻋﻤﻞ ﻧﻤﻴﻜﻨﺪ‪.‬‬
‫روش ‪Two symbol‬‬

‫ﻓﺸﺮده ﺳﺎزي‪:‬‬
‫ﻫﺪف از ﻓﺸﺮده ﺳﺎزي ﺣﺠﻢ داده ﻛﻤﺘﺮ و ﻫﻤﭽﻨﻴﻦ ﻣﺤﺎﺳﺒﺎت ﻛﻤﺘﺮ اﺳﺖ‪ .‬روش ﻫﺎي ﻓﺸﺮده ﺳﺎزي در ﺟﺪول زﻳﺮآﻣﺪه اﻧﺪ‪.‬‬
‫روﺷﻬﺎي ﻓﺸﺮده ﺳﺎزي‬
‫اﻳﻦ روش ﺑﺮ روي ﺗﺎﺑﻊ ) ‪ f ( x, y‬اﻧﺠﺎم ﻣﻴﺸﻮد و ﻃﻮري ﺑﺮ روي ﺗﺎﺑﻊ ﻋﻤﻞ‬ ‫ﻓﺸﺮده ﺳﺎزي ﺑﺮ اﺳﺎس ﻣﺪل ﺗﺼﻮﻳﺮ‬
‫ﻣﻴﻜﻨﺪ ﻛﻪ ﺧﺮوﺟﻲ اﻳﻦ ﺗﺎﺑﻊ ﻫﻨﮕﺎم ﭘﻴﺎده ﺳﺎزي ﺗﻌﺪاد ﺑﻴﺖ ﻛﻤﺘﺮي را ﺷﺎﻣﻞ‬
‫ﺷﻮد‪ .‬درﺻﺪ ﻓﺸﺮده ﺳﺎزي اﻳﻦ روش ﻧﺴﺒﺘﺎً ﻛﻢ اﺳﺖ‪.‬‬
‫اﻳﻦ روش از ﺗﻘﺮﻳﺐ زدن ﻣﺜﻼً ﺗﻘﺮﻳﺐ ﻫﺮ ﻗﺴﻤﺖ ﺷﻜﻞ ﻳﺎ ﺗﺼﻮﻳﺮ ﺑﺎ ﺧﻂ‬ ‫ﻓﺸﺮده ﺳﺎزي ﺑﺮ اﺳﺎس ﺗﻘﺮﻳﺐ‬
‫اﺳﺘﻔﺎده ﻣﻲ ﻧﻤﺎﻳﺪ‪ .‬ﻣﻌﻤﻮﻻً ﻃﻮل ﻫﺮ ﺧﻂ ﺑﻪ ﻫﻤﺮاه ﻧﻘﺎط اﺑﺘﺪاﻳﻲ و اﻧﺘﻬﺎﻳﻲ‬
‫ذﺧﻴﺮه ﻣﻴﺸﻮد‪.‬‬
‫در اﻳﻦ روش ﺗﺼﻮﻳﺮ ﺑﻪ ﺑﺨﺶ ﻫﺎﻳﻲ ﺗﻘﺴﻴﻢ ﻣﻴﺸﻮد و ﺳﭙﺲ ﻋﻤﻞ ﻓﺸﺮده‬ ‫روش ‪: Fractal‬‬
‫ﺳﺎزي ﺑﺮ روي ﻫﺮ ﺑﺨﺶ اﻧﺠﺎم ﻣﻴﺸﻮد‪ .‬ﻛﻴﻔﻴﺖ ﻓﺸﺮده ﺳﺎزي در اﻳﻦ روش‬
‫ﻧﺴﺒﺖ ﺑﻪ ﺣﺎﻻت ﻗﺒﻠﻲ ﺑﻬﺘﺮ اﺳﺖ‪.‬‬
‫در اﻳﻦ روش از روي ﺗﺎﺑﻊ اﺻﻠﻲ ﻋﻤﻞ ﻧﻤﻮﻧﻪ ﺑﺮداري را ﺑﺎ ﺳﺮﻋﺖ ﻛﻢ اﻧﺠﺎم‬ ‫ﻓﺸﺮده ﺳﺎزي ﺑﺼﻮرت ﮔﺴﺴﺘﻪ‬
‫ﻣﻴﺪﻫﻴﻢ‪ .‬در ﻧﺘﻴﺠﻪ ﺧﺮوﺟﻲ ﻋﻤﻞ ﻧﻤﻮﻧﻪ ﺑﺮداري ﺑﺎﻋﺚ ﻣﻴﺸﻮد ﻛﻪ ﺗﺼﻮﻳﺮ‬
‫ﺑﺪﺳﺖ آﻣﺪه داراي ﺣﺠﻢ ﻛﻤﺘﺮي ﺑﺎﺷﺪ‪ .‬ﺑﺎﻳﺪ دﻗﺖ ﻧﻤﻮد‪ ،‬اﮔﺮ ﺳﺮﻋﺖ ﻧﻤﻮﻧﻪ‬
‫ﺑﺮداري ﺧﻴﻠﻲ ﻛﻢ ﺷﻮد‪ ،‬ﻛﻴﻔﻴﺖ ﺗﺼﻮﻳﺮ ﻛﺎﻫﺶ ﻣﻲ ﻳﺎﺑﺪ‪.‬‬
‫در اﻳﻦ روش از ﻓﻴﻠﺘﺮ ﻫﺎ اﺳﺘﻔﺎده ﻣﻴﺸﻮد‪ .‬ﺗﺼﻮﻳﺮي ﻛﻪ از ﻳﻚ ﻓﻴﻠﺘﺮ ﻋﺒﻮر‬ ‫ﻓﺸﺮده ﺳﺎزي ﺑﺎ اﺳﺘﻔﺎده از ﺗﺒﺪﻳﻼت‬
‫ﻣﻴﻜﻨﺪ از ﻧﻈﺮ وﻳﮋﮔﻴﻬﺎ ﺑﺎ ﺗﺼﻮﻳﺮ اوﻟﻴﻪ ﻣﺘﻔﺎوت اﺳﺖ‪ .‬ﻓﻴﻠﺘﺮﻫﺎ ﺑﺮ دو ﻧﻮع ﺧﻄﻲ و‬
‫ﻏﻴﺮﺧﻄﻲ ﻣﻴﺒﺎﺷﻨﺪ‪.‬‬

You might also like