Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <stdint.h>
00021 #include <stdlib.h>
00022 #include "cvWrapper.h"
00023 #include "agast7_12d.h"
00024
00025 using namespace std;
00026 using namespace agast;
00027
00028
00029
00030 int AgastDetector7_12d::cornerScore(const unsigned char* p, bool ignorePattern)
00031 {
00032 int bmin = b;
00033 int bmax = 255;
00034 int b_test = (bmax + bmin)/2;
00035
00036 register int_fast16_t offset0=s_offset0;
00037 register int_fast16_t offset1=s_offset1;
00038 register int_fast16_t offset2=s_offset2;
00039 register int_fast16_t offset3=s_offset3;
00040 register int_fast16_t offset4=s_offset4;
00041 register int_fast16_t offset5=s_offset5;
00042 register int_fast16_t offset6=s_offset6;
00043 register int_fast16_t offset7=s_offset7;
00044 register int_fast16_t offset8=s_offset8;
00045 register int_fast16_t offset9=s_offset9;
00046 register int_fast16_t offset10=s_offset10;
00047 register int_fast16_t offset11=s_offset11;
00048
00049 while(1)
00050 {
00051 register const int cb = *p + b_test;
00052 register const int c_b = *p - b_test;
00053 if(p[offset0] > cb)
00054 if(p[offset5] > cb)
00055 if(p[offset2] > cb)
00056 if(p[offset9] > cb)
00057 if(p[offset1] > cb)
00058 if(p[offset6] > cb)
00059 if(p[offset3] > cb)
00060 if(p[offset4] > cb)
00061 goto is_a_corner;
00062 else
00063 if(p[offset10] > cb)
00064 if(p[offset11] > cb)
00065 goto is_a_corner;
00066 else
00067 goto is_not_a_corner;
00068 else
00069 goto is_not_a_corner;
00070 else
00071 if(p[offset8] > cb)
00072 if(p[offset10] > cb)
00073 if(p[offset11] > cb)
00074 goto is_a_corner;
00075 else
00076 if(p[offset4] > cb)
00077 if(p[offset7] > cb)
00078 goto is_a_corner;
00079 else
00080 goto is_not_a_corner;
00081 else
00082 goto is_not_a_corner;
00083 else
00084 goto is_not_a_corner;
00085 else
00086 goto is_not_a_corner;
00087 else
00088 if(p[offset11] > cb)
00089 if(p[offset3] > cb)
00090 if(p[offset4] > cb)
00091 goto is_a_corner;
00092 else
00093 if(p[offset10] > cb)
00094 goto is_a_corner;
00095 else
00096 goto is_not_a_corner;
00097 else
00098 if(p[offset8] > cb)
00099 if(p[offset10] > cb)
00100 goto is_a_corner;
00101 else
00102 goto is_not_a_corner;
00103 else
00104 goto is_not_a_corner;
00105 else
00106 goto is_not_a_corner;
00107 else
00108 if(p[offset6] > cb)
00109 if(p[offset7] > cb)
00110 if(p[offset8] > cb)
00111 if(p[offset4] > cb)
00112 if(p[offset3] > cb)
00113 goto is_a_corner;
00114 else
00115 if(p[offset10] > cb)
00116 goto is_a_corner;
00117 else
00118 goto is_not_a_corner;
00119 else
00120 if(p[offset10] > cb)
00121 if(p[offset11] > cb)
00122 goto is_a_corner;
00123 else
00124 goto is_not_a_corner;
00125 else
00126 goto is_not_a_corner;
00127 else
00128 goto is_not_a_corner;
00129 else
00130 goto is_not_a_corner;
00131 else
00132 goto is_not_a_corner;
00133 else
00134 if(p[offset3] > cb)
00135 if(p[offset4] > cb)
00136 if(p[offset1] > cb)
00137 if(p[offset6] > cb)
00138 goto is_a_corner;
00139 else
00140 if(p[offset11] > cb)
00141 goto is_a_corner;
00142 else
00143 goto is_not_a_corner;
00144 else
00145 if(p[offset6] > cb)
00146 if(p[offset7] > cb)
00147 if(p[offset8] > cb)
00148 goto is_a_corner;
00149 else
00150 goto is_not_a_corner;
00151 else
00152 goto is_not_a_corner;
00153 else
00154 goto is_not_a_corner;
00155 else
00156 goto is_not_a_corner;
00157 else
00158 goto is_not_a_corner;
00159 else
00160 if(p[offset9] > cb)
00161 if(p[offset7] > cb)
00162 if(p[offset8] > cb)
00163 if(p[offset1] > cb)
00164 if(p[offset10] > cb)
00165 if(p[offset11] > cb)
00166 goto is_a_corner;
00167 else
00168 if(p[offset6] > cb)
00169 if(p[offset4] > cb)
00170 goto is_a_corner;
00171 else
00172 goto is_not_a_corner;
00173 else
00174 goto is_not_a_corner;
00175 else
00176 if(p[offset6] > cb)
00177 if(p[offset3] > cb)
00178 if(p[offset4] > cb)
00179 goto is_a_corner;
00180 else
00181 goto is_not_a_corner;
00182 else
00183 goto is_not_a_corner;
00184 else
00185 goto is_not_a_corner;
00186 else
00187 if(p[offset6] > cb)
00188 if(p[offset4] > cb)
00189 if(p[offset3] > cb)
00190 goto is_a_corner;
00191 else
00192 if(p[offset10] > cb)
00193 goto is_a_corner;
00194 else
00195 goto is_not_a_corner;
00196 else
00197 if(p[offset10] > cb)
00198 if(p[offset11] > cb)
00199 goto is_a_corner;
00200 else
00201 goto is_not_a_corner;
00202 else
00203 goto is_not_a_corner;
00204 else
00205 goto is_not_a_corner;
00206 else
00207 goto is_not_a_corner;
00208 else
00209 goto is_not_a_corner;
00210 else
00211 goto is_not_a_corner;
00212 else
00213 if(p[offset5] < c_b)
00214 if(p[offset9] > cb)
00215 if(p[offset3] < c_b)
00216 if(p[offset4] < c_b)
00217 if(p[offset11] > cb)
00218 if(p[offset1] > cb)
00219 if(p[offset8] > cb)
00220 if(p[offset10] > cb)
00221 if(p[offset2] > cb)
00222 goto is_a_corner;
00223 else
00224 if(p[offset7] > cb)
00225 goto is_a_corner;
00226 else
00227 goto is_not_a_corner;
00228 else
00229 goto is_not_a_corner;
00230 else
00231 if(p[offset6] < c_b)
00232 if(p[offset2] < c_b)
00233 if(p[offset7] < c_b)
00234 if(p[offset8] < c_b)
00235 goto is_a_corner;
00236 else
00237 goto is_not_a_corner;
00238 else
00239 goto is_not_a_corner;
00240 else
00241 goto is_not_a_corner;
00242 else
00243 goto is_not_a_corner;
00244 else
00245 if(p[offset6] > cb)
00246 if(p[offset7] > cb)
00247 if(p[offset8] > cb)
00248 if(p[offset10] > cb)
00249 goto is_a_corner;
00250 else
00251 goto is_not_a_corner;
00252 else
00253 goto is_not_a_corner;
00254 else
00255 goto is_not_a_corner;
00256 else
00257 if(p[offset6] < c_b)
00258 if(p[offset2] < c_b)
00259 if(p[offset7] < c_b)
00260 if(p[offset1] < c_b)
00261 goto is_a_corner;
00262 else
00263 if(p[offset8] < c_b)
00264 goto is_a_corner;
00265 else
00266 goto is_not_a_corner;
00267 else
00268 goto is_not_a_corner;
00269 else
00270 goto is_not_a_corner;
00271 else
00272 goto is_not_a_corner;
00273 else
00274 if(p[offset2] < c_b)
00275 if(p[offset7] < c_b)
00276 if(p[offset1] < c_b)
00277 if(p[offset6] < c_b)
00278 goto is_a_corner;
00279 else
00280 goto is_not_a_corner;
00281 else
00282 if(p[offset6] < c_b)
00283 if(p[offset8] < c_b)
00284 goto is_a_corner;
00285 else
00286 goto is_not_a_corner;
00287 else
00288 goto is_not_a_corner;
00289 else
00290 goto is_not_a_corner;
00291 else
00292 goto is_not_a_corner;
00293 else
00294 if(p[offset11] > cb)
00295 if(p[offset8] > cb)
00296 if(p[offset10] > cb)
00297 if(p[offset1] > cb)
00298 if(p[offset2] > cb)
00299 goto is_a_corner;
00300 else
00301 if(p[offset7] > cb)
00302 goto is_a_corner;
00303 else
00304 goto is_not_a_corner;
00305 else
00306 if(p[offset6] > cb)
00307 if(p[offset7] > cb)
00308 goto is_a_corner;
00309 else
00310 goto is_not_a_corner;
00311 else
00312 goto is_not_a_corner;
00313 else
00314 goto is_not_a_corner;
00315 else
00316 goto is_not_a_corner;
00317 else
00318 goto is_not_a_corner;
00319 else
00320 if(p[offset11] > cb)
00321 if(p[offset10] > cb)
00322 if(p[offset3] > cb)
00323 if(p[offset1] > cb)
00324 if(p[offset2] > cb)
00325 goto is_a_corner;
00326 else
00327 if(p[offset7] > cb)
00328 if(p[offset8] > cb)
00329 goto is_a_corner;
00330 else
00331 goto is_not_a_corner;
00332 else
00333 goto is_not_a_corner;
00334 else
00335 if(p[offset6] > cb)
00336 if(p[offset7] > cb)
00337 if(p[offset8] > cb)
00338 goto is_a_corner;
00339 else
00340 goto is_not_a_corner;
00341 else
00342 goto is_not_a_corner;
00343 else
00344 goto is_not_a_corner;
00345 else
00346 if(p[offset8] > cb)
00347 if(p[offset1] > cb)
00348 if(p[offset2] > cb)
00349 goto is_a_corner;
00350 else
00351 if(p[offset7] > cb)
00352 goto is_a_corner;
00353 else
00354 goto is_not_a_corner;
00355 else
00356 if(p[offset6] > cb)
00357 if(p[offset7] > cb)
00358 goto is_a_corner;
00359 else
00360 goto is_not_a_corner;
00361 else
00362 goto is_not_a_corner;
00363 else
00364 goto is_not_a_corner;
00365 else
00366 goto is_not_a_corner;
00367 else
00368 goto is_not_a_corner;
00369 else
00370 if(p[offset9] < c_b)
00371 if(p[offset2] > cb)
00372 if(p[offset1] > cb)
00373 if(p[offset4] > cb)
00374 if(p[offset10] > cb)
00375 if(p[offset3] > cb)
00376 if(p[offset11] > cb)
00377 goto is_a_corner;
00378 else
00379 goto is_not_a_corner;
00380 else
00381 goto is_not_a_corner;
00382 else
00383 if(p[offset6] < c_b)
00384 if(p[offset7] < c_b)
00385 if(p[offset8] < c_b)
00386 if(p[offset11] < c_b)
00387 if(p[offset10] < c_b)
00388 goto is_a_corner;
00389 else
00390 goto is_not_a_corner;
00391 else
00392 goto is_not_a_corner;
00393 else
00394 goto is_not_a_corner;
00395 else
00396 goto is_not_a_corner;
00397 else
00398 goto is_not_a_corner;
00399 else
00400 if(p[offset6] < c_b)
00401 if(p[offset7] < c_b)
00402 if(p[offset8] < c_b)
00403 if(p[offset10] < c_b)
00404 if(p[offset4] < c_b)
00405 goto is_a_corner;
00406 else
00407 if(p[offset11] < c_b)
00408 goto is_a_corner;
00409 else
00410 goto is_not_a_corner;
00411 else
00412 if(p[offset3] < c_b)
00413 if(p[offset4] < c_b)
00414 goto is_a_corner;
00415 else
00416 goto is_not_a_corner;
00417 else
00418 goto is_not_a_corner;
00419 else
00420 goto is_not_a_corner;
00421 else
00422 goto is_not_a_corner;
00423 else
00424 goto is_not_a_corner;
00425 else
00426 if(p[offset6] < c_b)
00427 if(p[offset7] < c_b)
00428 if(p[offset8] < c_b)
00429 if(p[offset4] < c_b)
00430 if(p[offset3] < c_b)
00431 goto is_a_corner;
00432 else
00433 if(p[offset10] < c_b)
00434 goto is_a_corner;
00435 else
00436 goto is_not_a_corner;
00437 else
00438 if(p[offset10] < c_b)
00439 if(p[offset11] < c_b)
00440 goto is_a_corner;
00441 else
00442 goto is_not_a_corner;
00443 else
00444 goto is_not_a_corner;
00445 else
00446 goto is_not_a_corner;
00447 else
00448 goto is_not_a_corner;
00449 else
00450 goto is_not_a_corner;
00451 else
00452 if(p[offset6] < c_b)
00453 if(p[offset7] < c_b)
00454 if(p[offset8] < c_b)
00455 if(p[offset4] < c_b)
00456 if(p[offset3] < c_b)
00457 goto is_a_corner;
00458 else
00459 if(p[offset10] < c_b)
00460 goto is_a_corner;
00461 else
00462 goto is_not_a_corner;
00463 else
00464 if(p[offset10] < c_b)
00465 if(p[offset11] < c_b)
00466 goto is_a_corner;
00467 else
00468 goto is_not_a_corner;
00469 else
00470 goto is_not_a_corner;
00471 else
00472 if(p[offset2] < c_b)
00473 if(p[offset1] < c_b)
00474 if(p[offset3] < c_b)
00475 if(p[offset4] < c_b)
00476 goto is_a_corner;
00477 else
00478 goto is_not_a_corner;
00479 else
00480 goto is_not_a_corner;
00481 else
00482 goto is_not_a_corner;
00483 else
00484 goto is_not_a_corner;
00485 else
00486 goto is_not_a_corner;
00487 else
00488 goto is_not_a_corner;
00489 else
00490 if(p[offset2] > cb)
00491 if(p[offset1] > cb)
00492 if(p[offset3] > cb)
00493 if(p[offset4] > cb)
00494 if(p[offset10] > cb)
00495 if(p[offset11] > cb)
00496 goto is_a_corner;
00497 else
00498 goto is_not_a_corner;
00499 else
00500 goto is_not_a_corner;
00501 else
00502 goto is_not_a_corner;
00503 else
00504 goto is_not_a_corner;
00505 else
00506 goto is_not_a_corner;
00507 else
00508 if(p[offset2] < c_b)
00509 if(p[offset3] < c_b)
00510 if(p[offset4] < c_b)
00511 if(p[offset7] < c_b)
00512 if(p[offset1] < c_b)
00513 if(p[offset6] < c_b)
00514 goto is_a_corner;
00515 else
00516 goto is_not_a_corner;
00517 else
00518 if(p[offset6] < c_b)
00519 if(p[offset8] < c_b)
00520 goto is_a_corner;
00521 else
00522 goto is_not_a_corner;
00523 else
00524 goto is_not_a_corner;
00525 else
00526 goto is_not_a_corner;
00527 else
00528 goto is_not_a_corner;
00529 else
00530 goto is_not_a_corner;
00531 else
00532 goto is_not_a_corner;
00533 else
00534 if(p[offset2] > cb)
00535 if(p[offset10] > cb)
00536 if(p[offset11] > cb)
00537 if(p[offset9] > cb)
00538 if(p[offset1] > cb)
00539 if(p[offset3] > cb)
00540 goto is_a_corner;
00541 else
00542 if(p[offset8] > cb)
00543 goto is_a_corner;
00544 else
00545 goto is_not_a_corner;
00546 else
00547 if(p[offset6] > cb)
00548 if(p[offset7] > cb)
00549 if(p[offset8] > cb)
00550 goto is_a_corner;
00551 else
00552 goto is_not_a_corner;
00553 else
00554 goto is_not_a_corner;
00555 else
00556 goto is_not_a_corner;
00557 else
00558 if(p[offset1] > cb)
00559 if(p[offset3] > cb)
00560 if(p[offset4] > cb)
00561 goto is_a_corner;
00562 else
00563 goto is_not_a_corner;
00564 else
00565 goto is_not_a_corner;
00566 else
00567 goto is_not_a_corner;
00568 else
00569 goto is_not_a_corner;
00570 else
00571 goto is_not_a_corner;
00572 else
00573 if(p[offset9] > cb)
00574 if(p[offset7] > cb)
00575 if(p[offset8] > cb)
00576 if(p[offset10] > cb)
00577 if(p[offset11] > cb)
00578 if(p[offset1] > cb)
00579 goto is_a_corner;
00580 else
00581 if(p[offset6] > cb)
00582 goto is_a_corner;
00583 else
00584 goto is_not_a_corner;
00585 else
00586 goto is_not_a_corner;
00587 else
00588 goto is_not_a_corner;
00589 else
00590 goto is_not_a_corner;
00591 else
00592 goto is_not_a_corner;
00593 else
00594 goto is_not_a_corner;
00595 else if(p[offset0] < c_b)
00596 if(p[offset2] > cb)
00597 if(p[offset5] > cb)
00598 if(p[offset7] > cb)
00599 if(p[offset6] > cb)
00600 if(p[offset4] > cb)
00601 if(p[offset3] > cb)
00602 if(p[offset1] > cb)
00603 goto is_a_corner;
00604 else
00605 if(p[offset8] > cb)
00606 goto is_a_corner;
00607 else
00608 goto is_not_a_corner;
00609 else
00610 if(p[offset9] > cb)
00611 if(p[offset8] > cb)
00612 if(p[offset10] > cb)
00613 goto is_a_corner;
00614 else
00615 goto is_not_a_corner;
00616 else
00617 goto is_not_a_corner;
00618 else
00619 goto is_not_a_corner;
00620 else
00621 if(p[offset9] > cb)
00622 if(p[offset8] > cb)
00623 if(p[offset10] > cb)
00624 if(p[offset11] > cb)
00625 goto is_a_corner;
00626 else
00627 goto is_not_a_corner;
00628 else
00629 goto is_not_a_corner;
00630 else
00631 goto is_not_a_corner;
00632 else
00633 goto is_not_a_corner;
00634 else
00635 goto is_not_a_corner;
00636 else
00637 if(p[offset9] < c_b)
00638 if(p[offset8] < c_b)
00639 if(p[offset10] < c_b)
00640 if(p[offset11] < c_b)
00641 if(p[offset7] < c_b)
00642 if(p[offset1] < c_b)
00643 goto is_a_corner;
00644 else
00645 if(p[offset6] < c_b)
00646 goto is_a_corner;
00647 else
00648 goto is_not_a_corner;
00649 else
00650 goto is_not_a_corner;
00651 else
00652 goto is_not_a_corner;
00653 else
00654 goto is_not_a_corner;
00655 else
00656 goto is_not_a_corner;
00657 else
00658 goto is_not_a_corner;
00659 else
00660 if(p[offset9] < c_b)
00661 if(p[offset7] < c_b)
00662 if(p[offset8] < c_b)
00663 if(p[offset5] < c_b)
00664 if(p[offset1] < c_b)
00665 if(p[offset10] < c_b)
00666 if(p[offset11] < c_b)
00667 goto is_a_corner;
00668 else
00669 if(p[offset6] < c_b)
00670 if(p[offset4] < c_b)
00671 goto is_a_corner;
00672 else
00673 goto is_not_a_corner;
00674 else
00675 goto is_not_a_corner;
00676 else
00677 if(p[offset6] < c_b)
00678 if(p[offset3] < c_b)
00679 if(p[offset4] < c_b)
00680 goto is_a_corner;
00681 else
00682 goto is_not_a_corner;
00683 else
00684 goto is_not_a_corner;
00685 else
00686 goto is_not_a_corner;
00687 else
00688 if(p[offset6] < c_b)
00689 if(p[offset4] < c_b)
00690 if(p[offset3] < c_b)
00691 goto is_a_corner;
00692 else
00693 if(p[offset10] < c_b)
00694 goto is_a_corner;
00695 else
00696 goto is_not_a_corner;
00697 else
00698 if(p[offset10] < c_b)
00699 if(p[offset11] < c_b)
00700 goto is_a_corner;
00701 else
00702 goto is_not_a_corner;
00703 else
00704 goto is_not_a_corner;
00705 else
00706 goto is_not_a_corner;
00707 else
00708 if(p[offset10] < c_b)
00709 if(p[offset11] < c_b)
00710 if(p[offset1] < c_b)
00711 goto is_a_corner;
00712 else
00713 if(p[offset6] < c_b)
00714 goto is_a_corner;
00715 else
00716 goto is_not_a_corner;
00717 else
00718 goto is_not_a_corner;
00719 else
00720 goto is_not_a_corner;
00721 else
00722 goto is_not_a_corner;
00723 else
00724 goto is_not_a_corner;
00725 else
00726 goto is_not_a_corner;
00727 else
00728 if(p[offset2] < c_b)
00729 if(p[offset9] > cb)
00730 if(p[offset5] > cb)
00731 if(p[offset1] < c_b)
00732 if(p[offset4] < c_b)
00733 if(p[offset10] < c_b)
00734 if(p[offset3] < c_b)
00735 if(p[offset11] < c_b)
00736 goto is_a_corner;
00737 else
00738 goto is_not_a_corner;
00739 else
00740 goto is_not_a_corner;
00741 else
00742 if(p[offset6] > cb)
00743 if(p[offset7] > cb)
00744 if(p[offset8] > cb)
00745 if(p[offset11] > cb)
00746 if(p[offset10] > cb)
00747 goto is_a_corner;
00748 else
00749 goto is_not_a_corner;
00750 else
00751 goto is_not_a_corner;
00752 else
00753 goto is_not_a_corner;
00754 else
00755 goto is_not_a_corner;
00756 else
00757 goto is_not_a_corner;
00758 else
00759 if(p[offset6] > cb)
00760 if(p[offset7] > cb)
00761 if(p[offset8] > cb)
00762 if(p[offset10] > cb)
00763 if(p[offset4] > cb)
00764 goto is_a_corner;
00765 else
00766 if(p[offset11] > cb)
00767 goto is_a_corner;
00768 else
00769 goto is_not_a_corner;
00770 else
00771 if(p[offset3] > cb)
00772 if(p[offset4] > cb)
00773 goto is_a_corner;
00774 else
00775 goto is_not_a_corner;
00776 else
00777 goto is_not_a_corner;
00778 else
00779 goto is_not_a_corner;
00780 else
00781 goto is_not_a_corner;
00782 else
00783 goto is_not_a_corner;
00784 else
00785 if(p[offset6] > cb)
00786 if(p[offset7] > cb)
00787 if(p[offset8] > cb)
00788 if(p[offset4] > cb)
00789 if(p[offset3] > cb)
00790 goto is_a_corner;
00791 else
00792 if(p[offset10] > cb)
00793 goto is_a_corner;
00794 else
00795 goto is_not_a_corner;
00796 else
00797 if(p[offset10] > cb)
00798 if(p[offset11] > cb)
00799 goto is_a_corner;
00800 else
00801 goto is_not_a_corner;
00802 else
00803 goto is_not_a_corner;
00804 else
00805 goto is_not_a_corner;
00806 else
00807 goto is_not_a_corner;
00808 else
00809 goto is_not_a_corner;
00810 else
00811 if(p[offset3] < c_b)
00812 if(p[offset4] < c_b)
00813 if(p[offset5] < c_b)
00814 if(p[offset1] < c_b)
00815 if(p[offset6] < c_b)
00816 goto is_a_corner;
00817 else
00818 if(p[offset11] < c_b)
00819 goto is_a_corner;
00820 else
00821 goto is_not_a_corner;
00822 else
00823 if(p[offset6] < c_b)
00824 if(p[offset7] < c_b)
00825 if(p[offset8] < c_b)
00826 goto is_a_corner;
00827 else
00828 goto is_not_a_corner;
00829 else
00830 goto is_not_a_corner;
00831 else
00832 goto is_not_a_corner;
00833 else
00834 if(p[offset1] < c_b)
00835 if(p[offset10] < c_b)
00836 if(p[offset11] < c_b)
00837 goto is_a_corner;
00838 else
00839 goto is_not_a_corner;
00840 else
00841 goto is_not_a_corner;
00842 else
00843 goto is_not_a_corner;
00844 else
00845 goto is_not_a_corner;
00846 else
00847 goto is_not_a_corner;
00848 else
00849 if(p[offset9] < c_b)
00850 if(p[offset5] < c_b)
00851 if(p[offset1] < c_b)
00852 if(p[offset6] < c_b)
00853 if(p[offset3] < c_b)
00854 if(p[offset4] < c_b)
00855 goto is_a_corner;
00856 else
00857 if(p[offset10] < c_b)
00858 if(p[offset11] < c_b)
00859 goto is_a_corner;
00860 else
00861 goto is_not_a_corner;
00862 else
00863 goto is_not_a_corner;
00864 else
00865 if(p[offset8] < c_b)
00866 if(p[offset10] < c_b)
00867 if(p[offset11] < c_b)
00868 goto is_a_corner;
00869 else
00870 if(p[offset4] < c_b)
00871 if(p[offset7] < c_b)
00872 goto is_a_corner;
00873 else
00874 goto is_not_a_corner;
00875 else
00876 goto is_not_a_corner;
00877 else
00878 goto is_not_a_corner;
00879 else
00880 goto is_not_a_corner;
00881 else
00882 if(p[offset11] < c_b)
00883 if(p[offset3] < c_b)
00884 if(p[offset4] < c_b)
00885 goto is_a_corner;
00886 else
00887 if(p[offset10] < c_b)
00888 goto is_a_corner;
00889 else
00890 goto is_not_a_corner;
00891 else
00892 if(p[offset8] < c_b)
00893 if(p[offset10] < c_b)
00894 goto is_a_corner;
00895 else
00896 goto is_not_a_corner;
00897 else
00898 goto is_not_a_corner;
00899 else
00900 goto is_not_a_corner;
00901 else
00902 if(p[offset6] < c_b)
00903 if(p[offset7] < c_b)
00904 if(p[offset8] < c_b)
00905 if(p[offset4] < c_b)
00906 if(p[offset3] < c_b)
00907 goto is_a_corner;
00908 else
00909 if(p[offset10] < c_b)
00910 goto is_a_corner;
00911 else
00912 goto is_not_a_corner;
00913 else
00914 if(p[offset10] < c_b)
00915 if(p[offset11] < c_b)
00916 goto is_a_corner;
00917 else
00918 goto is_not_a_corner;
00919 else
00920 goto is_not_a_corner;
00921 else
00922 goto is_not_a_corner;
00923 else
00924 goto is_not_a_corner;
00925 else
00926 goto is_not_a_corner;
00927 else
00928 if(p[offset10] < c_b)
00929 if(p[offset11] < c_b)
00930 if(p[offset1] < c_b)
00931 if(p[offset3] < c_b)
00932 goto is_a_corner;
00933 else
00934 if(p[offset8] < c_b)
00935 goto is_a_corner;
00936 else
00937 goto is_not_a_corner;
00938 else
00939 if(p[offset6] < c_b)
00940 if(p[offset7] < c_b)
00941 if(p[offset8] < c_b)
00942 goto is_a_corner;
00943 else
00944 goto is_not_a_corner;
00945 else
00946 goto is_not_a_corner;
00947 else
00948 goto is_not_a_corner;
00949 else
00950 goto is_not_a_corner;
00951 else
00952 goto is_not_a_corner;
00953 else
00954 if(p[offset3] < c_b)
00955 if(p[offset4] < c_b)
00956 if(p[offset5] < c_b)
00957 if(p[offset1] < c_b)
00958 if(p[offset6] < c_b)
00959 goto is_a_corner;
00960 else
00961 if(p[offset11] < c_b)
00962 goto is_a_corner;
00963 else
00964 goto is_not_a_corner;
00965 else
00966 if(p[offset6] < c_b)
00967 if(p[offset7] < c_b)
00968 if(p[offset8] < c_b)
00969 goto is_a_corner;
00970 else
00971 goto is_not_a_corner;
00972 else
00973 goto is_not_a_corner;
00974 else
00975 goto is_not_a_corner;
00976 else
00977 if(p[offset1] < c_b)
00978 if(p[offset10] < c_b)
00979 if(p[offset11] < c_b)
00980 goto is_a_corner;
00981 else
00982 goto is_not_a_corner;
00983 else
00984 goto is_not_a_corner;
00985 else
00986 goto is_not_a_corner;
00987 else
00988 goto is_not_a_corner;
00989 else
00990 goto is_not_a_corner;
00991 else
00992 if(p[offset9] < c_b)
00993 if(p[offset7] < c_b)
00994 if(p[offset8] < c_b)
00995 if(p[offset5] < c_b)
00996 if(p[offset1] < c_b)
00997 if(p[offset10] < c_b)
00998 if(p[offset11] < c_b)
00999 goto is_a_corner;
01000 else
01001 if(p[offset6] < c_b)
01002 if(p[offset4] < c_b)
01003 goto is_a_corner;
01004 else
01005 goto is_not_a_corner;
01006 else
01007 goto is_not_a_corner;
01008 else
01009 if(p[offset6] < c_b)
01010 if(p[offset3] < c_b)
01011 if(p[offset4] < c_b)
01012 goto is_a_corner;
01013 else
01014 goto is_not_a_corner;
01015 else
01016 goto is_not_a_corner;
01017 else
01018 goto is_not_a_corner;
01019 else
01020 if(p[offset6] < c_b)
01021 if(p[offset4] < c_b)
01022 if(p[offset3] < c_b)
01023 goto is_a_corner;
01024 else
01025 if(p[offset10] < c_b)
01026 goto is_a_corner;
01027 else
01028 goto is_not_a_corner;
01029 else
01030 if(p[offset10] < c_b)
01031 if(p[offset11] < c_b)
01032 goto is_a_corner;
01033 else
01034 goto is_not_a_corner;
01035 else
01036 goto is_not_a_corner;
01037 else
01038 goto is_not_a_corner;
01039 else
01040 if(p[offset10] < c_b)
01041 if(p[offset11] < c_b)
01042 if(p[offset1] < c_b)
01043 goto is_a_corner;
01044 else
01045 if(p[offset6] < c_b)
01046 goto is_a_corner;
01047 else
01048 goto is_not_a_corner;
01049 else
01050 goto is_not_a_corner;
01051 else
01052 goto is_not_a_corner;
01053 else
01054 goto is_not_a_corner;
01055 else
01056 goto is_not_a_corner;
01057 else
01058 if(p[offset5] > cb)
01059 if(p[offset9] > cb)
01060 if(p[offset6] > cb)
01061 if(p[offset7] > cb)
01062 if(p[offset8] > cb)
01063 if(p[offset4] > cb)
01064 if(p[offset3] > cb)
01065 goto is_a_corner;
01066 else
01067 if(p[offset10] > cb)
01068 goto is_a_corner;
01069 else
01070 goto is_not_a_corner;
01071 else
01072 if(p[offset10] > cb)
01073 if(p[offset11] > cb)
01074 goto is_a_corner;
01075 else
01076 goto is_not_a_corner;
01077 else
01078 goto is_not_a_corner;
01079 else
01080 goto is_not_a_corner;
01081 else
01082 goto is_not_a_corner;
01083 else
01084 goto is_not_a_corner;
01085 else
01086 goto is_not_a_corner;
01087 else
01088 goto is_not_a_corner;
01089 else
01090 if(p[offset5] > cb)
01091 if(p[offset9] > cb)
01092 if(p[offset6] > cb)
01093 if(p[offset7] > cb)
01094 if(p[offset4] > cb)
01095 if(p[offset3] > cb)
01096 if(p[offset8] > cb)
01097 goto is_a_corner;
01098 else
01099 if(p[offset1] > cb)
01100 if(p[offset2] > cb)
01101 goto is_a_corner;
01102 else
01103 goto is_not_a_corner;
01104 else
01105 goto is_not_a_corner;
01106 else
01107 if(p[offset8] > cb)
01108 if(p[offset10] > cb)
01109 goto is_a_corner;
01110 else
01111 goto is_not_a_corner;
01112 else
01113 goto is_not_a_corner;
01114 else
01115 if(p[offset11] > cb)
01116 if(p[offset8] > cb)
01117 if(p[offset10] > cb)
01118 goto is_a_corner;
01119 else
01120 goto is_not_a_corner;
01121 else
01122 goto is_not_a_corner;
01123 else
01124 goto is_not_a_corner;
01125 else
01126 goto is_not_a_corner;
01127 else
01128 goto is_not_a_corner;
01129 else
01130 if(p[offset2] > cb)
01131 if(p[offset3] > cb)
01132 if(p[offset4] > cb)
01133 if(p[offset7] > cb)
01134 if(p[offset1] > cb)
01135 if(p[offset6] > cb)
01136 goto is_a_corner;
01137 else
01138 goto is_not_a_corner;
01139 else
01140 if(p[offset6] > cb)
01141 if(p[offset8] > cb)
01142 goto is_a_corner;
01143 else
01144 goto is_not_a_corner;
01145 else
01146 goto is_not_a_corner;
01147 else
01148 goto is_not_a_corner;
01149 else
01150 goto is_not_a_corner;
01151 else
01152 goto is_not_a_corner;
01153 else
01154 goto is_not_a_corner;
01155 else
01156 if(p[offset5] < c_b)
01157 if(p[offset9] < c_b)
01158 if(p[offset6] < c_b)
01159 if(p[offset7] < c_b)
01160 if(p[offset4] < c_b)
01161 if(p[offset3] < c_b)
01162 if(p[offset8] < c_b)
01163 goto is_a_corner;
01164 else
01165 if(p[offset1] < c_b)
01166 if(p[offset2] < c_b)
01167 goto is_a_corner;
01168 else
01169 goto is_not_a_corner;
01170 else
01171 goto is_not_a_corner;
01172 else
01173 if(p[offset8] < c_b)
01174 if(p[offset10] < c_b)
01175 goto is_a_corner;
01176 else
01177 goto is_not_a_corner;
01178 else
01179 goto is_not_a_corner;
01180 else
01181 if(p[offset11] < c_b)
01182 if(p[offset8] < c_b)
01183 if(p[offset10] < c_b)
01184 goto is_a_corner;
01185 else
01186 goto is_not_a_corner;
01187 else
01188 goto is_not_a_corner;
01189 else
01190 goto is_not_a_corner;
01191 else
01192 goto is_not_a_corner;
01193 else
01194 goto is_not_a_corner;
01195 else
01196 if(p[offset2] < c_b)
01197 if(p[offset3] < c_b)
01198 if(p[offset4] < c_b)
01199 if(p[offset7] < c_b)
01200 if(p[offset1] < c_b)
01201 if(p[offset6] < c_b)
01202 goto is_a_corner;
01203 else
01204 goto is_not_a_corner;
01205 else
01206 if(p[offset6] < c_b)
01207 if(p[offset8] < c_b)
01208 goto is_a_corner;
01209 else
01210 goto is_not_a_corner;
01211 else
01212 goto is_not_a_corner;
01213 else
01214 goto is_not_a_corner;
01215 else
01216 goto is_not_a_corner;
01217 else
01218 goto is_not_a_corner;
01219 else
01220 goto is_not_a_corner;
01221 else
01222 goto is_not_a_corner;
01223
01224 is_a_corner:
01225 bmin=b_test;
01226 goto end;
01227
01228 is_not_a_corner:
01229 bmax=b_test;
01230 goto end;
01231
01232 end:
01233
01234 if(bmin == bmax - 1 || bmin == bmax)
01235 return bmin;
01236 b_test = (bmin + bmax) / 2;
01237 }
01238 }
01239