BuffonÀÇ ¹Ù´Ã ¶³¾î¶ß¸®±â
BuffonÀÇ ¹Ù´Ã ¶³¾î¶ß¸®±â ¹®Á¦´Â ±âÇÏÇÐÀû È®·ü ¹®Á¦ Áß¿¡¼ ¸Å¿ì ÀüÅëÀûÀÎ ¹®Á¦ ÁßÀÇ ÇϳªÀÌ´Ù. ÀÌ ¹®Á¦´Â 1977 ³â¿¡ óÀ½À¸·Î ½ÃÀ۵Ǿú´Ù. ÀÌ ¹®Á¦´Â ÆòÇ༱ µéÀÌ ÀÏÁ¤ÇÑ °£°ÝÀ¸·Î ±×·Á ÀÖ´Â Á¾ÀÌ À§¿¡ ¹Ù´ÃµéÀ» ¶³¾î¶ß¸± ¶§ ¹Ù´ÃÀÌ ±× ÆòÇ༱ÀÇ Çϳª¿Í ¸¸³ª´Â È®·üÀ» ±¸ÇÏ´Â ¹®Á¦ÀÌ´Ù. ±×·±µ¥ ÀÌ È®·üÀº Á÷Á¢¿øÁÖÀ²°ú °ü°è°¡ ÀÖ´Ù´Â µ¥ ÀÌ ¹®Á¦ÀÇ Á߿伺ÀÌ ÀÖ´Ù°í ÇÏ°Ú´Ù. ¿©±â¼´Â ¹Ù´ÃÀÇ ±æÀÌ°¡ ÀÌ¿ôÇÏ´Â µÎ ÆòÇ༱ »çÀÌÀÇ °Å¸®¿Í ÀÏÄ¡ÇÒ ¶§ ¶³¾î¶ß¸° ¹Ù´ÃÀÌ ÆòÇ༱ Áß Çϳª¿Í ¸¸³¯ È®·üÀ» Á¤È®È÷ ±¸ÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÏ°í, ÀÌ È®·üÀ» Àü»ê½Ã´¿(simulation)À¸·Î ±¸ÇÏ´Â ÇÁ·Î±×·¥À» Àü»ê½Ã´¿ÀÇ ¹æ¹ý°ú visualizationÀ» °áÇÕÇÏ´Â ÇÑ ¿¹Á¦·Î º¸À̵µ·Ï ÇÏ°Ú´Ù.
2. ÀÌ·Ð
¸ÕÀú °¡Àå °£´ÜÇÑ °æ¿ì¸¦ »ý°¢ÇØ º¸ÀÚ. ÀÌ °æ¿ì¿¡¼´Â ¹Ù´ÃÀÇ ±æÀ̵µ 1·Î ÀÌ¿ôÇÏ´Â ÆòÇ༱ »çÀÌÀÇ °£°Ýµµ 1·Î µÎ±â·Î ÇÏÀÚ. ±×·¯¸é ÀÌ °æ¿ì¸¦ ºÐ¼®Çϱâ À§ÇÏ¿© µÎ º¯¼ö¸¦ µµÀÔÇÏ¿©¾ß ÇÑ´Ù. Çϳª´Â ¹Ù´ÃÀÌ ÆòÇ༱°ú ÀÌ·ç´Â °¢ q¿Í
¹Ù´ÃÀÇ Á߽ɰú °¡Àå °¡±î¿î ÆòÇ༱ »çÀÌÀÇ °Å¸® D ÀÌ´Ù. q´Â 0ºÎÅÍ p±îÁö º¯Çϸç, ¹Ù´ÃÀÇ Á߽ɿ¡¼ ÆòÇ༱µé¿¡ ÆòÇàÇÑ Á÷¼±À» ±×·Á ±× Á÷¼±°ú ¹Ù´ÃÀÌ ¸¸µå´Â °¢À» ÃøÁ¤ÇÏ¿© Á¤ÇÏ¸é µÈ´Ù. °Å¸® D ´Â
ÀÌ¿ôÇÏ´Â µÎ ÆòÇ༱ »çÀÌÀÇ °Å¸®ÀÇ ¹Ýº¸´Ù´Â Ŭ ¼ö ¾ø´Ù. Áï D < 1/2(D = 1/2ÀÎ °æ¿ìµµ Æ÷ÇÔ)ÀÌ ¼º¸³ÇÑ´Ù. ¾Æ·¡ÀÇ ±×¸²ÀÌ ¹Ù·Î ÀÌ °æ¿ìÀÇ ÀϹÝÀûÀÎ °æ¿ì¸¦ ¼³¸íÇØ ÁÖ°í ÀÖ´Ù.
ÀÌ ±×¸²¿¡¼ ¹Ù´ÃÀº ÆòÇ༱°ú ±³Â÷ÇÏÁö ¾Ê°í ÀÖ´Ù. ±×¸²¿¡¼ º¸µíÀÌ ¹Ù´ÃÀº D °¡
D <= (1/2)sin(q)¸¦ ¸¸Á·ÇÒ ¶§¿¡¸¸ ÆòÇ༱°ú ±³Â÷ÇÏ°Ô µÈ´Ù. ÀÌ·± ±³Â÷°¡ ÀϾ È®·ü PÀº ¾î¶»°Ô µÉ±î? ¾Æ·¡ ±×¸²¿¡¼¿Í °°ÀÌ D ¸¦
¼¼·ÎÃà q¸¦ °¡·ÎÃàÀ¸·Î ³ªÅ¸³»¸é, ¹Ù´ÃÀ» ¹«ÀÛÀ§·Î Á¾ÀÌ À§¿¡ ¹Ù´ÃÀÇ (D,q)´Â 0< D <1 °ú 0 < q < p ÀÇ
µÎ ºÎµîÈ£¸¦ µ¿½Ã¿¡ ¸¸Á·ÇÏ´Â Á÷»ç°¢Çü ¾È¿¡ ÀÖ´Ù. ÀÌ ¶§ ¹Ù´ÃÀÌ ÆòÇ༱°ú ±³Â÷ÇÏ·Á¸é D <= (1/2)sin(q)¸¦ ¸¸Á·ÇØ¾ß ÇϹǷΠ±³Â÷ÇÒ È®·üÀº ±×¸²¿¡¼ Ä¥ÇØÁø ºÎºÐÀÇ ¸éÀû¿¡ ºñ·ÊÇÑ´Ù.
±×¸²¿¡¼ Ä¥ÇØÁø ºÎºÐÀÇ ¸éÀûÀº ÇÔ¼ö f(q)=(1/2)sin(q)¸¦ 0 ºÎÅÍ p
±îÁö ÀûºÐÇÑ °ª°ú °°À¸¹Ç·Î 1 °ú °°´Ù. µû¶ó¼ ¿ì¸®°¡ ±¸ÇÏ´Â È®·ü P´Â
P=1/( p/2)= 2/ p
¶Ç´Â
p = 2/P
¸¦ ¸¸Á·ÇÑ´Ù. P°ªÀº ¾à
.6366197·Î ¾Ë·ÁÁ® ÀÖ´Ù. µû¶ó¼ ¸¸¾à ¹Ù´ÃÀ» ¹«¼öÈ÷ ¸¹ÀÌ ¶³¾î¶ß·Á p °ªÀ» ±¸ÇÑ´Ù¸é P´Â
P = (±³Â÷ÇÑ ¹Ù´ÃÀǼö)/(ÃÑ ¶³¾î¶ß¸° ¹Ù´Ã ¼ö)
¸¦ ³ªÅ¸³»¹Ç·Î
p =[ 2 X (ÃÑ ¶³¾î¶ß¸° ¹Ù´Ã ¼ö ) ] / (±³Â÷ÇÑ ¹Ù´ÃÀǼö) (AAA)
Âü°í·Î ´Ù¸¥ µÎ °æ¿ì¿¡ ´ëÇØ ¾ð±ÞÇÏ¸é ´ÙÀ½°ú
°°´Ù. ¹Ù´ÃÀÇ ±æÀ̸¦ L,
ÀÌ¿ôÇÏ´Â ÆòÇ༱ »çÀÌÀÇ °Å¸®¸¦ K ¶ó
Çϸé L<KÀÎ °æ¿ì¿¡´Â
P=
2L/(K p)
¸¦ ¸¸Á·ÇÑ´Ù.
±×·¯³ª L>KÀÎ °æ¿ì¿¡´Â Á» ´õ º¹ÀâÇÑ °á°ú°¡ ³ª¿Â´Ù°í ¾Ë·ÁÁ® ÀÖ´Ù.
3.
Àü»ê ½Ã´¿
ÀÌÁ¦ ÀÌ·¯ÇÑ ¹Ù´Ã ¶³¾î¶ß¸®±â¸¦ ÀÌ¿ëÇÏ¿© pÀÇ ¼öÄ¡ °ªÀ» ±¸ÇÏ´Â Àü»ê ½Ã´¿(Computer Simulation)À» À§ÇÑ
VBÇÁ·Î ±×·¥À» ÀÛ¼ºÇØ º¸ÀÚ.
ÀÌ ÇÁ·Î ±×·¥À» ½ÇÇàÇØ º¸¸é ½ÇÁ¦·Î ½ÇÇèÀ» ÇÏÁö ¾Ê°í
computer·Î ½ÇÇè ÇÒ ¼ö ÀÖ´Â °¡¸¦ ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù.
½ÇÁ¦·Î ¹Ù¸¦ ¶³¾î¶ß¸®±â¸¦ ½ÇÇèÇØ º¸·Á¸é ¹Ù´Ã°ú ÆòÇ༱À» ±×Àº Á¾ÀÌ µî ´Ù¾çÇÏ°Ô ÁغñÇÏ¿©¾ß ÇÏÁö¸¸ Àü»ê ½Ã´¿(¶Ç´Â Àü»ê ½ÇÇè:computer
experiment)Àº ±×·¯ÇÑ ºÒÆí ¾øÀÌ ½ÇÇèÀ» ÀçÇöÇϹǷΠ¾ó¸¶³ª ºñ¿ë,
½Ã°£ ¹× Àΰ£ÀÇ ³ë·ÂÀ» Àý¾àÇÒ ¼ö ÀÖ´Â °¡¸¦ ¾Ë ¼ö ÀÖ´Ù.
Àü»ê ½Ã´¿¿¡¼´Â ½ÇÁ¦·Î ÆòÇ༱ µéÀ» ¹«¼öÈ÷ ¸¹ÀÌ ±×À» ÇÊ¿ä°¡ ¾ø´Ù.
´Ü µÎ °³ÀÇ ÆòÇ༱À̸é ÃæºÐÇÏ´Ù.
¿Ö³ÄÇϸé ÆòÇ༱ »çÀÌÀÇ °Å¸®°¡ ¹Ù´ÃÀÇ ±æÀÌ¿Í °°À» ¶§´Â ½ÇÁ¦·Î °¡Àå °¡±î¿î ÆòÇ༱ µÎ °³¸¸ È®·üÀ» Á¤ÇÏ´Â µ¥ ÇÊ¿äÇϱ⠶§¹®ÀÌ´Ù.
¶Ç ÀÌ ½ÇÇè¿¡¼ Áß¿äÇÑ °ÍÀº ¹Ù´ÃÀÇ Á߽ɿ¡¼ °¡Àå °¡±î¿î ÆòÇ༱±îÁöÀÇ °Å¸® D À̹ǷΠ¹Ù´ÃÀÇ Áß½ÉÀ» ÆòÇ༱°ú ÆòÇàÇÑ ¹æÇâÀ¸·Î ÆòÇàÀ̵¿ Çصµ ¹®Á¦°¡ »ý±âÁö ¾Ê´Â´Ù. µû¶ó¼ ¸ðµç ¹Ù´ÃÀÇ Áß½ÉÀÇ À§Ä¡ Áß ÆòÇ༱¿¡ ÆòÇàÇÑ ¹æÇâÀÇ À§Ä¡´Â Àü»ê ½ÇÇè¿¡¼ ÆòÇ༱ºÐÀÇ Á߽ɿ¡¸¸ ÀÖ´Ù°í °¡Á¤ÇÏ¿©µµ ¹«¹æÇÏ´Ù. ´ÙÀ½ ±×¸²ÀÌ ¹Ù·Î ¹Ù´Ã ¶³¾î¶ß¸®±â¸¦
76 ¹ø ÇßÀ» ¶§ ¶³¾îÁø ¹Ù´Ã
(»¡°£»ö ¼±ºÐµé)°ú ±× ¶§ (AAA) ½ÄÀ¸·Î p(Pi) ¸¦ ¿¹ÃøÇÑ °ªÀ» ³ªÅ¸³»°í ÀÖ´Ù. ±×¸²¿¡¼ °ËÁ¤»ö ¹è°æÀÇ µµÇ¥´Â ¹Ù´ÃÀÌ Çϳª ¶³¾îÁú ¶§ ¸¶´Ù p(Pi) °ªÀ» °è»êÇÏ¿© µµÇ¥·Î ³ªÅ¸³½ ±×¸²ÀÌ´Ù.
ÀÌÁ¦ ÀÌ·¯ÇÑ ÇÁ·Î±×·¥À» ±¸Ã¼ÀûÀ¸·Î ¼³¸íÇØ º¸ÀÚ. ÀÌ ÇÁ·Î±×·¥ÀÇ form file, project fileÀº ½ÇÇà fileÀº °¢°¢ needle.frm, needle.vbp, needle.exeÀÌ´Ù. ¸ÕÀú À§ÀÇ ±×¸²°ú °°Àº formÀ» ±¸¼ºÇÏ´Â ¿©·¯ controlµéÀÇ ¼Ó¼º Ç¥¸¦ ÀÛ¼ºÇØ º¸ÀÚ.
°´Ã¼(control) |
¼Ó¼º |
¼³Á¤ |
Æû |
Name Caption BackColor |
FrmNeedle The
Needle Program White |
Label(°á°ú¸¦ ³ªÅ¸³»±â À§ÇÑ ·¹À̺í: ¡±´øÁø Ƚ¼ö¡± µîÀÌÀÖ´Â °÷) |
Name BackColor Caption |
lblResult Gray ¾øÀ½ |
Line (Á¾ÀÌ À§ÀÇ ÆòÇ༱ ù¹ø° °Í) |
Name BorderColor BorderWidth |
par1Line Black 5 |
Line (Á¾ÀÌ À§ÀÇ ÆòÇ༱ ù¹ø° °Í) |
Name BorderColor BorderWidth |
par2Line Black 5 |
Picture Box(pÀÇ ¼öÄ¡ °ªÀ» ±×·¡ÇÁ·Î ³ªÅ¸³»±â À§ÇÑ °ËÁ¤»ö ¹ÙÅÁÀÇ Box) |
Name BackColor BorderStyle |
picResult Black 1-Fixed Single |
Line(Picture Box ¾ÈÀÇ
x Ãà) |
Name BorderWidth |
cxLine 1 |
Line(Picture Box ¾ÈÀÇ yÃà) |
Name BorderWidth |
cyLine 1 |
Line(Picture Box ¾ÈÀÇ 3.14 °ªÀ» ³ªÅ¸³»´Â ³ì»ö ÁÙ) |
Name BorderStyle BoderColor |
piLine 5-Dash-Dot-Dot Green |
Line(Picture Box ¾ÈÀÇ 6.28°ªÀ» ³ªÅ¸³»´Â ³ì»ö ÁÙ) |
Name BorderStyle BoderColor |
Pi2Line 5-Dash-Dot-Dot Green |
TextBox(Picture Box ¾ÈÀÇ
¡°3.14¡±À» Ç¥½ÃÇÏ´Â
TextBox ) |
Name Text |
txtPi 3.14 |
TextBox(Picture Box ¾ÈÀÇ
¡°6.28¡±À» Ç¥½ÃÇÏ´Â
TextBox ) |
Name Text |
txtPi2 6.28 |
Command |
Name Caption |
cmdExit Exit |
Command |
Name Caption |
cmdHdrs 100 DRS. |
Command |
Name Caption |
cmdOneDrop 1 Drop |
´ÙÀ½À¸·Î ½ÇÁ¦·Î program source code¸¦ »ìÆ캸ÀÚ.
¸ÕÀú ÀÏ¹Ý ¼±¾ðºÎ¸¦ »ìÆ캸ÀÚ.
Option
Explicit
Dim
gTotal As Long
gTotal˼
Àü¿ªº¯¼ö·Î ¹Ù´ÃÀ» ¶³¾î¶ß¸° ÃÑ ¼ö¸¦ ³ªÅ¸³½´Ù.
Dim
gCross As Long
gCrossÀº Àü¿ªº¯¼ö·Î ÆòÇ༱°ú ±³Â÷ÇÑ ¹Ù´ÃÀÇ ¼ö¸¦ ³ªÅ¸³½´Ù
Dim Pi
As Double
Piµµ Àü¿ªº¯¼ö·Î (AAA) ½ÄÀ¸·ÎºÎÅÍ ¾òÀº pÀÇ
¼öÄ¡ °ªÀ» ³ªÅ¸³½´Ù.
´ÙÀ½À¸·Î Exit ButtonÀ» Click Çϸé ÇÁ·Î±×·¥À» ³¡³»´Â ÇÁ·Î±×·¥ code ´Â ´ÙÀ½°ú °°´Ù.
Private
Sub cmdExit_Click()
End
End
Sub
´ÙÀ½ code´Â ÇÁ·Î±×·¥ÀÌ ½ÃÇàµÇ¸é(Form_Load() ½Ã) °ð ¹Ù·Î ½ÃÇàµÇ´Â ¸í·Éµé·Î °¢ º¯¼ö °ªÀ» 0À¸·Î ÃʱâÈÇÏ´Â ¸í·ÉµéÀÌ´Ù.
Private
Sub Form_Load()
gTotal = 0
gCross = 0
Pi = 0
End
Sub
´ÙÀ½ moduleÀÌ ¹Ù·Î 1 Drop ButtonÀ» Click ÇÏ¸é ¼öÇàµÇ´Â ¸í·Éµé·Î ¹Ù´ÃÀÌ ÇÑ °³¾¿ ¼øÂ÷ÀûÀ¸·Î ¶³¾îÁö°í ±× ¶§¸¶´Ù ¹Ù´ÃÀÌ ÆòÇ༱°ú ±³Â÷ÇÏ´ÂÁö ¿©ºÎ¸¦ ÆÇ´ÜÇÏ¿© ¶³¾îÁø ¹Ù´ÃÀÇ ¼ö¸¦ ´©ÀûÇÏ°í, ±³Â÷ÇÑ ¹Ù´ÃÀÇ ¼ö¸¦ ´©ÀûÇÏ¿© (AAA) ½Ä¿¡ ÀÇÇØ PiÀÇ ¼öÄ¡ °ªÀ» °è»êÇÏ¿© lblLabel¿¡ ±× °á°ú¸¦ text·Î Ç¥½ÃÇÏ°í, Picture Box¿¡ ±× °á°ú¸¦ Graph·Î Ç¥½ÃÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù.
Private
Sub cmdOneDrop_Click()
¸ÕÀú º¯¼ö ÇÊ¿äÇÑ º¯¼öµéÀ» ¼±¾ðÇÑ´Ù.
Dim
CX, CY, RX, RY, LX, LY As Long
Dim Th
As Double
Dim DX,
DY As Double
Dim
Info As String
¸ÕÀú ÇÑ
¹Ù´ÃÀÌ ¶³¾îÁú ¶§ ±× ¹Ù´ÃÀÇ Á᫐ À§Ä¡¸¦ Á¤ÇÑ´Ù. ¹Ù´ÃÀÇ Áß½ÉÀÇ X ÁÂÇ¥(CX)´Â Ç×»ó µÎ ÆòÇà ¼±ºÐÀÇ Áß¾ÓÀÇ X ÁÂÇ¥¿Í ÀÏÄ¡½ÃŲ´Ù.
Áï
ÆòÇ༱ºÐÀÇ ±æÀÌ (par1Line.X2 - par1Line.X1)¸¦ ¹ÝÀ¸·Î ³ª´©¾î À§¿¡ À§Ä¡ÇÑ ÆòÇ༱ºÐÀÇ ÇÑ ÂÊ À§Ä¡ÀÇ XÁÂÇ¥(par1Line.X1 )¸¦ ´õÇϸé CX¸¦ ±¸ÇÒ ¼ö ÀÖ´Ù.
CX = 0.5
* (par1Line.X2 - par1Line.X1) + par1Line.X1
¶Ç
¹Ù´ÃÀÇ Áß½ÉÀÇ Y ÁÂÇ¥(CY)´Â ÆòÇ༱ºÐ »çÀÌ ¾î´ÀÁ¡¿¡µµ ÀÓÀÇ·Î ¶³¾îÁú ¼ö ÀÖ´Ù. ÀÌ ¸»Àº VB°¡ ÁÖ´Â ³¼ö Rnd(0°ú 1 »çÀÌÀÇ random number)¸¦ ÀÌ¿ëÇÏ¿© µÎ ÆòÇà ¼±ºÐ »çÀÌÀÇ °Å¸® (par2Line.Y1 - par1Line.Y1)¸¦ ÀÓÀÇ·Î ³ª´©´Â ÀÛ¾÷ÀÇ ÇÏ°í (par2Line.Y1 -
par1Line.Y1)*Rnd·Î
ÇÏ°í À̸¦ Int( )·Î Á¤¼öÈ ÇÑ ´ÙÀ½ À§¿¡ À§Ä¡ÇÑ ÆòÇ༱ºÐÀÇ Y ÁÂÇ¥ par1Line.Y1 ´õÇØÁÖ¸é ÀÓÀÇÀÇ À§Ä¡¿¡ ¶³¾îÁø ¹Ù´ÃÀÇ Á᫐ À§Ä¡¸¦ Àü»ê ½Ã´¿ÇÒ ¼ö ÀÖ´Ù.
CY =
Int(Rnd * (par2Line.Y1 - par1Line.Y1)) + par1Line.Y1
´ÙÀ½À¸·Î ¶³¾îÁø ¹Ù´ÃÀÇ ¹æÇâ°ú ÆòÇ༱ÀÌ ÀÌ·ç´Â °¢(Th)À» ¸ð»çÇϱâ À§ÇØ 0°ú p»çÀÌÀÇ ÀÓÀÇÀÇ °ªÀ» ¹«ÀÛÀ§·Î ±¸ÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù.
Th =
Rnd * 3.141592
´ÙÀ½Àº ¹Ù´ÃÀÇ Á߽ɿ¡¼ ¹Ù´ÃÀÇ ¾ç³¡ÀÇ À§Ä¡¸¦ °¡´ÆÇÏ´Â XÁÂÇ¥¿Í Y ÁÂÇ¥ÀÇ Àý´ë °ªÀ» DX¿Í DY·Î °è»êÇÏ´Â ¸í·ÉÀÌ´Ù. ¿©±â¼ À¯ÀÇÇÒ Á¡Àº ¹Ù´ÃÀÇ ±æÀÌ°¡ µÎ ÆòÇ༱ºÐÀÇ »çÀÌÀÇ ±æÀÌ(par2Line.Y1 - par1Line.Y1) ¿Í ÀÏÄ¡ÇÑ´Ù´Â »ç½ÇÀÌ´Ù.
DX =
0.5 * (par2Line.Y1 - par1Line.Y1) * Cos(Th)
DY =
0.5 * (par2Line.Y1 - par1Line.Y1) * Sin(Th)
ÀÌ
°ªµé°ú ¹Ù´ÃÀÇ Áß½ÉÀÇ ÁÂÇ¥·ÎºÎÅÍ ¹Ù´ÃÀÇ ¾çÂÊ ³¡ÀÇ À§Ä¡ (RX,RY), (LX,LY)¸¦ °è»êÇÑ´Ù.
RX =
CX + DX
RY =
CY + DY
LX =
CX - DX
LY =
CY - DY
À̵é·ÎºÎÅÍ ¶³¾îÁø ¹Ù´ÃÀ» »¡°£»öÀÇ ¼±ºÐÀ¸·Î Ç¥½ÃÇÑ´Ù.
frmNeedle.Line
(RX, RY)-(LX, LY), RGB(255, 0, 0)
ÀÌÁ¦ ¶³¾î¶ß¸° ¹Ù´ÃÀÇ ÃѼö¸¦ Çϳª Áõ°¡½ÃÅ°°í
gTotal
= gTotal + 1
¹Ù´ÃÀÇ ¾çÂÊ ³¡ÀÇ Y ÁÂÇ¥ Áß Çϳª°¡ µÎ ÆòÇà ¼±ºÐÀÇ Y ÁÂÇ¥¿Í ºñ±³ÇÏ¿© ¹Ù´ÃÀÌ ÆòÇ༱°ú ±³Â÷ÇÏ´ÂÁö ¿©ºÎ¸¦ º¸¾Æ¼
If RY
> par2Line.Y1 Or LY < par1Line.Y1 Then
±³Â÷ÇÏ¸é ±³Â÷ÇÑ È½¼ö Çϳª ¿Ã¸°´Ù.
gCross = gCross + 1
End If
ÀÌÁ¦ Pi °ªÀ» °è»êÇØ º¸ÀÚ.
If
gCross = 0 Then
¸¸¾à ±³Â÷ÇÑ ´©Àû Ƚ¼ö°¡ 0 À̸é ÃßÁ¤ÇÏ´Â Pi °ªÀÌ 0ÀÌ´Ù.
Pi = 0
¸¸¾à ±³Â÷ÇÑ ´©Àû Ƚ¼ö°¡ 0 ÀÌ ¾Æ´Ï¸é
Else
Pi
= 2 * gTotal / gCross
·Î
ÃßÁ¤ÇÏ´Â
Pi °ªÀ» °è»êÇÒ ¼ö ÀÖ´Ù.
End If
°á°ú¸¦ ´ÙÀ½°ú °°ÀÌ Ç¥½ÃÇÑ´Ù. ¸ÕÀú picture box¾È¿¡ °è»êÇÑ Pi °ª¿¡ ¸Â´Â Á¶±×¸¸ ¿ø(Èò»ö±ò) ¿øÀ» ±×¸°´Ù. ¿øÀÇ Áß½ÉÀÇ X ÁÂÇ¥´Â ¶³¾î¶ß¸° ¹Ù´ÃÀÇ ¼ö¿¡ ºñ·ÊÇÏ¿© X À» µû¶ó ¿òÁ÷ÀÌ°Ô ÇÏ°í Áï gTotal * 10 + cyLin.X1À» X ÁÂÇ¥·Î ÇÑ´Ù. ¶Ç 3.14¿Í 6.28À» ³ªÅ¸³»´Â µÎ Á÷¼±ÀÇ Y ÁÂÇ¥ÀÇ Â÷ÀÌ piLin.Y1 - pi2Lin.Y1¸¦ 3.141592·Î µÎ¾î (piLin.Y1 - pi2Lin.Y1)
* Pi / 3.141592·Î
±¸ÇÑ
Pi °ªÀ» Ç¥½ÃÇ쵂 X ÃàÀÇ Y°ª cxLin.Y2¿¡¼ ÀÌ °ªÀ» »©¼ ¿øÀÇ Áß½ÉÀÇ Y °ªÀ¸·Î ÇÏ¿© ¿øÀ» ±×¸®¸é µÈ´Ù.
picResult.Circle (gTotal * 10 +
cyLin.X1, cxLin.Y2 - Int((piLin.Y1 - pi2Lin.Y1) * Pi / 3.141592)), 5, RGB(255,
255, 255)
´ÙÀ½À¸·Î lblResult¿¡ °è»êÇÑ °á°ú¸¦ ³ªÅ¸³½´Ù. ¸ÕÀú ¡°´øÁøȽ¼ö=¡± ¿¡ ´øÁø ÃѼö¸¦ ¹®ÀÚ·Î ³ªÅ¸³»´Â Str(gTotal)À» ¾²°í ´ÙÀ½À¸·Î ÁÙ ¹Ù²Ù°í(Chr(13)) , ¹Ù²Û ÁÙÀÇ Á¦ÀÏ ¾ÕÀ¸·Î °¡°í(Chr(10)) °£ ´ÙÀ½, "¸¸³ Ƚ¼ö = " ¿¡ ¸¸³ ÃѼö¸¦ ¹®ÀÚ·Î ³ªÅ¸³»´Â Str(gTotal)À» ¾²°í ´ÙÀ½À¸·Î Áٹٲٰí(Chr(13)) , ¹Ù²Û ÁÙÀÇ Á¦ÀÏ ¾ÕÀ¸·Î °¡°í(Chr(10)) °¡¼, "Pi= " ¿¡ °è»êÇÑ Pi °ªÀ» ¹®ÀÚ·Î ³ªÅ¸³»´Â Str(Pi)À»
¾²°í ÀÌ °á°ú¸¦ lblResultÀÇ Caption¿¡ º¸³»¸é µÈ´Ù.
Info =
"´øÁø Ƚ¼ö = " + Str(gTotal) +
Chr(13) + Chr(10)
Info =
Info + "¸¸³ Ƚ¼ö = " + Str(gCross) + Chr(13) +
Chr(10)
Info =
Info + "Pi= " + Str(Pi)
lblResult.Caption
= Info
End
Sub
´ÙÀ½Àº ¹Ù´ÃÀ» ÇѲ¨¹ø¿¡ 100°³¾¿ ¶³¾î¶ß¸®´Â ÇÁ·Î±×·¥À¸·Î 100 DRS. ButtonÀ» ClickÇÏ¸é µÈ´Ù. ÀÌ ÇÁ·Î±×·¥Àº ¹Ù´ÃÀÌ 100°³ ¶³¾îÁú ¶§ÀÇ ¸ð¾ç¸¸ ³ªÅ¸³»°í ÀÌ °á°ú·ÎºÎÅÍ Pi °ªÀ» °è»êÇÏ´Â °úÁ¤Àº ¾ø´Ù.
Private
Sub cmdHrds_Click()
Dim
Count As Single
Dim
CX, CY, RX, RY, LX, LY As Long
Dim Th
As Double
Dim
DX, DY As Double
CX =
0.5 * (par1Line.X2 - par1Line.X1) + par1Line.X1 'Int(Rnd * (par1Line.X2 -
par1Line.X1)) + par1Line.X1
Count
= 1
Do
While Count < 1001
CY =
Int(Rnd * (par2Line.Y1 - par1Line.Y1)) + par1Line.Y1
Th =
Rnd * 2 * 3.141592
DX =
0.5 * (par2Line.Y1 - par1Line.Y1) * Cos(Th)
DY =
0.5 * (par2Line.Y1 - par1Line.Y1) * Sin(Th)
RX = CX
+ DX
RY =
CY + DY
LX =
CX - DX
LY =
CY - DY
frmNeedle.Line
(RX, RY)-(LX, LY), RGB(0, 255, 0)
Count
= Count + 1
Loop
frmNeedle.Cls
End
Sub
¿¬½À¹®Á¦: ¹Ù´Ã100 °³¸¦ ÇѲ¨¹ø¿¡ ¶³¾î¶ß·ÈÀ» ¶§ÀÇ Pi °ªÀ» °è»êÇÏ¿© ±× °á°ú¸¦ Ç¥½ÃÇÏ´Â ÇÁ·Î±×·¥ °úÁ¤À» procedure
Private Sub cmdHrds_Click()¿¡
»ðÀÔÇÏ¿© º¸¶ó.