function(x, z, vario, indep = F, l.threshold = 0.05, u.threshold = 0.95, thick.param = 0, view.range = NA, jitter = 0, twiddle = T, sidedness = "both", censoring = "ignore") { # # DESCRIPTION # A diagnostic for two-dimensional variograms. # It allows one to visually compare pairs of locations and determine # if the empirical variogram is much different from the fitted variogram. # # REQUIRED ARGUMENTS # x An n row by 2 column matrix containing # the locations of n cases. # z A column vector of length n containing # the measurements at each location. # vario A function yielding a variogram, it # must be a function of two arguments, # x1 and x2. # # OPTIONAL ARGUMENTS # indep If indep=T, the variogram is assumed to be # the constant variogram with sill=2*var(z) # l.threshold # u.threshold # thick.param Controls the thickness of lines. If # thick.param=0, all lines have the same # thickness. Otherwise extremely large # differences get thicker lines. # view.range Locations farther apart than this are # not visualized. # jitter Jitter sets the amount of random # jittering applied to all points. # sidedness "both" shows all segments, "low" gives low ones, # "high" gives high ones. # twiddle If TRUE, then you can modify the picture iteratively. # censoring This effects the segments connecting measurements # that are exactly equal (usually due to censoring of # the data). If set to "ignore", displayed as though # not censored. If set to "remove", do not display. # If set to "mark", a third color will be used. # # SIDE EFFECTS # A diagnostic plot is printed on the screen. # # CHECK INPUT # n <- nrow(x) if(n != length(z)) stop(warning = "Length of x not equal to length of z") if(is.na(view.range)) view.range <- sqrt((max(x[, 1]) - min(x[, 1]))^2 + (max(x[, 2]) - min(x[, 2]))^2) if(!is.logical(twiddle)) stop(warning = "Twiddle should be a logical") z <- as.vector(z) if(jitter < 0) stop(warning = "Jitter cannot be negative") if(l.threshold < 0) stop(warning = "Threshold cannot be negative") if(u.threshold < 0) stop(warning = "Threshold cannot be negative") if(thick.param < 0) stop(warning = "Thick.param cannot be negative") if(!exists(".Device")) motif() end.it <- T # # CREATE VARIABLES # num.pairs <- (n * (n - 1))/2 hold <- matrix(nrow = num.pairs, ncol = 3, rep(NA, num.pairs * 3)) options(gui = "motif") if(twiddle) { if(!dialog.running()) dialog.start() twiddle.dialog <- dialog.create(values = list("Lower Threshold" = 25, "Upper Threshold" = 975, Range = view.range, Jitter = 0, thick.param = 0, "Pick side to display" = c( "both", "low", "high"), censoring = c("ignore", "mark", "remove"), "Exit?" = F), widgets = c("slider", "slider", "textfield", "textfield", "slider", "radiobox", "radiobox"), options = c("min 0 max 250 scale 3", "min 750 max 1000 scale 3", "", "", "min 0 max 10 scale 1", "", ""), title = "Twiddle") } # # CREATE THE EMPIRICAL VARIOGAM AND CORRESPONDING MEASUREMENTS # k <- 0 sill <- 2 * var(z) for(i in 1:(n - 1)) for(j in (i + 1):n) { k <- k + 1 hold[k, 1] <- (z[i] - z[j])^2 if(indep == F) hold[k, 2] <- vario(x[i, 1] - x[j, 1], x[i, 2] - x[j, 2]) else hold[k, 2] <- sill hold[k, 3] <- sqrt((x[i, 1] - x[j, 1])^2 + (x[i, 2] - x[ j, 2])^2) } # # NOW PLOT THE GRAPH # repeat { if(jitter > 0) jm <- cbind(rnorm(n, sd = jitter), rnorm(n, sd = jitter )) else if(jitter <= 0) jm <- matrix(nrow = n, ncol = 2, rep(0, 2 * n)) plot(x + jm) k <- 0 lower <- qchisq(l.threshold, 1) upper <- qchisq(u.threshold, 1) for(i in 1:(n - 1)) for(j in (i + 1):n) { k <- k + 1 ratio <- hold[k, 1]/hold[k, 2] if(hold[k, 3] < view.range) { if((ratio < lower) && (sidedness != "high")) { print.segment <- T coloring <- 2 if(ratio == 0) { # <<<>>> if(thick.param == 0) thickness <- 1 else thickness <- 10 if(censoring == "ignore") coloring <- 2 else if(censoring == "mark") coloring <- 3 else print.segment <- F } else thickness <- 1 + min(thick.param * ( lower/ratio), 10) if(print.segment) segments(x[i, 1] + jm[i, 1], x[i, 2] + jm[ i, 2], x[j, 1] + jm[j, 1], x[j, 2] + jm[ j, 2], lwd = thickness, col = coloring) } else if((ratio > upper) && (sidedness != "low")) { thickness <- 1 + min(thick.param * (ratio/ upper), 10) segments(x[i, 1] + jm[i, 1], x[i, 2] + jm[i, 2], x[j, 1] + jm[j, 1], x[j, 2] + jm[j, 2 ], lwd = thickness, col = 1) } } } if(twiddle) { answers <- dialog.display(twiddle.dialog) if(answers$button == "OK") { view.range <- answers$values$Range l.threshold <- answers$values$"Lower Threshold"/ 1000 u.threshold <- answers$values$"Upper Threshold"/ 1000 thick.param <- answers$values$thick.param/10 sidedness <- answers$values$ "Pick side to display" jitter <- answers$values$Jitter/10 censoring <- answers$values$censoring end.it <- answers$values$"Exit?" } } if(end.it || (!twiddle)) break } # # # CLEAN-UP # if(twiddle) { dialog.destroy(twiddle.dialog) dialog.off() } } --------------------------------------------------------------------- 3.07704258228151 2.84597411033848 2.24815709686641 1.45806787699679 1.25588302053119 1.16018076438403 1.46003869202013 1.05286517515267 1.00707413488015 1.10651462775884 1.29800426841103 -0.536141021995611 0.288599728071886 0.355564974503932 -0.142283879309146 -0.0534015740229116 -0.487955927457897 0.100077138764078 1.26700756213183 1.28034117392779 0.0724509820784069 0.0734520876356754 0.234497526770017 -0.444130161722551 0.123996423188087 0.666159068956542 1.22236190779521 1.34867364424577 -0.0548396221467581 0.05438734065383 0.222034881541328 0.126696047705911 -0.779217920111388 -0.967627172702515 -0.773730737804859 -0.24912703135293 -0.13174400501119 -0.203401279597034 -0.885955964567209 -1.59212014832675 0.292598302040807 -0.504824881403744 0.380694017874313 0.0833459105600727 0.799382761198186 0.722334165809676 0.0811540776590844 0.496679898479569 -0.4184559809487 -0.421750886708078 0.125953262877073 -0.0513423775165128 0.711407521464505 1.63897360576243 0.248521025262639 1.9520236444123 0.695614842862445 0.713703863001852 0.330500302489503 0.297605291254869 -0.0726627442129663 0.172616655202235 0.0525062819344542 -0.511854034058288 -0.0625708176520323 -0.518526993080612 -0.41648486687101 -1.52124415977179 0.133154199952579 0.294243758015537 1.36902792947819 1.92092497827641 -0.649232428691732 -0.882389871498825 -0.388044030404733 -0.0771737212625275 -1.03132430436687 -1.06191427472634 -1.30283411002448 -0.111884910001463 1.00693310546237 1.51117359670649 -0.481356550273596 0.760704422897028 0.619481520383747 1.25340151172766 0.955975719495489 0.173595158531095 1.06687325395966 0.540316107921146 -0.328245476356014 -0.295123973221634 0.434602719163986 0.190622219465962 -1.07725692920783 -2.32287073911992 0.280472148780945 0.554584545684751 0.770656314227728 -0.0350430273621186 1.02942458264877 1.31323645051295 0.540769333053482 1.46856424518686 -0.180777990246287 0.309705807912854 0.155780722332545 0.18082164257115 -0.628051045321932 -1.0839588160344 -0.725742368685346 -0.203615607675032 -0.495854820947255 -0.634725769668931 -0.0804676192562915 0.852174958885859 -0.28378332174666 -0.145417872218669 -0.25004276387523 0.711421984437518 0.18881686628562 0.184099695393767 0.467481269812064 -0.434025499854049 -0.729873403493712 -0.806565062640068 -0.479929962197748 -0.570644944682099 -1.57374708295897 -1.72006194761497 -0.878230264390964 0.150489327466137 -0.599194278139333 -0.941947179997172 -1.47711994113506 0.25862996481311 0.103344259021992 0.114298328551865 -0.896781121817538 1.28739527579427 0.00674666652302205 -0.192447933739259 1.18571519430856 1.10244020600876 -0.566697094633222 0.378186713195142 0.429760847539705 0.0885270303892896 0.147970218708065 -0.0195960549249988 0.124129203356746 -0.421399083626555 -1.7900331958064 -1.03219542114434 -1.15557666140164 -0.183961908041396 -0.501254451633621 -0.472386495686118 -0.576133466293583 0.990498008929798 --------------------------------------------------------------------- function(x, z, vario, indep = F, l.threshold = 0.05, u.threshold = 0.95, thick.param = 0, view.range = NA, jitter = 0, twiddle = T, sidedness = "both", censoring = "ignore") { # # DESCRIPTION # A diagnostic for two-dimensional variograms. # It allows one to visually compare pairs of locations and determine # if the empirical variogram is much different from the fitted variogram. # # REQUIRED ARGUMENTS # x An n row by 2 column matrix containing # the locations of n cases. # z A column vector of length n containing # the measurements at each location. # vario A function yielding a variogram, it # must be a function of two arguments, # x1 and x2. # # OPTIONAL ARGUMENTS # indep If indep=T, the variogram is assumed to be # the constant variogram with sill=2*var(z) # l.threshold # u.threshold # thick.param Controls the thickness of lines. If # thick.param=0, all lines have the same # thickness. Otherwise extremely large # differences get thicker lines. # view.range Locations farther apart than this are # not visualized. # jitter Jitter sets the amount of random # jittering applied to all points. # sidedness "both" shows all segments, "low" gives low ones, # "high" gives high ones. # twiddle If TRUE, then you can modify the picture iteratively. # censoring This effects the segments connecting measurements # that are exactly equal (usually due to censoring of # the data). If set to "ignore", displayed as though # not censored. If set to "remove", do not display. # If set to "mark", a third color will be used. # # SIDE EFFECTS # A diagnostic plot is printed on the screen. # # CHECK INPUT # n <- nrow(x) if(n != length(z)) stop(warning = "Length of x not equal to length of z") if(is.na(view.range)) view.range <- sqrt((max(x[, 1]) - min(x[, 1]))^2 + (max(x[, 2]) - min(x[, 2]))^2) if(!is.logical(twiddle)) stop(warning = "Twiddle should be a logical") z <- as.vector(z) if(jitter < 0) stop(warning = "Jitter cannot be negative") if(l.threshold < 0) stop(warning = "Threshold cannot be negative") if(u.threshold < 0) stop(warning = "Threshold cannot be negative") if(thick.param < 0) stop(warning = "Thick.param cannot be negative") if(!exists(".Device")) motif() end.it <- T # # CREATE VARIABLES # num.pairs <- (n * (n - 1))/2 hold <- matrix(nrow = num.pairs, ncol = 3, rep(NA, num.pairs * 3)) options(gui = "motif") if(twiddle) { if(!dialog.running()) dialog.start() twiddle.dialog <- dialog.create(values = list("Lower Threshold" = 25, "Upper Threshold" = 975, Range = view.range, Jitter = 0, thick.param = 0, "Pick side to display" = c( "both", "low", "high"), censoring = c("ignore", "mark", "remove"), "Exit?" = F), widgets = c("slider", "slider", "textfield", "textfield", "slider", "radiobox", "radiobox"), options = c("min 0 max 250 scale 3", "min 750 max 1000 scale 3", "", "", "min 0 max 10 scale 1", "", ""), title = "Twiddle") } # # CREATE THE EMPIRICAL VARIOGAM AND CORRESPONDING MEASUREMENTS # k <- 0 sill <- 2 * var(z) for(i in 1:(n - 1)) for(j in (i + 1):n) { k <- k + 1 hold[k, 1] <- (z[i] - z[j])^2 if(indep == F) hold[k, 2] <- vario(x[i, 1] - x[j, 1], x[i, 2] - x[j, 2]) else hold[k, 2] <- sill hold[k, 3] <- sqrt((x[i, 1] - x[j, 1])^2 + (x[i, 2] - x[ j, 2])^2) } # # NOW PLOT THE GRAPH # repeat { if(jitter > 0) jm <- cbind(rnorm(n, sd = jitter), rnorm(n, sd = jitter )) else if(jitter <= 0) jm <- matrix(nrow = n, ncol = 2, rep(0, 2 * n)) plot(x + jm) k <- 0 lower <- qchisq(l.threshold, 1) upper <- qchisq(u.threshold, 1) for(i in 1:(n - 1)) for(j in (i + 1):n) { k <- k + 1 ratio <- hold[k, 1]/hold[k, 2] if(hold[k, 3] < view.range) { if((ratio < lower) && (sidedness != "high")) { print.segment <- T coloring <- 2 if(ratio == 0) { # <<<>>> if(thick.param == 0) thickness <- 1 else thickness <- 10 if(censoring == "ignore") coloring <- 2 else if(censoring == "mark") coloring <- 3 else print.segment <- F } else thickness <- 1 + min(thick.param * ( lower/ratio), 10) if(print.segment) segments(x[i, 1] + jm[i, 1], x[i, 2] + jm[ i, 2], x[j, 1] + jm[j, 1], x[j, 2] + jm[ j, 2], lwd = thickness, col = coloring) } else if((ratio > upper) && (sidedness != "low")) { thickness <- 1 + min(thick.param * (ratio/ upper), 10) segments(x[i, 1] + jm[i, 1], x[i, 2] + jm[i, 2], x[j, 1] + jm[j, 1], x[j, 2] + jm[j, 2 ], lwd = thickness, col = 1) } } } if(twiddle) { answers <- dialog.display(twiddle.dialog) if(answers$button == "OK") { view.range <- answers$values$Range l.threshold <- answers$values$"Lower Threshold"/ 1000 u.threshold <- answers$values$"Upper Threshold"/ 1000 thick.param <- answers$values$thick.param/10 sidedness <- answers$values$ "Pick side to display" jitter <- answers$values$Jitter/10 censoring <- answers$values$censoring end.it <- answers$values$"Exit?" } } if(end.it || (!twiddle)) break } # # # CLEAN-UP # if(twiddle) { dialog.destroy(twiddle.dialog) dialog.off() } } --------------------------------------------------------------------- 2.67964822334395 2.37224723031578 2.19416761855499 1.80667899182578 1.38734601412285 1.44369855716274 1.81368796736174 1.39828898770831 1.15239203278384 0.622925441304359 0.34127671458451 0.0542348713734354 -1.74905561534158 -1.63710282689414 -1.12476153609236 -0.770144717892861 -0.885166019787511 -1.0048617741746 -1.31084027354936 -1.4667369260736 -0.665156764753038 -0.261798756649913 -0.156917716311891 0.0331326431184662 -0.329860089306792 -0.214288827431684 -0.277711116054593 -1.04960927957241 -0.00510632504392119 -0.334137028097941 -0.0942922292854038 0.134561156892067 0.969604219804103 1.3355512637404 1.5095452696762 2.19179723560093 1.58442933265486 1.67336426045161 1.69693083080902 1.73083676163811 0.281487640484306 -0.122207324118243 0.290779010073753 -0.114631786783488 -0.68189840400219 -0.306898582279799 -0.0490239496191895 -0.0793762827126329 -0.182715897390666 -0.554247223412617 -0.575937555816224 -0.912837403152162 0.191548630513919 -0.155069444255558 -0.226478281930288 0.309209542607641 0.346764987132368 0.414447827096379 0.274781079836772 -0.143431529901734 -0.915016595138349 -1.06210405442382 -1.44189337785814 -0.795980556773543 2.29991783642991 2.48882755251051 2.35469529092561 1.66602530085034 1.73238993082876 1.7814439893653 1.36500095124065 1.51773968058548 0.238904930352693 0.36679868187561 -0.194677518661578 0.41777457714912 -0.174165318119791 -0.289786756055575 -0.546467895404059 -0.564497261041969 -1.21684330389853 -1.19911596550596 -0.390816752993369 -0.409153399584193 -0.624727373970438 -0.044209582023192 -0.146739963159862 -0.803915130326023 -0.816147340513526 -0.800747296636138 -0.289645700427176 0.388083567090228 -1.60482662177265 -1.40903404372621 -1.30218537267274 -0.908196870483269 1.8507602359791 1.63040792678924 1.33022405926853 1.59165183714672 1.99065898685871 2.02021997965638 2.22150118162102 2.75692159351239 2.91942319489207 2.3719581217167 1.86845531159255 1.29766989266879 0.0756522729464406 0.182633855080538 0.209850046725209 -0.0595591250313534 -0.700023742808752 -0.861005289292534 -1.00059211422476 -1.38020124450103 0.232022015776495 0.0407882964853604 -0.25773897503619 -1.45875340878291 0.810437240081564 0.724464885437553 0.749946842131908 0.892338128546071 -0.526022054844493 -0.54416060755963 -0.349708105341153 0.206468257308468 0.496180335403603 0.755869632567698 0.945016247212243 1.24357452354935 2.31260743609284 2.41568470333171 1.88081674498339 1.61972403699353 2.92807752009894 2.56134723129998 3.02565395811401 2.95582220900922 1.35986406561186 1.26317246752129 1.74100571158056 1.30532251890456 1.11782550178403 0.718887896227339 0.0675496001382011 0.0935664188784462 -0.37971750358207 -0.348539660713213 -0.414923226188788 -0.0320700517816757 0.273970690356573 0.669928735319896 0.334243975818135 0.581628469743125 -0.719658467795428 -1.05435962189163 -1.28172747246624 -2.37364263069321 --------------------------------------------------------------------- -0.581849574017498 -0.205311300126629 -0.135287254318179 -0.109651379318432 -0.634995992579145 -0.568041827983586 -0.153389297104726 0.0632527952121999 0.239632746619098 0.122080270688258 -0.216054525980677 0.237947440395905 -0.841157855420233 -0.802596254851726 -0.907960580125434 0.327144082310783 0.32148245250714 0.793001427942302 1.08657247659682 0.275960725465804 0.361782244660798 0.212975489032612 -0.343959768743113 -0.839473137481366 0.568286591070109 0.622105415731237 0.62222578068515 0.863057838074208 -0.0975803201708301 -0.109887013556307 0.0692353937143889 -0.0605065236562584 -0.229756999980802 -0.0848284609443218 0.20493026601024 -0.524349573569817 -1.44798947117711 -1.25814956338554 -1.08690353864744 -0.212577912777301 -0.65255384003429 -0.600754109260606 -1.06000592273807 -1.62309914102848 -1.54332565340329 -1.52427134179262 -1.76792047079579 -2.04021417042867 -1.34022257511887 -1.39310309720204 -0.589225230532741 -0.624641912852846 -1.13479128886467 -1.10378227057691 -0.956534928676374 -1.08247570962434 -0.675862443199811 -0.56014040744611 -0.449265778812037 0.112611330594331 -0.579157686050401 -0.525453170926489 -1.39921834747647 -0.799127902037682 -1.81658410265659 -1.74304540732695 -1.10506916370818 -1.39969398438071 -1.13412377354811 -1.10317870396028 -1.17744522438164 -1.30854550913312 -0.850596595722146 -0.981820284062699 -1.01014555086592 -1.72263661283163 -0.201874750363056 -0.252193607915906 -0.596512454035336 -1.16583704743036 -1.23675088242976 -1.39129782769379 -1.44580843473911 -1.79305145001153 1.60725052010596 -2.16654628429768 -1.47988150607207 -1.0643138573195 -1.33503355914171 -1.53525254310015 -1.68623367034847 -0.783888570695903 -0.823713886884021 -0.770072014777763 -1.6799010359456 -1.5260013373808 -0.551033040645751 -0.700909112496819 -0.738363487389766 -1.27682902131323 -0.156529996845125 -0.17112449063149 0.357423857201254 -0.733682466160295 0.447657085013849 0.281044030888055 0.0146647212379695 1.02634918045244 0.670199674805105 0.299577362666343 0.424028212775294 -0.376293476354313 -1.52907868538111 -1.59513477712485 -1.35912791406298 -1.23830825991265 -1.66044841222704 -1.67648240029981 -2.04205692902148 -1.95093784531236 -0.857238794721481 -1.13501358139329 -1.67246212945428 -1.55982241364224 -1.83648828540417 -1.86308803875515 -1.88256677429169 -1.07829606090966 -0.877365155840922 -0.723650537883073 -0.71763011143685 -0.52581147298704 0.39545657607502 0.581399748272233 0.434787358254466 0.542582301657845 1.59652913884208 1.18512356351585 0.817230177032996 1.00531529198737 1.41641835576253 1.38653039758969 1.50629613417466 0.684572832367055 1.39461612760669 1.28572526097837 1.02694732515399 1.60725052010596 -0.911609245333143 -0.418314662291785 0.0167758548750391 0.124195982930082 -0.302206815761476 -0.164807754941128 -0.0138058646892956 -0.308731540308343 -0.659427686503545 -0.574318939032177 -0.900549333235224 -0.96484754830305 --------------------------------------------------------------------- 0.0000 11.0000 0.39633 0.0000 11.1000 0.40513 0.0000 11.4000 1.95802 0.0000 12.0000 0.95409 2.5000 11.0000 0.38510 2.5000 11.1000 0.42734 2.5000 11.4000 0.25393 2.5000 12.0000 0.34021 5.0000 11.0000 0.24730 5.0707 10.9293 0.61015 5.2828 10.7172 0.60763 5.7071 10.2929 0.43720 7.5000 11.0000 0.03899 7.4000 11.0000 0.22407 7.1000 11.0000 0.76324 6.5000 11.0000 0.41527 10.0000 11.0000 0.08384 10.0000 10.9000 0.00000 10.0000 10.6000 0.00000 10.0000 10.0000 0.50391 12.5000 11.0000 0.00000 12.4293 11.0000 0.07070 12.2172 11.0000 0.28280 11.7929 11.0000 0.70710 15.0000 11.0000 0.00000 14.9000 11.0000 0.20160 14.6000 11.0000 0.07279 14.0000 11.0000 0.50528 17.5000 11.0000 0.06980 17.6000 11.0000 0.17119 17.9000 11.0000 0.16672 18.5000 11.0000 0.03799 1.2500 8.5000 0.09939 1.1793 8.5707 0.16541 0.9672 8.7828 0.36578 0.5429 9.2071 0.54800 3.7500 8.5000 0.16367 3.6500 8.5000 0.12950 3.3500 8.5000 0.17705 2.7500 8.5000 0.15225 6.2500 8.5000 0.11026 6.2500 8.4000 0.02252 6.2500 8.1000 0.07106 6.2500 7.5000 0.09773 8.7500 8.5000 0.02052 8.6500 8.5000 0.09128 8.3500 8.5000 0.41062 7.7500 8.5000 0.03866 11.2500 8.5000 0.07545 11.1500 8.5000 0.00000 10.8500 8.5000 0.00000 10.2500 8.5000 0.29584 13.7500 8.5000 0.26540 13.8207 8.4293 0.00128 14.0328 8.2172 0.00000 14.4571 7.7929 0.00879 16.2500 8.5000 0.02283 16.1500 8.5000 0.00000 15.8500 8.5000 0.00000 15.2500 8.5000 0.17479 18.7500 8.5000 0.10901 18.8500 8.5000 0.13220 19.1500 8.5000 0.29300 19.7500 8.5000 0.19905 0.0000 6.0000 0.25555 0.0000 5.9000 0.10318 0.0000 5.6000 0.39672 0.0000 5.0000 0.00000 2.5000 6.0000 0.23032 2.5000 6.1000 0.42148 2.5000 6.4000 0.73546 2.5000 7.0000 0.32594 5.0000 6.0000 0.00000 5.0000 6.1000 0.07630 5.0000 6.4000 0.08335 5.0000 7.0000 0.16904 7.5000 6.0000 0.00000 7.5707 6.0707 0.00000 7.7828 6.2828 0.00000 8.2071 6.7071 0.55043 10.0000 6.0000 0.04765 9.9293 6.0707 0.14468 9.7172 6.2828 0.00000 9.2929 6.7071 0.04685 12.5000 6.0000 0.00000 12.5707 5.9293 0.12223 12.7828 5.7172 0.00000 13.2071 5.2929 0.00000 15.0000 6.0000 0.02028 14.9293 6.0707 0.09177 14.7172 6.2828 0.00000 14.2929 6.7071 0.83280 17.5000 6.0000 0.06730 17.5707 6.0707 0.35389 17.7828 6.2828 0.00050 18.2071 6.7071 0.18604 1.2500 3.5000 0.27819 1.1500 3.5000 0.20827 0.8500 3.5000 0.39735 0.2500 3.5000 0.31703 3.7500 3.5000 0.04765 3.7500 3.4000 0.00000 3.7500 3.1000 0.13195 3.7500 2.5000 0.09672 6.2500 3.5000 0.00000 6.3207 3.5707 0.00000 6.5328 3.7828 0.01624 6.9571 4.2071 0.00000 8.7500 3.5000 0.00000 8.8207 3.5707 0.00000 9.0328 3.7828 0.05166 9.4571 4.2071 0.02647 11.2500 3.5000 0.05232 11.3207 3.4293 0.00000 11.5328 3.2172 0.00000 11.9571 2.7929 0.00000 13.7500 3.5000 0.00000 13.6793 3.4293 0.00000 13.4672 3.2172 0.00000 13.0429 2.7929 0.45488 16.2500 3.5000 0.22876 16.1500 3.5000 0.00000 15.8500 3.5000 0.00000 15.2500 3.5000 0.14439 18.7500 3.5000 0.06579 18.8500 3.5000 0.00000 19.1500 3.5000 0.19887 19.7500 3.5000 0.12399 0.0000 1.0000 0.04952 0.0000 0.9000 0.08706 0.0000 0.6000 0.10693 0.0000 0.0000 0.12114 2.5000 1.0000 0.07320 2.5707 0.9293 0.18205 2.7828 0.7172 0.28752 3.2071 0.2929 0.30541 5.0000 1.0000 0.02631 4.9293 1.0707 0.10830 4.7172 1.2828 0.04743 4.2929 1.7071 0.35662 7.5000 1.0000 0.00000 7.5707 1.0707 0.26938 7.7828 1.2828 0.02957 8.2071 1.7071 0.14362 10.0000 1.0000 0.12575 10.0707 0.9293 0.07627 10.2828 0.7172 0.04150 10.7071 0.2929 0.08620 12.5000 1.0000 0.28675 12.5707 0.9293 0.27276 12.7828 0.7172 0.29674 13.2071 0.2929 0.13609 15.0000 1.0000 0.09623 14.9293 1.0707 0.00000 14.7172 1.2828 0.06140 14.2929 1.7071 0.45611 17.5000 1.0000 0.21796 17.5000 0.9000 0.18681 17.5000 0.6000 0.97102 17.5000 0.0000 0.37940