![]() |
TX Library Help – Version: 00173a, Revision: 174
|
00001 //{=========================================================================== 00010 // (C) Филипп Куликов, 7 класс, 2006 00011 //}=========================================================================== 00012 00013 #include "TXLib.h" 00014 #include "Config.h" 00015 00016 //---------------------------------------------------------------------------------------------------------------------- 00017 //{ Прототипы 00018 //---------------------------------------------------------------------------------------------------------------------- 00019 00020 void txdrawGrafics (double start, double finish, double (*func) (double x, const double kF[]), 00021 COLORREF colour(), double increase, double radius, const double kF[]); 00022 00023 void alphaBlend (double x, double y, double width, double height, 00024 HDC image, double xImage, double yImage, double widthOriginal, double heightOriginal, double alpha, 00025 int pictureN); 00026 00027 double parabola (double x, const double kF[]); 00028 double liner (double x, const double kF[]); 00029 double parabola_3 (double x, const double kF[]); 00030 double parabola_4 (double x, const double kF[]); 00031 double arc (double x, const double kF[]); 00032 double big_arc (double x, const double kF[]); 00033 double some_sin (double x, const double kF[]); 00034 double more_parabols (double x, const double kF[]); 00035 double big_sin (double x, const double kF[]); 00036 double scliff (double x, const double kF[]); 00037 double rope (double x, const double kF[]); 00038 double waves (double x, const double kF[]); 00039 double big_waves (double x, const double kF[]); 00040 double radio_waves (double x, const double kF[]); 00041 double forest (double x, const double kF[]); 00042 double small_forest (double x, const double kF[]); 00043 double rainforest (double x, const double kF[]); 00044 double big_rainforest (double x, const double kF[]); 00045 double sinus (double x, const double kF[]); 00046 double cosinus (double x, const double kF[]); 00047 00048 COLORREF GREEN(); 00049 COLORREF LIGHTGREEN(); 00050 COLORREF BLUE(); 00051 COLORREF LIGHTBLUE(); 00052 COLORREF RED(); 00053 COLORREF LIGHTRED(); 00054 COLORREF CYAN(); 00055 COLORREF LIGHTCYAN(); 00056 COLORREF MAGENTA(); 00057 COLORREF LIGHTMAGENTA(); 00058 COLORREF PINK(); 00059 COLORREF YELLOW(); 00060 COLORREF ORANGE(); 00061 COLORREF BROWN(); 00062 COLORREF WHITE(); 00063 COLORREF BLACK(); 00064 COLORREF DARKGREY(); 00065 COLORREF LIGHTGREY(); 00066 COLORREF GREY(); 00067 COLORREF MULTICOLOUR(); 00068 00069 void Pen(); 00070 00071 //} 00072 //---------------------------------------------------------------------------------------------------------------------- 00073 00074 namespace { namespace TX { namespace Win32 { 00075 _TX_DLLIMPORT ("GDI32", HRGN, CreateRectRgn, (int x0, int y0, int x1, int y1)); 00076 }}} 00077 00078 //---------------------------------------------------------------------------------------------------------------------- 00079 //{ Функции 00080 //---------------------------------------------------------------------------------------------------------------------- 00081 00082 void txdrawGrafics (double start, double finish, double (*func) (double x, const double kF[]), 00083 COLORREF colour(), double increase, double /*radius*/, const double kF[]) 00084 { 00085 double oldX = -11.35; 00086 double oldY = -11.35; 00087 00088 txSetFillColour (TX_BLACK); 00089 00090 HRGN region = Win32::CreateRectRgn (LeftOfTheGrafic, TopOfTheGrafic, RightOfTheGrafic, BottomOfTheGrafic); 00091 Win32::SelectObject (txDC(), region); 00092 00093 double x = start; 00094 while (x <= finish) 00095 { 00096 txSetColour (colour(), 3); 00097 00098 double y = func (x, kF); 00099 00100 double grX = x * Step + Xcentre; 00101 double grY = -y * Step + Ycentre; 00102 00103 txLine (oldX, oldY, grX, grY); 00104 00105 oldX = grX; 00106 oldY = grY; 00107 00108 x += increase; 00109 } 00110 00111 HRGN fullRegion = Win32::CreateRectRgn (0, 0, txGetExtentX(), txGetExtentY()); 00112 Win32::SelectObject (txDC(), fullRegion); 00113 00114 Win32::DeleteObject (region); 00115 } 00116 00117 //---------------------------------------------------------------------------------------------------------------------- 00118 00119 void alphaBlend (double x, double y, double width, double height, 00120 HDC image, double xImage, double yImage, double widthOriginal, double heightOriginal, double alpha, int pictureN) 00121 { 00122 BLENDFUNCTION blend = { AC_SRC_OVER, 0, (BYTE) ROUND (alpha * 255), AC_SRC_ALPHA}; 00123 00124 if (pictureN == 2) width = width * 2; 00125 00126 txGDI (Win32::AlphaBlend (txDC(), ROUND (x), ROUND (y), ROUND (width), ROUND (height), 00127 image, ROUND (xImage), ROUND (yImage), ROUND (widthOriginal), ROUND (heightOriginal), blend), txDC()); 00128 } 00129 00130 //---------------------------------------------------------------------------------------------------------------------- 00131 00132 void Pen() 00133 { 00134 HPEN pen = Win32::CreatePen (PS_DOT, 1, TX_RED); 00135 00136 txSelectObject (pen); 00137 } 00138 00139 //---------------------------------------------------------------------------------------------------------------------- 00140 //{ Функции графиков 00141 //---------------------------------------------------------------------------------------------------------------------- 00142 00143 /* 00144 double parabola (double x, double k, double b, double c) 00145 { 00146 return k * x*x + b*x + c; 00147 } 00148 */ 00149 00150 double parabola (double x, const double kF[]) 00151 { 00152 double k = kF [2]; 00153 double b = kF [1]; 00154 double c = kF [0]; 00155 00156 return k * x*x + b * x + c; 00157 } 00158 00159 //--------------------------------------------------------------------------------------------------------------------- 00160 00161 double liner (double x, const double kF[]) 00162 { 00163 return kF [1] * x + kF [0]; 00164 } 00165 00166 //--------------------------------------------------------------------------------------------------------------------- 00167 00168 double parabola_3 (double x, const double kF[]) 00169 { 00170 return kF [2] * x*x*x + kF [1] / kF [0]; 00171 } 00172 00173 //--------------------------------------------------------------------------------------------------------------------- 00174 00175 double parabola_4 (double x, const double kF[]) 00176 { 00177 return kF [2] * x*x*x*x + kF [1] / kF [0]; 00178 } 00179 00180 //--------------------------------------------------------------------------------------------------------------------- 00181 00182 double arc (double x, const double kF[]) 00183 { 00184 double k = kF [2]; 00185 double b = kF [1]; 00186 double c = kF [0]; 00187 00188 return k * x*x/10 + b*x + c; 00189 } 00190 00191 //------------------------------------------------------------------------------------------------------------------------------------ 00192 00193 double big_arc (double x, const double kF[]) 00194 { 00195 return kF [2] * x*x/100 + kF [1] + kF [0]; 00196 } 00197 00198 //--------------------------------------------------------------------------------------------------------------------------------- 00199 00200 double some_sin (double x, const double kF[]) 00201 { 00202 double k = kF [2]; 00203 double b = kF [1]; 00204 double c = kF [0]; 00205 00206 return k * sin (x) * sin (x) * cos (x) + b * x + c; 00207 } 00208 00209 //------------------------------------------------------------------------------------------------------------------------------------ 00210 00211 double more_parabols (double x, const double kF[]) 00212 { 00213 return kF [2] * sin (x) / sin (x) / cos (x) + kF [1]*x + kF [0]; 00214 } 00215 00216 //--------------------------------------------------------------------------------------------------------------------------- 00217 00218 double big_sin (double x, const double kF[]) 00219 { 00220 return kF [2] * sin (x) / tan (x) + kF [1]*x + kF [0]; 00221 } 00222 00223 //----------------------------------------------------------------------------------------------------------------------- 00224 00225 double scliff (double x, const double kF[]) 00226 { 00227 return kF [2] * sin (x) / tan (x) + x * x / 10 + kF [1]*x + kF [0]; 00228 } 00229 00230 //---------------------------------------------------------------------------------------------------------------------------- 00231 00232 double rope (double x, const double kF[]) 00233 { 00234 return kF [2] * sin (x) / tan (x) + x * x / 100 + kF [1]*x + kF [0]; 00235 } 00236 00237 //----------------------------------------------------------------------------------------------------------------------------------- 00238 00239 double waves (double x, const double kF[]) 00240 { 00241 return kF [2] * sin (x) / tan (x) * x * x / 70 + kF [1]*x + kF [0]; 00242 } 00243 00244 //---------------------------------------------------------------------------------------------------------------------------- 00245 00246 double big_waves (double x, const double kF[]) 00247 { 00248 return kF [2] * sin (x) / tan (x) * x * x / 10 + kF [1]*x + kF [0]; 00249 } 00250 00251 //------------------------------------------------------------------------------------------------------------------------------ 00252 00253 double radio_waves (double x, const double kF[]) 00254 { 00255 return kF [2] * sin (x) / tan (x) * x * x / 10* (x / 2 + x - (x/2)) + kF [1]*x + kF [0]; 00256 } 00257 00258 //------------------------------------------------------------------------------------------------------------------------- 00259 00260 double forest (double x, const double kF[]) 00261 { 00262 return kF [2] * x*x * tan (x) * sin (x) * cos (x)/10 + kF [1]*x + kF [0]; 00263 } 00264 00265 //--------------------------------------------------------------------------------------------------------------------------------- 00266 double small_forest (double x, const double kF[]) 00267 { 00268 return kF [2] * x*x * tan (x) * sin (x) * cos (x)/100 + kF [1]*x + kF [0]; 00269 } 00270 00271 //------------------------------------------------------------------------------------------------------------------------------- 00272 00273 double rainforest (double x, const double kF[]) 00274 { 00275 return kF [2] * x*x * tan (x) * sin (x) * cos (x) * 100 + kF [1]*x + kF [0]; 00276 } 00277 00278 //---------------------------------------------------------------------------------------------------------------------- 00279 00280 double big_rainforest (double x, const double kF[]) 00281 { 00282 return kF [2] * x*x * tan (x) * sin (x) * cos (x) + x/x + kF [1]*x + kF [0]; 00283 } 00284 00285 //---------------------------------------------------------------------------------------------------------------------- 00286 00287 double sinus (double x, const double kF[]) 00288 { 00289 return kF [2] * sin (x * kF [1]) + kF [0]; 00290 } 00291 00292 //---------------------------------------------------------------------------------------------------------------------- 00293 00294 double cosinus (double x, const double kF[]) 00295 { 00296 return kF [2] * cos (x) + kF [1] / kF [0]; 00297 } 00298 00299 //---------------------------------------------------------------------------------------------------------------------- 00300 //} 00301 00302 //---------------------------------------------------------------------------------------------------------------------- 00303 //{ Функции цветов 00304 //---------------------------------------------------------------------------------------------------------------------- 00305 00306 COLORREF GREEN() 00307 { 00308 return TX_GREEN; 00309 } 00310 00311 //---------------------------------------------------------------------------------------------------------------------- 00312 00313 COLORREF LIGHTGREEN() 00314 { 00315 return TX_LIGHTGREEN; 00316 } 00317 00318 //---------------------------------------------------------------------------------------------------------------------- 00319 00320 COLORREF YELLOW() 00321 { 00322 return TX_YELLOW; 00323 } 00324 00325 //---------------------------------------------------------------------------------------------------------------------- 00326 00327 COLORREF ORANGE() 00328 { 00329 return TX_ORANGE; 00330 } 00331 00332 //---------------------------------------------------------------------------------------------------------------------- 00333 00334 COLORREF RED() 00335 { 00336 return TX_RED; 00337 } 00338 00339 //---------------------------------------------------------------------------------------------------------------------- 00340 00341 COLORREF LIGHTRED() 00342 { 00343 return TX_LIGHTRED; 00344 } 00345 00346 //---------------------------------------------------------------------------------------------------------------------- 00347 00348 COLORREF BLUE() 00349 { 00350 return TX_BLUE; 00351 } 00352 00353 //---------------------------------------------------------------------------------------------------------------------- 00354 00355 COLORREF LIGHTBLUE() 00356 { 00357 return TX_LIGHTBLUE; 00358 } 00359 00360 //---------------------------------------------------------------------------------------------------------------------- 00361 00362 COLORREF PINK() 00363 { 00364 return TX_PINK; 00365 } 00366 00367 //---------------------------------------------------------------------------------------------------------------------- 00368 00369 COLORREF WHITE() 00370 { 00371 return TX_WHITE; 00372 } 00373 00374 //---------------------------------------------------------------------------------------------------------------------- 00375 00376 COLORREF BLACK() 00377 { 00378 return TX_BLACK; 00379 } 00380 00381 //---------------------------------------------------------------------------------------------------------------------- 00382 00383 COLORREF BROWN() 00384 { 00385 return TX_BROWN; 00386 } 00387 00388 //---------------------------------------------------------------------------------------------------------------------- 00389 00390 COLORREF LIGHTGREY() 00391 { 00392 return TX_LIGHTGREEN; 00393 } 00394 00395 //---------------------------------------------------------------------------------------------------------------------- 00396 00397 COLORREF DARKGREY() 00398 { 00399 return TX_DARKGREY; 00400 } 00401 00402 //---------------------------------------------------------------------------------------------------------------------- 00403 00404 COLORREF MAGENTA() 00405 { 00406 return TX_MAGENTA; 00407 } 00408 00409 //---------------------------------------------------------------------------------------------------------------------- 00410 00411 COLORREF LIGHTCYAN () 00412 { 00413 return TX_LIGHTCYAN; 00414 } 00415 00416 //---------------------------------------------------------------------------------------------------------------------- 00417 00418 COLORREF LIGHTMAGENTA() 00419 { 00420 return TX_LIGHTMAGENTA; 00421 } 00422 00423 //---------------------------------------------------------------------------------------------------------------------- 00424 00425 COLORREF CYAN() 00426 { 00427 return TX_CYAN; 00428 } 00429 00430 //---------------------------------------------------------------------------------------------------------------------- 00431 00432 COLORREF MULTICOLOUR() 00433 { 00434 return rand() * rand()/64; 00435 } 00436 00437 //} 00438 //} 00439 //----------------------------------------------------------------------------------------------------------------------