| ²é¿´: 1490 | »Ø¸´: 19 | |||
| ¡¾½±Àø¡¿ ±¾Ìû±»ÆÀ¼Û5´Î£¬×÷Õß3s_studioÔö¼Ó½ð±Ò 4.5 ¸ö | |||
| µ±Ç°Ö÷ÌâÒѾ´æµµ¡£ | |||
[×ÊÔ´]
¡¾·ÖÏí¡¿Óɾγ¶È×ø±êÇó¾àÀëµÄVB³ÌÐò£¨¸½Ô´´úÂ룩
|
|||
|
¾Î³¶È×ø±êµÄµØÍ¼ÖÐÇó¾àÀëµÄVB6.0³ÌÐò£¬¾àÀ뵥λΪM£¬ÀûÓôóµØÕý·´Ëã°×Èû¶û¹«Ê½±àÖÆ¶ø³É¡£ ÏÂÔØ£º ³ÌÐò¼°Ô´´úÂëÏÂÔØ [ Last edited by 3s_studio on 2008-12-13 at 09:38 ] |
» ²ÂÄãϲ»¶
Ê×´ÎÔÚÒþ·ü¿óÌåÉÏ·½·¢ÏÖ½ð¡¢ÁòËáǦ¡¢ÏõËáǦ¡¢ÈýÑõ»¯ÎٵȺ¬½ðÊôÄÉÃ×΢Á£
ÒѾÓÐ8È˻ظ´
ÇóÖú£ºÓÐûÓдóÉñÓÐÁ÷Ìå°ü¹üÌ弯ËãÈí¼þ
ÒѾÓÐ0È˻ظ´
µØÖÊѧÂÛÎÄÈóÉ«/·ÒëÔõôÊÕ·Ñ?
ÒѾÓÐ188È˻ظ´
ÇàC×îºóÒ»Ä꣬ɢ½ðÆí¸£°É
ÒѾÓÐ48È˻ظ´
ûÖУ¬ÓеãÄÑÊÜ£¬¿ÆÑÐÒ²Ðí¾Íµ½ÕâÁË£¬»Ø¹éÉú»î°É
ÒѾÓÐ15È˻ظ´
¡¾ÕÐÆ¸¡¿¿ÆÑÐÖúÀí+ÎåÏÕÒ»½ð
ÒѾÓÐ20È˻ظ´
282Çóµ÷¼Á
ÒѾÓÐ0È˻ظ´
ÕÐÆ¸²©Ê¿Ñо¿Éú
ÒѾÓÐ45È˻ظ´
2Â¥2008-06-24 09:53:42
3Â¥2008-06-24 09:59:28
4Â¥2008-06-24 10:50:34
5Â¥2008-06-24 13:47:42
6Â¥2008-06-24 20:57:13
7Â¥2008-06-25 09:00:44
8Â¥2008-06-25 17:05:14
9Â¥2008-06-25 18:10:01
10Â¥2008-06-25 22:59:00
11Â¥2008-06-26 10:34:04
|
¸üÏêϸԴÂëÇë¿´http://bbs.i-location.org/thread-294-1-1.html /// /// ±´Èü¶û´óµØÎÊÌâÕý½â /// /// ÒÑÖªµãγ¶È /// ÒÑÖªµã¾¶È /// ´óµØÏß³¤ /// ´óµØ·½Î»½Ç /// ´ýÇóµãγ¶È /// ´ýÇóµã¾¶È /// ´óµØ·´·½Î»½Ç /// ²Î¿¼ÍÖÇò³¤°ëÖá /// ²Î¿¼ÍÖÇò±âÂʵ¹Êý public static void Bessel_PntSA_Pnt(double B1, double L1, double S, double A1, out double B2, out double L2, out double A2, double a, double f) { double ee = (2 * f - 1) / f / f; //µÚһƫÐÄÂÊµÄÆ½·½ double ee2 = ee / (1 - ee); //µÚ¶þÆ«ÐÄÂÊµÄÆ½·½ double u1 = Math.Atan(Math.Sqrt(1 - ee) * Math.Tan(B1 * Math.PI / 180)); double m = Math.Cos(u1) * Math.Sin(A1); m = Math.Atan(m / Math.Sqrt(1 - m * m)); double M_ = Math.Atan(Math.Tan(u1) / Math.Cos(A1)); if (M_ < 0) M_ += Math.PI; double KK = ee2 * Math.Pow(Math.Cos(m), 2); double alpha = Math.Sqrt(1 + ee2) * (1 - KK / 4 + 7 * KK * KK / 64 - 15 * Math.Pow(KK, 3) / 256) / a; double beta = KK / 4 - KK * KK / 8 + 37 * Math.Pow(KK, 3) / 512; double gama = KK * KK * (1 - KK) / 128; double sigma, temp; sigma = alpha * S; temp = 0; while (Math.Abs(temp - sigma) > 0.0000000001) { temp = sigma; sigma = alpha * S + beta * Math.Sin(sigma) * Math.Cos(2 * M_ + sigma) + gama * Math.Sin(2 * sigma) * Math.Cos(4 * M_ + 2 * sigma); } A2 = Math.Atan(Math.Tan(m) / Math.Cos(M_ + sigma)); if (Math.Cos(M_) > 0) A2 += Math.PI; if (m < 0 && Math.Cos(M_) < 0) A2 += 2 * Math.PI; double u2 = Math.Atan(-Math.Cos(A2) * Math.Tan(M_ + sigma)); double lamda1; lamda1 = Math.Atan(Math.Sin(u2) * Math.Tan(A2)); if (Math.Cos(M_) < 0) lamda1 += Math.PI; if (m < 0 && Math.Cos(M_) > 0) lamda1 += 2 * Math.PI; double lamda2; lamda2 = Math.Atan(Math.Sin(u1) * Math.Tan(A1)); if (m > 0) { if (Math.Cos(M_ + sigma) < 0) lamda2 += Math.PI; else if (Math.Sin(M_ + sigma) < 0) lamda2 += 2 * Math.PI; } else { if (Math.Cos(2 * Math.PI - M_ - sigma) < 0) lamda2 += Math.PI; else if (Math.Sin(M_ + sigma) < 0) lamda2 += 2 * Math.PI; } B2 = Math.Atan(Math.Sqrt(1 + ee2) * Math.Tan(u2)) * 180 / Math.PI; KK = ee * Math.Pow(Math.Cos(m), 2); alpha = ee / 2 + ee * ee / 8 + Math.Pow(ee, 3) / 16 - ee * (1 + ee) * KK / 16 + 3 * ee * KK * KK / 128; gama = ee * KK * KK / 256; L2 = lamda1 + lamda2 - Math.Sin(m) * (alpha * sigma + beta * Math.Sin(sigma) * Math.Cos(2 * M_ + sigma) + gama * Math.Sin(2 * sigma) * Math.Cos(4 * M_ + 2 * sigma)); L2 = L1 + L2 * 180 / Math.PI; } /// /// ÓÉÁ½µã´óµØ×ø±êÇó½â´óµØ·½Î»½Ç /// /// Æðµãγ¶È /// Æðµã¾¶È /// Ä©µãγ¶È /// Ä©µã¾¶È /// ²Î¿¼ÍÖÇò³¤°ëÖá /// ²Î¿¼ÍÖÇò±âÂʵ¹Êý /// public static double Bessel_BL_A(double B1, double L1, double B2, double L2, double a, double f) { if (L1 == L2) return 0; double ee = (2 * f - 1) / f / f; //µÚһƫÐÄÂÊµÄÆ½·½ double u1 = Math.Atan(Math.Sqrt(1 - ee) * Math.Tan(B1 * Math.PI / 180)); double u2 = Math.Atan(Math.Sqrt(1 - ee) * Math.Tan(B2 * Math.PI / 180)); double dL = (L2 - L1) * Math.PI / 180; double sigma = Math.Sin(u1) * Math.Sin(u2) + Math.Cos(u1) * Math.Cos(u2) * Math.Cos(dL); sigma = Math.Atan(Math.Sqrt(1 - sigma * sigma) / sigma); if (sigma <= 0) sigma += Math.PI; double m = Math.Cos(u1) * Math.Cos(u2) * Math.Sin(dL) / Math.Sin(sigma); m = Math.Atan(m / Math.Sqrt(1 - m * m)); double KK = ee * Math.Pow(Math.Cos(m), 2); double alpha = ee / 2 + ee * ee / 8 + Math.Pow(ee, 3) / 16 - ee * (1 + ee) * KK / 16 + 3 * ee * KK * KK / 128; double lamda = dL + alpha * sigma * Math.Sin(m); sigma += Math.Sin(m) * (alpha * sigma * Math.Sin(m)); m = Math.Cos(u1) * Math.Cos(u2) * Math.Sin(lamda) / Math.Sin(sigma); m = Math.Atan(m / Math.Sqrt(1 - m * m)); double A = Math.Atan(Math.Sin(lamda) / (Math.Cos(u1) * Math.Tan(u2) - Math.Sin(u1) * Math.Cos(lamda))); if (A <= 0) A += Math.PI; if (m <= 0) A += Math.PI; double M_ = Math.Atan(Math.Sin(u1) * Math.Tan(A) / Math.Sin(m)); if (M_ <= 0) M_ += Math.PI; KK = ee * Math.Pow(Math.Cos(m), 2); alpha = ee / 2 + ee * ee / 8 + Math.Pow(ee, 3) / 16 - ee * (1 + ee) * KK / 16 + 3 * ee * KK * KK / 128; double beta = ee * (1 + ee) * KK / 16 - ee * KK * KK / 32; lamda = dL + Math.Sin(m) * (alpha * sigma + beta * Math.Sin(sigma) * Math.Cos(2 * M_ + sigma)); A = Math.Atan(Math.Sin(lamda) / (Math.Cos(u1) * Math.Tan(u2) - Math.Sin(u1) * Math.Cos(lamda))); if (A <= 0) A += Math.PI; if (m <= 0) A += Math.PI; return A * 180 / Math.PI; } /// /// ÓÉ´óµØ×ø±ê¼ÆËã´óµØÏß³¤ /// /// Æðµãγ¶È /// Æðµã¾¶È /// Ä©µãγ¶È /// Ä©µã¾¶È /// ²Î¿¼ÍÖÇò³¤°ëÖá /// ²Î¿¼ÍÖÇò±âÂʵ¹Êý /// public static double Bessel_BL_S(double B1, double L1, double B2, double L2, double a, double f) { if (L1 == L2) return Math.Abs(MeridianLength(B1, a, f) - MeridianLength(B2, a, f)); double ee = (2 * f - 1) / f / f; //µÚһƫÐÄÂÊµÄÆ½·½ double ee2 = ee / (1 - ee); //µÚ¶þÆ«ÐÄÂÊµÄÆ½·½ double u1 = Math.Atan(Math.Sqrt(1 - ee) * Math.Tan(B1 * Math.PI / 180)); double u2 = Math.Atan(Math.Sqrt(1 - ee) * Math.Tan(B2 * Math.PI / 180)); double dL = (L2 - L1) * Math.PI / 180; double sigma = Math.Sin(u1) * Math.Sin(u2) + Math.Cos(u1) * Math.Cos(u2) * Math.Cos(dL); sigma = Math.Atan(Math.Sqrt(1 - sigma * sigma) / sigma); if (sigma <= 0) sigma += Math.PI; double m = Math.Cos(u1) * Math.Cos(u2) * Math.Sin(dL) / Math.Sin(sigma); m = Math.Atan(m / Math.Sqrt(1 - m * m)); double KK = ee * Math.Pow(Math.Cos(m), 2); double alpha = ee / 2 + ee * ee / 8 + Math.Pow(ee, 3) / 16 - ee * (1 + ee) * KK / 16 + 3 * ee * KK * KK / 128; double lamda = dL + alpha * sigma * Math.Sin(m); sigma += Math.Sin(m) * (alpha * sigma * Math.Sin(m)); m = Math.Cos(u1) * Math.Cos(u2) * Math.Sin(lamda) / Math.Sin(sigma); m = Math.Atan(m / Math.Sqrt(1 - m * m)); double A = Math.Atan(Math.Sin(lamda) / (Math.Cos(u1) * Math.Tan(u2) - Math.Sin(u1) * Math.Cos(lamda))); if (A <= 0) A += Math.PI; if (m <= 0) A += Math.PI; double M_ = Math.Atan(Math.Sin(u1) * Math.Tan(A) / Math.Sin(m)); if (M_ <= 0) M_ += Math.PI; KK = ee * Math.Pow(Math.Cos(m), 2); alpha = ee / 2 + ee * ee / 8 + Math.Pow(ee, 3) / 16 - ee * (1 + ee) * KK / 16 + 3 * ee * KK * KK / 128; double beta = ee * (1 + ee) * KK / 16 - ee * KK * KK / 32; lamda = dL + Math.Sin(m) * (alpha * sigma + beta * Math.Sin(sigma) * Math.Cos(2 * M_ + sigma)); sigma = Math.Sin(u1) * Math.Sin(u2) + Math.Cos(u1) * Math.Cos(u2) * Math.Cos(lamda); sigma = Math.Atan(Math.Sqrt(1 - sigma * sigma) / sigma); if (sigma < 0) sigma += Math.PI; KK = ee2 * Math.Pow(Math.Cos(m), 2); alpha = Math.Sqrt(1 + ee2) / a * (1 - KK / 4 + 7 * KK * KK / 64 - 15 * Math.Pow(KK, 3) / 256); beta = KK / 4 - KK * KK / 8 + 37 * Math.Pow(KK, 3) / 512; double gama = KK * KK * (1 - KK) / 128; double S = (sigma - beta * Math.Sin(sigma) * Math.Cos(2 * M_ + sigma) - gama * Math.Sin(2 * gama) * Math.Cos(4 * M_ + 2 * sigma)) / alpha; return S; } [ Last edited by moonlight3988 on 2008-7-29 at 21:06 ] |
12Â¥2008-06-26 12:49:33
13Â¥2008-06-26 13:31:39
14Â¥2008-06-29 16:22:45
15Â¥2008-07-02 16:16:18
16Â¥2008-07-07 17:47:08
17Â¥2008-07-26 18:05:31
19Â¥2008-09-13 21:06:08
¼òµ¥»Ø¸´
tanyujuan18Â¥
2008-08-04 07:37
»Ø¸´
лл·ÖÏí£¡£¡














»Ø¸´´ËÂ¥
