CINXE.COM
Generating Equidistant Points on Unit Disk
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en-US"><head profile="http://gmpg.org/xfn/11"><style media="all">/*<![CDATA[*/html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:0 0}body{background:#fff;line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}:focus{outline:0}ins{text-decoration:none}del{text-decoration:line-through}table{border-collapse:collapse;border-spacing:0}a img{border:none}body,input,textarea{color:#000;font:12px Arial,sans-serif;line-height:18px}h1,h2,h3,h4,h5,h6{font-weight:400;clear:both}p{margin-bottom:18px;text-align:justify}ul{margin:0 0 18px 2.5em}ol{margin:0 0 18px 2.5em}ul{list-style:disc}ol{list-style-type:decimal}ol ol{list-style:upper-alpha}ol ol ol{list-style:lower-roman}ol ol ol ol{list-style:lower-alpha}ul ul,ol ol,ul ol,ol ul{margin-bottom:0}li{margin-bottom:0}dl{margin:0 1.5em}dt{font-weight:700}dd{margin-bottom:18px}strong{font-weight:700}cite,em,i{font-style:italic}blockquote{margin:0 3em}blockquote em,blockquote i,blockquote cite{font-style:normal}pre{font-family:"Courier 10 Pitch",Courier,monospace;font-size:15px;line-height:21px;margin-bottom:18px;background-color:#f7f7f7;padding:1em}code{font:11px Monaco,monospace}abbr,acronym{border-bottom:1px dotted #333;cursor:help}ins{text-decoration:none}sup,sub{height:0;line-height:1;vertical-align:baseline;_vertical-align:bottom;position:relative}sup{bottom:1ex}sub{top:.5ex}blockquote.left{float:left;margin-left:0;margin-right:20px;text-align:right;width:33%}blockquote.right{float:right;margin-left:20px;margin-right:0;text-align:left;width:33%}body{min-width:960px}#header{position:relative}#branding{width:940px;margin:0 auto}#access{position:relative;overflow:hidden}.menu{width:940px;margin:0 auto}#main{width:960px;margin:0 auto;overflow:hidden;position:relative}#content{margin:0 0 0 10px;overflow:hidden}.main-aside{width:240px;float:right;position:relative;right:10px}#secondary{clear:right}#footer{clear:both}#subsidiary{width:940px;margin:0 auto;overflow:hidden}#subsidiary .aside{width:300px;float:left;margin:0 20px 0 0}#subsidiary #third{margin:0}#siteinfo{clear:both;width:940px;margin:0 auto}.entry-content img{margin:0 0 18px}.alignleft,img.alignleft{float:left;margin-right:20px}.alignright,img.alignright{display:block;float:right;margin-left:20px}.aligncenter,img.aligncenter{margin-left:auto;margin-right:auto;display:block;clear:both}.wp-caption{text-align:center;margin-bottom:18px}.wp-caption img{margin:0;padding:0;border:0 none}.wp-caption p.wp-caption-text{margin:0;padding:5px}.gallery img{margin:0}.wp-smiley{max-height:12px;margin:0 !important}body,input,textarea{font:17px Georgia,serif;line-height:22px}p,ul,ol,dd,pre{margin-bottom:22px}pre,code{font:16px Monaco,monospace;line-height:22px}blockquote{color:#666;font-style:italic}table{font-size:13px;line-height:18px;margin:0 0 22px;text-align:left}caption{text-align:left}tr{border-bottom:1px solid #ccc}th,td{padding:.7em .3em}a:link{color:#004b91}a:visited{color:#743399}a:active,a:hover{color:#ff4b33}#header{z-index:2}#branding{padding:88px 0 44px}#blog-title{font-size:36px;font-weight:700;line-height:40px}#blog-title a{color:#000;text-decoration:none}#blog-title a:active,#blog-title a:hover{color:#ff4b33}#blog-description{color:#666;font-size:13px;font-style:italic}.skip-link{display:none}#access{border-bottom:1px solid #ccc;height:32px;font-size:13px;overflow:visible;z-index:100}.sf-menu,.sf-menu *{margin:0;padding:0;list-style:none}.sf-menu{line-height:1.0}.sf-menu ul{position:absolute;top:-999em;width:10em}.sf-menu ul li{width:100%}.sf-menu li:hover{visibility:inherit}.sf-menu li{float:left;position:relative}.sf-menu a{display:block;position:relative}.sf-menu li:hover ul,.sf-menu li.sfHover ul{left:0;top:2.5em;z-index:99}ul.sf-menu li:hover li ul,ul.sf-menu li.sfHover li ul{top:-999em}ul.sf-menu li li:hover ul,ul.sf-menu li li.sfHover ul{left:10em;top:0}ul.sf-menu li li:hover li ul,ul.sf-menu li li.sfHover li ul{top:-999em}ul.sf-menu li li li:hover ul,ul.sf-menu li li li.sfHover ul{left:10em;top:0}.sf-menu{border-right:1px solid #ccc;float:left}.sf-menu a{border-left:1px solid #ccc;border-top:1px solid #ccc;border-bottom:1px solid #ccc;padding:9px 13px;text-decoration:none}.sf-menu .current_page_item a,.sf-menu .current_page_ancestor a,.sf-menu .current_page_parent a{border-bottom-color:#fff}.sf-menu a,.sf-menu a:visited{color:#666}.sf-menu li{background:#fff}.sf-menu li li{background:#fff}.sf-menu li li li{background:#9aaedb}.sf-menu li:hover,.sf-menu li.sfHover,.sf-menu a:focus,.sf-menu a:hover,.sf-menu a:active{background:#fafafa;outline:0;border-bottom-color:#ccc}.sf-menu ul{border-right:1px solid #ccc;border-bottom:1px solid #ccc}.sf-menu li:hover ul,.sf-menu li.sfHover ul{top:32px}.sf-menu ul ul{margin-top:0}.sf-menu ul a{background:#fafafa;border-bottom:none}.sf-menu ul a:hover{color:#ff4b33}#main{clear:both;padding:66px 0 22px}.page-title{font-size:13px;line-height:18px;padding:0 0 44px}.attachment .page-title{font-style:italic}.page-title a{color:#666;text-decoration:none}.page-title a:active,.page-title a:hover{color:#ff4b33}.page-title span{font-style:italic}.page-title .meta-nav{font-style:normal}.hentry{padding:0 0 22px}.single .hentry{padding:0}.home #content .sticky{border:1px solid #ccc;margin:0 0 66px;padding:22px 20px 0}.entry-title{font-size:28px;font-weight:700;line-height:28px;padding:0 0 7px}.entry-title a{color:#000;text-decoration:none}.entry-title a:active,.entry-title a:hover{color:#ff4b33}.entry-meta{color:#666;font-size:13px;font-style:italic;line-height:18px}.entry-meta .n{font-size:11px;font-style:normal;letter-spacing:.05em;text-transform:uppercase}.entry-meta a{color:#666;text-decoration:none}.entry-meta a:active,.entry-meta a:hover{color:#ff4b33}.entry-meta abbr{border:none;cursor:text;font-size:11px;font-style:normal;letter-spacing:.05em;text-transform:uppercase}.entry-content{padding:22px 0 0}.entry-content h1,.entry-content h2{font-size:19px;font-weight:700;padding:28px 0 14px}.entry-content h3{font-size:17px;font-style:italic;padding:28px 0 14px}.entry-content h4{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.entry-content table{margin-left:1px}.entry-content embed{margin:0 0 22px}.entry-utility{color:#666;font-size:13px;line-height:18px;margin:0 0 44px}.entry-utility a{color:#666;font-style:italic;text-decoration:none}.entry-utility a:active,.entry-utility a:hover{color:#ff4b33}.page-link{font-size:13px;font-weight:700;line-height:18px;margin:0 0 22px;padding:22px 0 0;word-spacing:.5em}.page-link a{border:1px solid #ccc;color:#666;font-weight:400;padding:.5em .75em;text-decoration:none}.page-link a:active,.page-link a:hover{color:#ff4b33}ul#links-page,ul#archives-page{list-style:none;margin-left:0;overflow:hidden}li.content-column{float:left;margin-right:20px;width:45%}.gallery{padding:0 0 22px}.wp-caption-text,.gallery-caption{color:#666;font-size:13px;line-height:18px}#author-info{margin:0 0 44px;overflow:hidden}#author-info .avatar{float:left;margin:.3em 1em 0 0}.attachment-jpeg #container,.attachment-png #container{width:100%}.attachment-jpeg #content,.attachment-png #content{width:930px}.attachment-jpeg #comments,.attachment-png #comments{width:540px;overflow:hidden}.attachment-jpeg .main-aside,.attachment-png .main-aside{display:none}.navigation{color:#666;font-size:13px;line-height:18px;margin:0 0 22px;overflow:hidden}.navigation a{color:#666;font-style:italic;text-decoration:none}.navigation a:active,.navigation a:hover{color:#ff4b33}.navigation .meta-nav{font-style:normal}.nav-previous{float:left;width:50%}.nav-next{float:right;width:50%;text-align:right}#nav-above,#nav-below{width:100%}#nav-above{display:none}.paged #nav-above{display:block;padding:0}#comments{padding:22px 0 0}#comments,#comments input,#comments textarea{font-size:13px;line-height:18px}#comments code{font-size:12px;line-height:18px}#comments h3{font-size:15px;font-weight:700;line-height:22px;padding:0 0 18px}#comments-list{padding:0 0 18px}#comments-list ol,#comments-list ul{list-style:none;margin:0}#comments-list ol{border:1px solid #ccc;border-bottom:none;margin:0 0 18px}#comments-list li{background:#fafafa;border-bottom:1px solid #ccc;padding:18px 1.5em 0;position:relative}#comments-list li.alt{background:#fff}#comments-list li.bypostauthor{background:#ffc}#comments-list ul li{border:1px solid #ccc;margin:0 0 18px}#comments-list li .avatar{position:absolute;top:22px;left:1.5em;width:36px;height:36px}#comments-list .comment-author{font-weight:700;padding:9px 0 0}#comments-list .comment-meta{color:#666;font-size:11px;padding:0 0 9px}#comments-list .comment-meta a{color:#666;font-style:italic;text-decoration:none}#comments-list .comment-meta a:active,#comments-list .comment-meta a:hover{color:#ff4b33}.comment-reply-link{font-size:11px;padding:0 0 18px;text-align:right}.comment-reply-link a{color:#666;font-style:italic;text-decoration:none}.comment-reply-link a:active,.comment-reply-link a:hover{color:#ff4b33}.comment-navigation{font-weight:700;padding:0 0 18px;margin-right:.5em}.comment-navigation a{border:1px solid #ccc;color:#666;font-weight:400;padding:.5em .75em;text-decoration:none}.comment-navigation a:active,.comment-navigation a:hover{color:#ff4b33}.comment-navigation a,.comment-navigation span{margin-right:.5em}#trackbacks-list .comment-content{position:absolute;left:-9000px}#respond{background:#fff;margin-bottom:22px;overflow:hidden;padding:18px 0 0;position:relative}#comments-list #respond{border-bottom:1px solid #ccc;margin:0 0 18px;padding:18px 1.5em}#comments-list ul #respond{border:1px solid #ccc;margin:0}#cancel-comment-reply{font-size:11px;position:absolute;top:18px;right:1.5em}#cancel-comment-reply a{color:#666}#respond .required{color:#ff4b33;font-weight:700}.form-section label{font-size:11px}.form-section input{margin:0 0 18px;width:98%}.form-section textarea{width:99%}#form-allowed-tags p{color:#666;font-size:11px;margin:0}#form-allowed-tags span{font-style:italic}.form-submit{padding:18px 0 0;text-align:right}.subscribe-to-comments{color:#666;float:left;font-size:11px;margin:0;padding:18px 0 0}.solo-subscribe-to-comments{color:#666;font-size:11px;padding:18px 0 0}.comment_license{color:#666;clear:both;font-size:11px;margin:0;padding:18px 0 0}.aside,.aside input{font-size:13px;line-height:18px;margin-bottom:6px}.aside p,.aside ul,.aside ol,.aside dd,.aside pre{margin-bottom:18px}.aside pre,.aside code{font-size:12px;line-height:18px}.aside .current_page_item a{color:#ff4b33}.aside .current_page_item .page_item a{color:#666}.aside .current_page_item .page_item a:hover,.aside .current_page_item .page_item a:active{color:#ff4b33}.aside{color:#666}.aside a{color:#666}.aside a:active,.aside a:hover{color:#ff4b33}.aside h3{font-size:15px;font-style:italic;line-height:22px}.aside h3 a{text-decoration:none}.aside caption{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.aside ul{list-style:none;margin-left:0}.aside ul ul{list-style:disc;margin:0 0 22px 20px}.aside ul ul li{padding:1px 0}.aside ul ul ul{margin-bottom:0}.aside form,.aside table{margin-bottom:22px}.aside table{border:none}.aside thead{border:1px solid #ccc}.aside tbody{border:1px solid #ccc}.aside th,.aside td{border-right:1px solid #ccc;padding:.25em .8em}.aside tfoot tr{border:none}.aside tfoot td{border-color:transparent}.widget_tag_cloud{margin:0 0 22px}.main-aside ul{padding:0 20px}.main-aside ul ul{padding:0}#primary{border:1px solid #ccc;padding:18px 0 0;margin-bottom:22px}#content .aside{border:1px solid #ccc;margin:0 0 22px;padding:18px 0 0}#content .aside ul{padding:0 20px}#content .aside h3{font-family:Georgia,serif;font-weight:400;font-size:17px;font-style:italic;padding:0 0 7px;text-transform:none}#content .aside ul ul{padding:0}#subsidiary{padding:33px 0 0}#footer{border-top:1px solid #ccc;margin-top:22px}#siteinfo{color:#666;font-size:11px;line-height:18px;padding:22px 0 44px}#siteinfo a{color:#666}#siteinfo a:active,#siteinfo a:hover{color:#ff4b33}.wp-pagenavi{margin:0 0 0 -.5em;padding:.5em 0}.wp-pagenavi a,.wp-pagenavi a:link{border:1px solid #ccc !important;color:#666!important;font-style:normal;margin:0 .375em !important;padding:.5em .25em !important}.wp-pagenavi a:visited{border:1px solid #ccc !important;color:#666 !important}.wp-pagenavi a:hover{border:1px solid #ccc !important;color:#ff4b33 !important}.wp-pagenavi a:active{border:1px solid #ccc !important;color:#ff4b33 !important}.wp-pagenavi span.pages{border:none !important;color:#666 !important;margin:0 !important;padding:0 !important}.wp-pagenavi span.current{border:none !important;color:#666 !important;font-weight:400 !important;margin:0 !important;padding:0 !important}.wp-pagenavi span.extend{background-color:#fff;border:1px solid #000;color:#000;margin:2px;padding:2px 4px}.edit-comment{margin-bottom:18px}img#wpstats{width:0;height:0;overflow:hidden}.entry-content img{margin:0;max-width:100%}.alignleft,img.alignleft{float:left;margin-right:20px}.alignright,img.alignright{display:block;float:right;margin-left:20px}.aligncenter,img.aligncenter{margin-left:auto;margin-right:auto;display:block;clear:both}.wp-caption{text-align:center;margin-bottom:18px}.wp-caption img{margin:0;padding:0;border:0 none}.wp-caption p.wp-caption-text{margin:0;padding:5px}.gallery img{margin:0}.wp-smiley{max-height:12px;margin:0 !important}table.gtable{font:76% Verdana,Tahoma,Arial,sans-serif;border:1px #aaa solid;border-collapse:collapse}.gtable th,.gtable td{padding:.2em}.gtable th{background:#f2f2f2;text-align:center}.gtable caption{margin-left:inherit;margin-right:inherit} img.wp-smiley,img.emoji{display:inline !important;border:none !important;box-shadow:none !important;height:1em !important;width:1em !important;margin:0 .07em !important;vertical-align:-.1em !important;background:0 0 !important;padding:0 !important} .ql-img-inline-formula{background:0 0 !important;border:none !important;padding:0 !important;margin:0 !important}.ql-img-displayed-equation{background:0 0 !important;border:none !important;padding:0 !important;margin:0 !important;vertical-align:middle !important;display:inline-block !important}.ql-img-picture{background:0 0 !important;border:none !important;padding:0 !important;margin:0 !important}.ql-center-displayed-equation{text-align:center !important;white-space:nowrap !important;overflow:hidden !important}.ql-left-displayed-equation{text-align:left !important;white-space:nowrap !important;overflow:hidden !important}.ql-right-displayed-equation{text-align:right !important;white-space:nowrap !important;overflow:hidden !important}.ql-left-eqno{width:3em !important;text-align:left !important;float:left !important;display:inline-block !important;font-size:110% !important}.ql-right-eqno{width:3em !important;text-align:right !important;float:right !important;display:inline-block !important;font-size:110% !important}.ql-center-picture{border:none !important;text-align:center !important;background:0 0 !important}.ql-errors{color:#222;font-family:Georgia,"Bitstream Charter",serif;font-size:16px;border:1px solid red}.ql-manual-mode{background:0 0;border:none;padding:0;margin:0} .wp-block-audio figcaption{margin-top:.5em;margin-bottom:1em}.wp-block-audio audio{width:100%;min-width:300px}.wp-block-button{color:#fff}.wp-block-button.aligncenter{text-align:center}.wp-block-button.alignright{text-align:right}.wp-block-button__link{background-color:#32373c;border:none;border-radius:28px;box-shadow:none;color:inherit;cursor:pointer;display:inline-block;font-size:18px;margin:0;padding:12px 24px;text-align:center;text-decoration:none;overflow-wrap:break-word}.wp-block-button__link:active,.wp-block-button__link:focus,.wp-block-button__link:hover,.wp-block-button__link:visited{color:inherit}.is-style-squared .wp-block-button__link{border-radius:0}.no-border-radius.wp-block-button__link{border-radius:0!important}.is-style-outline{color:#32373c}.is-style-outline .wp-block-button__link{background-color:transparent;border:2px solid}.wp-block-calendar{text-align:center}.wp-block-calendar tbody td,.wp-block-calendar th{padding:4px;border:1px solid #e2e4e7}.wp-block-calendar tfoot td{border:none}.wp-block-calendar table{width:100%;border-collapse:collapse;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif}.wp-block-calendar table th{font-weight:400;background:#edeff0}.wp-block-calendar a{text-decoration:underline}.wp-block-calendar tfoot a{color:#00739c}.wp-block-calendar table caption,.wp-block-calendar table tbody{color:#40464d}.wp-block-categories.alignleft{margin-right:2em}.wp-block-categories.alignright{margin-left:2em}.wp-block-columns{display:flex;margin-bottom:28px;flex-wrap:wrap}@media (min-width:782px){.wp-block-columns{flex-wrap:nowrap}}.wp-block-column{flex-grow:1;min-width:0;word-break:break-word;overflow-wrap:break-word}@media (max-width:599px){.wp-block-column{flex-basis:100%!important}}@media (min-width:600px){.wp-block-column{flex-basis:calc(50% - 16px);flex-grow:0}.wp-block-column:nth-child(2n){margin-left:32px}}@media (min-width:782px){.wp-block-column:not(:first-child){margin-left:32px}}.wp-block-columns.are-vertically-aligned-top{align-items:flex-start}.wp-block-columns.are-vertically-aligned-center{align-items:center}.wp-block-columns.are-vertically-aligned-bottom{align-items:flex-end}.wp-block-column.is-vertically-aligned-top{align-self:flex-start}.wp-block-column.is-vertically-aligned-center{-ms-grid-row-align:center;align-self:center}.wp-block-column.is-vertically-aligned-bottom{align-self:flex-end}.wp-block-cover,.wp-block-cover-image{position:relative;background-color:#000;background-size:cover;background-position:50%;min-height:430px;height:100%;width:100%;display:flex;justify-content:center;align-items:center;overflow:hidden}.wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax{background-attachment:fixed}@supports (-webkit-overflow-scrolling:touch){.wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax{background-attachment:scroll}}@media (prefers-reduced-motion:reduce){.wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax{background-attachment:scroll}}.wp-block-cover-image.has-background-dim:before,.wp-block-cover.has-background-dim:before{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background-color:inherit;opacity:.5;z-index:1}.wp-block-cover-image.has-background-dim.has-background-dim-10:before,.wp-block-cover.has-background-dim.has-background-dim-10:before{opacity:.1}.wp-block-cover-image.has-background-dim.has-background-dim-20:before,.wp-block-cover.has-background-dim.has-background-dim-20:before{opacity:.2}.wp-block-cover-image.has-background-dim.has-background-dim-30:before,.wp-block-cover.has-background-dim.has-background-dim-30:before{opacity:.3}.wp-block-cover-image.has-background-dim.has-background-dim-40:before,.wp-block-cover.has-background-dim.has-background-dim-40:before{opacity:.4}.wp-block-cover-image.has-background-dim.has-background-dim-50:before,.wp-block-cover.has-background-dim.has-background-dim-50:before{opacity:.5}.wp-block-cover-image.has-background-dim.has-background-dim-60:before,.wp-block-cover.has-background-dim.has-background-dim-60:before{opacity:.6}.wp-block-cover-image.has-background-dim.has-background-dim-70:before,.wp-block-cover.has-background-dim.has-background-dim-70:before{opacity:.7}.wp-block-cover-image.has-background-dim.has-background-dim-80:before,.wp-block-cover.has-background-dim.has-background-dim-80:before{opacity:.8}.wp-block-cover-image.has-background-dim.has-background-dim-90:before,.wp-block-cover.has-background-dim.has-background-dim-90:before{opacity:.9}.wp-block-cover-image.has-background-dim.has-background-dim-100:before,.wp-block-cover.has-background-dim.has-background-dim-100:before{opacity:1}.wp-block-cover-image.alignleft,.wp-block-cover-image.alignright,.wp-block-cover.alignleft,.wp-block-cover.alignright{max-width:305px;width:100%}.wp-block-cover-image:after,.wp-block-cover:after{display:block;content:"";font-size:0;min-height:inherit}@supports (position:sticky){.wp-block-cover-image:after,.wp-block-cover:after{content:none}}.wp-block-cover-image.aligncenter,.wp-block-cover-image.alignleft,.wp-block-cover-image.alignright,.wp-block-cover.aligncenter,.wp-block-cover.alignleft,.wp-block-cover.alignright{display:flex}.wp-block-cover-image .wp-block-cover__inner-container,.wp-block-cover .wp-block-cover__inner-container{width:calc(100% - 70px);z-index:1;color:#f8f9f9}.wp-block-cover-image .wp-block-subhead:not(.has-text-color),.wp-block-cover-image h1:not(.has-text-color),.wp-block-cover-image h2:not(.has-text-color),.wp-block-cover-image h3:not(.has-text-color),.wp-block-cover-image h4:not(.has-text-color),.wp-block-cover-image h5:not(.has-text-color),.wp-block-cover-image h6:not(.has-text-color),.wp-block-cover-image p:not(.has-text-color),.wp-block-cover .wp-block-subhead:not(.has-text-color),.wp-block-cover h1:not(.has-text-color),.wp-block-cover h2:not(.has-text-color),.wp-block-cover h3:not(.has-text-color),.wp-block-cover h4:not(.has-text-color),.wp-block-cover h5:not(.has-text-color),.wp-block-cover h6:not(.has-text-color),.wp-block-cover p:not(.has-text-color){color:inherit}.wp-block-cover__video-background{position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);width:100%;height:100%;z-index:0;-o-object-fit:cover;object-fit:cover}.wp-block-cover-image-text,.wp-block-cover-text,section.wp-block-cover-image h2{color:#fff}.wp-block-cover-image-text a,.wp-block-cover-image-text a:active,.wp-block-cover-image-text a:focus,.wp-block-cover-image-text a:hover,.wp-block-cover-text a,.wp-block-cover-text a:active,.wp-block-cover-text a:focus,.wp-block-cover-text a:hover,section.wp-block-cover-image h2 a,section.wp-block-cover-image h2 a:active,section.wp-block-cover-image h2 a:focus,section.wp-block-cover-image h2 a:hover{color:#fff}.wp-block-cover-image .wp-block-cover.has-left-content{justify-content:flex-start}.wp-block-cover-image .wp-block-cover.has-right-content{justify-content:flex-end}.wp-block-cover-image.has-left-content .wp-block-cover-image-text,.wp-block-cover.has-left-content .wp-block-cover-text,section.wp-block-cover-image.has-left-content>h2{margin-left:0;text-align:left}.wp-block-cover-image.has-right-content .wp-block-cover-image-text,.wp-block-cover.has-right-content .wp-block-cover-text,section.wp-block-cover-image.has-right-content>h2{margin-right:0;text-align:right}.wp-block-cover-image .wp-block-cover-image-text,.wp-block-cover .wp-block-cover-text,section.wp-block-cover-image>h2{font-size:2em;line-height:1.25;z-index:1;margin-bottom:0;max-width:610px;padding:14px;text-align:center}.block-editor-block-list__block[data-type="core/embed"][data-align=left] .block-editor-block-list__block-edit,.block-editor-block-list__block[data-type="core/embed"][data-align=right] .block-editor-block-list__block-edit,.wp-block-embed.alignleft,.wp-block-embed.alignright{max-width:360px;width:100%}.wp-block-embed{margin-bottom:1em}.wp-block-embed figcaption{margin-top:.5em;margin-bottom:1em}.wp-embed-responsive .wp-block-embed.wp-embed-aspect-1-1 .wp-block-embed__wrapper,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-1-2 .wp-block-embed__wrapper,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-4-3 .wp-block-embed__wrapper,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-9-16 .wp-block-embed__wrapper,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-16-9 .wp-block-embed__wrapper,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-18-9 .wp-block-embed__wrapper,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-21-9 .wp-block-embed__wrapper{position:relative}.wp-embed-responsive .wp-block-embed.wp-embed-aspect-1-1 .wp-block-embed__wrapper:before,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-1-2 .wp-block-embed__wrapper:before,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-4-3 .wp-block-embed__wrapper:before,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-9-16 .wp-block-embed__wrapper:before,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-16-9 .wp-block-embed__wrapper:before,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-18-9 .wp-block-embed__wrapper:before,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-21-9 .wp-block-embed__wrapper:before{content:"";display:block;padding-top:50%}.wp-embed-responsive .wp-block-embed.wp-embed-aspect-1-1 .wp-block-embed__wrapper iframe,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-1-2 .wp-block-embed__wrapper iframe,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-4-3 .wp-block-embed__wrapper iframe,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-9-16 .wp-block-embed__wrapper iframe,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-16-9 .wp-block-embed__wrapper iframe,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-18-9 .wp-block-embed__wrapper iframe,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-21-9 .wp-block-embed__wrapper iframe{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.wp-embed-responsive .wp-block-embed.wp-embed-aspect-21-9 .wp-block-embed__wrapper:before{padding-top:42.85%}.wp-embed-responsive .wp-block-embed.wp-embed-aspect-18-9 .wp-block-embed__wrapper:before{padding-top:50%}.wp-embed-responsive .wp-block-embed.wp-embed-aspect-16-9 .wp-block-embed__wrapper:before{padding-top:56.25%}.wp-embed-responsive .wp-block-embed.wp-embed-aspect-4-3 .wp-block-embed__wrapper:before{padding-top:75%}.wp-embed-responsive .wp-block-embed.wp-embed-aspect-1-1 .wp-block-embed__wrapper:before{padding-top:100%}.wp-embed-responsive .wp-block-embed.wp-embed-aspect-9-16 .wp-block-embed__wrapper:before{padding-top:177.78%}.wp-embed-responsive .wp-block-embed.wp-embed-aspect-1-2 .wp-block-embed__wrapper:before{padding-top:200%}.wp-block-file{margin-bottom:1.5em}.wp-block-file.aligncenter{text-align:center}.wp-block-file.alignright{text-align:right}.wp-block-file .wp-block-file__button{background:#32373c;border-radius:2em;color:#fff;font-size:13px;padding:.5em 1em}.wp-block-file a.wp-block-file__button{text-decoration:none}.wp-block-file a.wp-block-file__button:active,.wp-block-file a.wp-block-file__button:focus,.wp-block-file a.wp-block-file__button:hover,.wp-block-file a.wp-block-file__button:visited{box-shadow:none;color:#fff;opacity:.85;text-decoration:none}.wp-block-file *+.wp-block-file__button{margin-left:.75em}.blocks-gallery-grid,.wp-block-gallery{display:flex;flex-wrap:wrap;list-style-type:none;padding:0;margin:0}.blocks-gallery-grid .blocks-gallery-image,.blocks-gallery-grid .blocks-gallery-item,.wp-block-gallery .blocks-gallery-image,.wp-block-gallery .blocks-gallery-item{margin:0 16px 16px 0;display:flex;flex-grow:1;flex-direction:column;justify-content:center;position:relative}.blocks-gallery-grid .blocks-gallery-image figure,.blocks-gallery-grid .blocks-gallery-item figure,.wp-block-gallery .blocks-gallery-image figure,.wp-block-gallery .blocks-gallery-item figure{margin:0;height:100%}@supports (position:sticky){.blocks-gallery-grid .blocks-gallery-image figure,.blocks-gallery-grid .blocks-gallery-item figure,.wp-block-gallery .blocks-gallery-image figure,.wp-block-gallery .blocks-gallery-item figure{display:flex;align-items:flex-end;justify-content:flex-start}}.blocks-gallery-grid .blocks-gallery-image img,.blocks-gallery-grid .blocks-gallery-item img,.wp-block-gallery .blocks-gallery-image img,.wp-block-gallery .blocks-gallery-item img{display:block;max-width:100%;height:auto;width:100%}@supports (position:sticky){.blocks-gallery-grid .blocks-gallery-image img,.blocks-gallery-grid .blocks-gallery-item img,.wp-block-gallery .blocks-gallery-image img,.wp-block-gallery .blocks-gallery-item img{width:auto}}.blocks-gallery-grid .blocks-gallery-image figcaption,.blocks-gallery-grid .blocks-gallery-item figcaption,.wp-block-gallery .blocks-gallery-image figcaption,.wp-block-gallery .blocks-gallery-item figcaption{position:absolute;bottom:0;width:100%;max-height:100%;overflow:auto;padding:40px 10px 9px;color:#fff;text-align:center;font-size:13px;background:linear-gradient(0deg,rgba(0,0,0,.7),rgba(0,0,0,.3) 70%,transparent)}.blocks-gallery-grid .blocks-gallery-image figcaption img,.blocks-gallery-grid .blocks-gallery-item figcaption img,.wp-block-gallery .blocks-gallery-image figcaption img,.wp-block-gallery .blocks-gallery-item figcaption img{display:inline}.blocks-gallery-grid.is-cropped .blocks-gallery-image a,.blocks-gallery-grid.is-cropped .blocks-gallery-image img,.blocks-gallery-grid.is-cropped .blocks-gallery-item a,.blocks-gallery-grid.is-cropped .blocks-gallery-item img,.wp-block-gallery.is-cropped .blocks-gallery-image a,.wp-block-gallery.is-cropped .blocks-gallery-image img,.wp-block-gallery.is-cropped .blocks-gallery-item a,.wp-block-gallery.is-cropped .blocks-gallery-item img{width:100%}@supports (position:sticky){.blocks-gallery-grid.is-cropped .blocks-gallery-image a,.blocks-gallery-grid.is-cropped .blocks-gallery-image img,.blocks-gallery-grid.is-cropped .blocks-gallery-item a,.blocks-gallery-grid.is-cropped .blocks-gallery-item img,.wp-block-gallery.is-cropped .blocks-gallery-image a,.wp-block-gallery.is-cropped .blocks-gallery-image img,.wp-block-gallery.is-cropped .blocks-gallery-item a,.wp-block-gallery.is-cropped .blocks-gallery-item img{height:100%;flex:1;-o-object-fit:cover;object-fit:cover}}.blocks-gallery-grid .blocks-gallery-image,.blocks-gallery-grid .blocks-gallery-item,.wp-block-gallery .blocks-gallery-image,.wp-block-gallery .blocks-gallery-item{width:calc((100% - 16px)/2)}.blocks-gallery-grid .blocks-gallery-image:nth-of-type(2n),.blocks-gallery-grid .blocks-gallery-item:nth-of-type(2n),.wp-block-gallery .blocks-gallery-image:nth-of-type(2n),.wp-block-gallery .blocks-gallery-item:nth-of-type(2n){margin-right:0}.blocks-gallery-grid.columns-1 .blocks-gallery-image,.blocks-gallery-grid.columns-1 .blocks-gallery-item,.wp-block-gallery.columns-1 .blocks-gallery-image,.wp-block-gallery.columns-1 .blocks-gallery-item{width:100%;margin-right:0}@media (min-width:600px){.blocks-gallery-grid.columns-3 .blocks-gallery-image,.blocks-gallery-grid.columns-3 .blocks-gallery-item,.wp-block-gallery.columns-3 .blocks-gallery-image,.wp-block-gallery.columns-3 .blocks-gallery-item{width:calc((100% - 32px)/3);margin-right:16px}@supports (-ms-ime-align:auto){.blocks-gallery-grid.columns-3 .blocks-gallery-image,.blocks-gallery-grid.columns-3 .blocks-gallery-item,.wp-block-gallery.columns-3 .blocks-gallery-image,.wp-block-gallery.columns-3 .blocks-gallery-item{width:calc((100% - 32px)/3 - 1px)}}.blocks-gallery-grid.columns-4 .blocks-gallery-image,.blocks-gallery-grid.columns-4 .blocks-gallery-item,.wp-block-gallery.columns-4 .blocks-gallery-image,.wp-block-gallery.columns-4 .blocks-gallery-item{width:calc((100% - 48px)/4);margin-right:16px}@supports (-ms-ime-align:auto){.blocks-gallery-grid.columns-4 .blocks-gallery-image,.blocks-gallery-grid.columns-4 .blocks-gallery-item,.wp-block-gallery.columns-4 .blocks-gallery-image,.wp-block-gallery.columns-4 .blocks-gallery-item{width:calc((100% - 48px)/4 - 1px)}}.blocks-gallery-grid.columns-5 .blocks-gallery-image,.blocks-gallery-grid.columns-5 .blocks-gallery-item,.wp-block-gallery.columns-5 .blocks-gallery-image,.wp-block-gallery.columns-5 .blocks-gallery-item{width:calc((100% - 64px)/5);margin-right:16px}@supports (-ms-ime-align:auto){.blocks-gallery-grid.columns-5 .blocks-gallery-image,.blocks-gallery-grid.columns-5 .blocks-gallery-item,.wp-block-gallery.columns-5 .blocks-gallery-image,.wp-block-gallery.columns-5 .blocks-gallery-item{width:calc((100% - 64px)/5 - 1px)}}.blocks-gallery-grid.columns-6 .blocks-gallery-image,.blocks-gallery-grid.columns-6 .blocks-gallery-item,.wp-block-gallery.columns-6 .blocks-gallery-image,.wp-block-gallery.columns-6 .blocks-gallery-item{width:calc((100% - 80px)/6);margin-right:16px}@supports (-ms-ime-align:auto){.blocks-gallery-grid.columns-6 .blocks-gallery-image,.blocks-gallery-grid.columns-6 .blocks-gallery-item,.wp-block-gallery.columns-6 .blocks-gallery-image,.wp-block-gallery.columns-6 .blocks-gallery-item{width:calc((100% - 80px)/6 - 1px)}}.blocks-gallery-grid.columns-7 .blocks-gallery-image,.blocks-gallery-grid.columns-7 .blocks-gallery-item,.wp-block-gallery.columns-7 .blocks-gallery-image,.wp-block-gallery.columns-7 .blocks-gallery-item{width:calc((100% - 96px)/7);margin-right:16px}@supports (-ms-ime-align:auto){.blocks-gallery-grid.columns-7 .blocks-gallery-image,.blocks-gallery-grid.columns-7 .blocks-gallery-item,.wp-block-gallery.columns-7 .blocks-gallery-image,.wp-block-gallery.columns-7 .blocks-gallery-item{width:calc((100% - 96px)/7 - 1px)}}.blocks-gallery-grid.columns-8 .blocks-gallery-image,.blocks-gallery-grid.columns-8 .blocks-gallery-item,.wp-block-gallery.columns-8 .blocks-gallery-image,.wp-block-gallery.columns-8 .blocks-gallery-item{width:calc((100% - 112px)/8);margin-right:16px}@supports (-ms-ime-align:auto){.blocks-gallery-grid.columns-8 .blocks-gallery-image,.blocks-gallery-grid.columns-8 .blocks-gallery-item,.wp-block-gallery.columns-8 .blocks-gallery-image,.wp-block-gallery.columns-8 .blocks-gallery-item{width:calc((100% - 112px)/8 - 1px)}}.blocks-gallery-grid.columns-1 .blocks-gallery-image:nth-of-type(1n),.blocks-gallery-grid.columns-1 .blocks-gallery-item:nth-of-type(1n),.wp-block-gallery.columns-1 .blocks-gallery-image:nth-of-type(1n),.wp-block-gallery.columns-1 .blocks-gallery-item:nth-of-type(1n){margin-right:0}.blocks-gallery-grid.columns-2 .blocks-gallery-image:nth-of-type(2n),.blocks-gallery-grid.columns-2 .blocks-gallery-item:nth-of-type(2n),.wp-block-gallery.columns-2 .blocks-gallery-image:nth-of-type(2n),.wp-block-gallery.columns-2 .blocks-gallery-item:nth-of-type(2n){margin-right:0}.blocks-gallery-grid.columns-3 .blocks-gallery-image:nth-of-type(3n),.blocks-gallery-grid.columns-3 .blocks-gallery-item:nth-of-type(3n),.wp-block-gallery.columns-3 .blocks-gallery-image:nth-of-type(3n),.wp-block-gallery.columns-3 .blocks-gallery-item:nth-of-type(3n){margin-right:0}.blocks-gallery-grid.columns-4 .blocks-gallery-image:nth-of-type(4n),.blocks-gallery-grid.columns-4 .blocks-gallery-item:nth-of-type(4n),.wp-block-gallery.columns-4 .blocks-gallery-image:nth-of-type(4n),.wp-block-gallery.columns-4 .blocks-gallery-item:nth-of-type(4n){margin-right:0}.blocks-gallery-grid.columns-5 .blocks-gallery-image:nth-of-type(5n),.blocks-gallery-grid.columns-5 .blocks-gallery-item:nth-of-type(5n),.wp-block-gallery.columns-5 .blocks-gallery-image:nth-of-type(5n),.wp-block-gallery.columns-5 .blocks-gallery-item:nth-of-type(5n){margin-right:0}.blocks-gallery-grid.columns-6 .blocks-gallery-image:nth-of-type(6n),.blocks-gallery-grid.columns-6 .blocks-gallery-item:nth-of-type(6n),.wp-block-gallery.columns-6 .blocks-gallery-image:nth-of-type(6n),.wp-block-gallery.columns-6 .blocks-gallery-item:nth-of-type(6n){margin-right:0}.blocks-gallery-grid.columns-7 .blocks-gallery-image:nth-of-type(7n),.blocks-gallery-grid.columns-7 .blocks-gallery-item:nth-of-type(7n),.wp-block-gallery.columns-7 .blocks-gallery-image:nth-of-type(7n),.wp-block-gallery.columns-7 .blocks-gallery-item:nth-of-type(7n){margin-right:0}.blocks-gallery-grid.columns-8 .blocks-gallery-image:nth-of-type(8n),.blocks-gallery-grid.columns-8 .blocks-gallery-item:nth-of-type(8n),.wp-block-gallery.columns-8 .blocks-gallery-image:nth-of-type(8n),.wp-block-gallery.columns-8 .blocks-gallery-item:nth-of-type(8n){margin-right:0}}.blocks-gallery-grid .blocks-gallery-image:last-child,.blocks-gallery-grid .blocks-gallery-item:last-child,.wp-block-gallery .blocks-gallery-image:last-child,.wp-block-gallery .blocks-gallery-item:last-child{margin-right:0}.blocks-gallery-grid.alignleft,.blocks-gallery-grid.alignright,.wp-block-gallery.alignleft,.wp-block-gallery.alignright{max-width:305px;width:100%}.blocks-gallery-grid.aligncenter .blocks-gallery-item figure,.wp-block-gallery.aligncenter .blocks-gallery-item figure{justify-content:center}.wp-block-image{max-width:100%;margin-bottom:1em}.wp-block-image img{max-width:100%}.wp-block-image.aligncenter{text-align:center}.wp-block-image.alignfull img,.wp-block-image.alignwide img{width:100%}.wp-block-image .aligncenter,.wp-block-image .alignleft,.wp-block-image .alignright,.wp-block-image.is-resized{display:table;margin-left:0;margin-right:0}.wp-block-image .aligncenter>figcaption,.wp-block-image .alignleft>figcaption,.wp-block-image .alignright>figcaption,.wp-block-image.is-resized>figcaption{display:table-caption;caption-side:bottom}.wp-block-image .alignleft{float:left;margin-right:1em}.wp-block-image .alignright{float:right;margin-left:1em}.wp-block-image .aligncenter{margin-left:auto;margin-right:auto}.wp-block-image figcaption{margin-top:.5em;margin-bottom:1em}.is-style-circle-mask img{border-radius:9999px}@supports (mask-image:none) or (-webkit-mask-image:none){.is-style-circle-mask img{mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>');mask-mode:alpha;mask-repeat:no-repeat;mask-size:contain;mask-position:center;border-radius:none}}.wp-block-latest-comments__comment{font-size:15px;line-height:1.1;list-style:none;margin-bottom:1em}.has-avatars .wp-block-latest-comments__comment{min-height:36px;list-style:none}.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-excerpt,.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-meta{margin-left:52px}.has-dates .wp-block-latest-comments__comment,.has-excerpts .wp-block-latest-comments__comment{line-height:1.5}.wp-block-latest-comments__comment-excerpt p{font-size:14px;line-height:1.8;margin:5px 0 20px}.wp-block-latest-comments__comment-date{color:#8f98a1;display:block;font-size:12px}.wp-block-latest-comments .avatar,.wp-block-latest-comments__comment-avatar{border-radius:24px;display:block;float:left;height:40px;margin-right:12px;width:40px}.wp-block-latest-posts.alignleft{margin-right:2em}.wp-block-latest-posts.alignright{margin-left:2em}.wp-block-latest-posts.wp-block-latest-posts__list{list-style:none}.wp-block-latest-posts.is-grid{display:flex;flex-wrap:wrap;padding:0}.wp-block-latest-posts.is-grid li{margin:0 16px 16px 0;width:100%}@media (min-width:600px){.wp-block-latest-posts.columns-2 li{width:calc(50% - 16px)}.wp-block-latest-posts.columns-3 li{width:calc(33.33333% - 16px)}.wp-block-latest-posts.columns-4 li{width:calc(25% - 16px)}.wp-block-latest-posts.columns-5 li{width:calc(20% - 16px)}.wp-block-latest-posts.columns-6 li{width:calc(16.66667% - 16px)}}.wp-block-latest-posts__post-date{display:block;color:#6c7781;font-size:13px}.wp-block-latest-posts__post-excerpt{margin-top:8px;margin-bottom:16px}.wp-block-media-text{display:-ms-grid;display:grid;-ms-grid-rows:auto;grid-template-rows:auto;-ms-grid-columns:50% 1fr;grid-template-columns:50% 1fr}.wp-block-media-text .has-media-on-the-right{-ms-grid-columns:1fr 50%;grid-template-columns:1fr 50%}.wp-block-media-text.is-vertically-aligned-top .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-top .wp-block-media-text__media{-ms-grid-row-align:start;align-self:start}.wp-block-media-text.is-vertically-aligned-center .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-center .wp-block-media-text__media,.wp-block-media-text .wp-block-media-text__content,.wp-block-media-text .wp-block-media-text__media{-ms-grid-row-align:center;align-self:center}.wp-block-media-text.is-vertically-aligned-bottom .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-bottom .wp-block-media-text__media{-ms-grid-row-align:end;align-self:end}.wp-block-media-text .wp-block-media-text__media{-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1;margin:0}.wp-block-media-text .wp-block-media-text__content{word-break:break-word;padding:0 8%}.wp-block-media-text.has-media-on-the-right .wp-block-media-text__media,.wp-block-media-text .wp-block-media-text__content{-ms-grid-column:2;grid-column:2;-ms-grid-row:1;grid-row:1}.wp-block-media-text.has-media-on-the-right .wp-block-media-text__content{-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1}.wp-block-media-text>figure>img,.wp-block-media-text>figure>video{max-width:unset;width:100%;vertical-align:middle}.wp-block-media-text.is-image-fill figure{height:100%;min-height:250px;background-size:cover}.wp-block-media-text.is-image-fill figure>img{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}@media (max-width:600px){.wp-block-media-text.is-stacked-on-mobile{-ms-grid-columns:100%!important;grid-template-columns:100%!important}.wp-block-media-text.is-stacked-on-mobile .wp-block-media-text__media{-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1}.wp-block-media-text.is-stacked-on-mobile.has-media-on-the-right .wp-block-media-text__media,.wp-block-media-text.is-stacked-on-mobile .wp-block-media-text__content{-ms-grid-column:1;grid-column:1;-ms-grid-row:2;grid-row:2}.wp-block-media-text.is-stacked-on-mobile.has-media-on-the-right .wp-block-media-text__content{-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1}}.is-small-text{font-size:14px}.is-regular-text{font-size:16px}.is-large-text{font-size:36px}.is-larger-text{font-size:48px}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;line-height:.68;font-weight:100;margin:.05em .1em 0 0;text-transform:uppercase;font-style:normal}.has-drop-cap:not(:focus):after{content:"";display:table;clear:both;padding-top:14px}p.has-background{padding:20px 30px}p.has-text-color a{color:inherit}.wp-block-pullquote{padding:3em 0;margin-left:0;margin-right:0;text-align:center}.wp-block-pullquote.alignleft,.wp-block-pullquote.alignright{max-width:305px}.wp-block-pullquote.alignleft p,.wp-block-pullquote.alignright p{font-size:20px}.wp-block-pullquote p{font-size:28px;line-height:1.6}.wp-block-pullquote cite,.wp-block-pullquote footer{position:relative}.wp-block-pullquote .has-text-color a{color:inherit}.wp-block-pullquote:not(.is-style-solid-color){background:none}.wp-block-pullquote.is-style-solid-color{border:none}.wp-block-pullquote.is-style-solid-color blockquote{margin-left:auto;margin-right:auto;text-align:left;max-width:60%}.wp-block-pullquote.is-style-solid-color blockquote p{margin-top:0;margin-bottom:0;font-size:32px}.wp-block-pullquote.is-style-solid-color blockquote cite{text-transform:none;font-style:normal}.wp-block-pullquote cite{color:inherit}.wp-block-quote.is-large,.wp-block-quote.is-style-large{margin:0 0 16px;padding:0 1em}.wp-block-quote.is-large p,.wp-block-quote.is-style-large p{font-size:24px;font-style:italic;line-height:1.6}.wp-block-quote.is-large cite,.wp-block-quote.is-large footer,.wp-block-quote.is-style-large cite,.wp-block-quote.is-style-large footer{font-size:18px;text-align:right}.wp-block-rss.alignleft{margin-right:2em}.wp-block-rss.alignright{margin-left:2em}.wp-block-rss.is-grid{display:flex;flex-wrap:wrap;padding:0;list-style:none}.wp-block-rss.is-grid li{margin:0 16px 16px 0;width:100%}@media (min-width:600px){.wp-block-rss.columns-2 li{width:calc(50% - 16px)}.wp-block-rss.columns-3 li{width:calc(33.33333% - 16px)}.wp-block-rss.columns-4 li{width:calc(25% - 16px)}.wp-block-rss.columns-5 li{width:calc(20% - 16px)}.wp-block-rss.columns-6 li{width:calc(16.66667% - 16px)}}.wp-block-rss__item-author,.wp-block-rss__item-publish-date{display:block;color:#6c7781;font-size:13px}.wp-block-search{display:flex;flex-wrap:wrap}.wp-block-search .wp-block-search__label{width:100%}.wp-block-search .wp-block-search__input{flex-grow:1}.wp-block-search .wp-block-search__button{margin-left:10px}.wp-block-separator.is-style-wide{border-bottom-width:1px}.wp-block-separator.is-style-dots{background:none!important;border:none;text-align:center;max-width:none;line-height:1;height:auto}.wp-block-separator.is-style-dots:before{content:"\00b7 \00b7 \00b7";color:currentColor;font-size:20px;letter-spacing:2em;padding-left:2em;font-family:serif}.wp-block-social-links{display:flex;justify-content:flex-start;padding-left:0;padding-right:0;margin-left:0}.wp-social-link{width:36px;height:36px;border-radius:36px;margin-right:8px}.wp-social-link,.wp-social-link a{display:block;transition:transform .1s ease}.wp-social-link a{padding:6px;line-height:0}.wp-social-link a,.wp-social-link a:active,.wp-social-link a:hover,.wp-social-link a:visited,.wp-social-link svg{color:currentColor;fill:currentColor}.wp-social-link:hover{transform:scale(1.1)}.wp-block-social-links.aligncenter{justify-content:center;display:flex}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link{background-color:#f0f0f0;color:#444}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-amazon{background-color:#f90;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-bandcamp{background-color:#1ea0c3;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-behance{background-color:#0757fe;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-codepen{background-color:#1e1f26;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-deviantart{background-color:#02e49b;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-dribbble{background-color:#e94c89;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-dropbox{background-color:#4280ff;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-etsy{background-color:#f45800;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-facebook{background-color:#1977f2;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-fivehundredpx{background-color:#000;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-flickr{background-color:#0461dd;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-foursquare{background-color:#e65678;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-github{background-color:#24292d;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-goodreads{background-color:#eceadd;color:#382110}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-google{background-color:#ea4434;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-instagram{background-color:#f00075;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-lastfm{background-color:#e21b24;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-linkedin{background-color:#0577b5;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-mastodon{background-color:#3288d4;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-medium{background-color:#02ab6c;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-meetup{background-color:#f6405f;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-pinterest{background-color:#e60122;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-pocket{background-color:#ef4155;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-reddit{background-color:#fe4500;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-skype{background-color:#0478d7;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-snapchat{background-color:#fefc00;color:#fff;stroke:#000}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-soundcloud{background-color:#ff5600;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-spotify{background-color:#1bd760;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-tumblr{background-color:#011835;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-twitch{background-color:#6440a4;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-twitter{background-color:#21a1f3;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-vimeo{background-color:#1eb7ea;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-vk{background-color:#4680c2;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-wordpress{background-color:#3499cd;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-yelp{background-color:#d32422;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-youtube{background-color:#ff0100;color:#fff}.wp-block-social-links.is-style-logos-only .wp-social-link{background:none;padding:4px}.wp-block-social-links.is-style-logos-only .wp-social-link svg{width:28px;height:28px}.wp-block-social-links.is-style-logos-only .wp-social-link-amazon{color:#f90}.wp-block-social-links.is-style-logos-only .wp-social-link-bandcamp{color:#1ea0c3}.wp-block-social-links.is-style-logos-only .wp-social-link-behance{color:#0757fe}.wp-block-social-links.is-style-logos-only .wp-social-link-codepen{color:#1e1f26}.wp-block-social-links.is-style-logos-only .wp-social-link-deviantart{color:#02e49b}.wp-block-social-links.is-style-logos-only .wp-social-link-dribbble{color:#e94c89}.wp-block-social-links.is-style-logos-only .wp-social-link-dropbox{color:#4280ff}.wp-block-social-links.is-style-logos-only .wp-social-link-etsy{color:#f45800}.wp-block-social-links.is-style-logos-only .wp-social-link-facebook{color:#1977f2}.wp-block-social-links.is-style-logos-only .wp-social-link-fivehundredpx{color:#000}.wp-block-social-links.is-style-logos-only .wp-social-link-flickr{color:#0461dd}.wp-block-social-links.is-style-logos-only .wp-social-link-foursquare{color:#e65678}.wp-block-social-links.is-style-logos-only .wp-social-link-github{color:#24292d}.wp-block-social-links.is-style-logos-only .wp-social-link-goodreads{color:#382110}.wp-block-social-links.is-style-logos-only .wp-social-link-google{color:#ea4434}.wp-block-social-links.is-style-logos-only .wp-social-link-instagram{color:#f00075}.wp-block-social-links.is-style-logos-only .wp-social-link-lastfm{color:#e21b24}.wp-block-social-links.is-style-logos-only .wp-social-link-linkedin{color:#0577b5}.wp-block-social-links.is-style-logos-only .wp-social-link-mastodon{color:#3288d4}.wp-block-social-links.is-style-logos-only .wp-social-link-medium{color:#02ab6c}.wp-block-social-links.is-style-logos-only .wp-social-link-meetup{color:#f6405f}.wp-block-social-links.is-style-logos-only .wp-social-link-pinterest{color:#e60122}.wp-block-social-links.is-style-logos-only .wp-social-link-pocket{color:#ef4155}.wp-block-social-links.is-style-logos-only .wp-social-link-reddit{color:#fe4500}.wp-block-social-links.is-style-logos-only .wp-social-link-skype{color:#0478d7}.wp-block-social-links.is-style-logos-only .wp-social-link-snapchat{color:#fff;stroke:#000}.wp-block-social-links.is-style-logos-only .wp-social-link-soundcloud{color:#ff5600}.wp-block-social-links.is-style-logos-only .wp-social-link-spotify{color:#1bd760}.wp-block-social-links.is-style-logos-only .wp-social-link-tumblr{color:#011835}.wp-block-social-links.is-style-logos-only .wp-social-link-twitch{color:#6440a4}.wp-block-social-links.is-style-logos-only .wp-social-link-twitter{color:#21a1f3}.wp-block-social-links.is-style-logos-only .wp-social-link-vimeo{color:#1eb7ea}.wp-block-social-links.is-style-logos-only .wp-social-link-vk{color:#4680c2}.wp-block-social-links.is-style-logos-only .wp-social-link-wordpress{color:#3499cd}.wp-block-social-links.is-style-logos-only .wp-social-link-yelp{background-color:#d32422;color:#fff}.wp-block-social-links.is-style-logos-only .wp-social-link-youtube{color:#ff0100}.wp-block-social-links.is-style-pill-shape .wp-social-link{width:auto}.wp-block-social-links.is-style-pill-shape .wp-social-link a{padding-left:16px;padding-right:16px}.wp-block-spacer{clear:both}p.wp-block-subhead{font-size:1.1em;font-style:italic;opacity:.75}.wp-block-table{overflow-x:auto}.wp-block-table table{width:100%}.wp-block-table .has-fixed-layout{table-layout:fixed;width:100%}.wp-block-table .has-fixed-layout td,.wp-block-table .has-fixed-layout th{word-break:break-word}.wp-block-table.aligncenter,.wp-block-table.alignleft,.wp-block-table.alignright{display:table;width:auto}.wp-block-table.aligncenter td,.wp-block-table.aligncenter th,.wp-block-table.alignleft td,.wp-block-table.alignleft th,.wp-block-table.alignright td,.wp-block-table.alignright th{word-break:break-word}.wp-block-table .has-subtle-light-gray-background-color{background-color:#f3f4f5}.wp-block-table .has-subtle-pale-green-background-color{background-color:#e9fbe5}.wp-block-table .has-subtle-pale-blue-background-color{background-color:#e7f5fe}.wp-block-table .has-subtle-pale-pink-background-color{background-color:#fcf0ef}.wp-block-table.is-style-stripes{border-spacing:0;border-collapse:inherit;background-color:transparent;border-bottom:1px solid #f3f4f5}.wp-block-table.is-style-stripes tbody tr:nth-child(odd){background-color:#f3f4f5}.wp-block-table.is-style-stripes.has-subtle-light-gray-background-color tbody tr:nth-child(odd){background-color:#f3f4f5}.wp-block-table.is-style-stripes.has-subtle-pale-green-background-color tbody tr:nth-child(odd){background-color:#e9fbe5}.wp-block-table.is-style-stripes.has-subtle-pale-blue-background-color tbody tr:nth-child(odd){background-color:#e7f5fe}.wp-block-table.is-style-stripes.has-subtle-pale-pink-background-color tbody tr:nth-child(odd){background-color:#fcf0ef}.wp-block-table.is-style-stripes td,.wp-block-table.is-style-stripes th{border-color:transparent}.wp-block-text-columns,.wp-block-text-columns.aligncenter{display:flex}.wp-block-text-columns .wp-block-column{margin:0 16px;padding:0}.wp-block-text-columns .wp-block-column:first-child{margin-left:0}.wp-block-text-columns .wp-block-column:last-child{margin-right:0}.wp-block-text-columns.columns-2 .wp-block-column{width:50%}.wp-block-text-columns.columns-3 .wp-block-column{width:33.33333%}.wp-block-text-columns.columns-4 .wp-block-column{width:25%}pre.wp-block-verse{white-space:nowrap;overflow:auto}.wp-block-video{margin-left:0;margin-right:0}.wp-block-video video{max-width:100%}@supports (position:sticky){.wp-block-video [poster]{-o-object-fit:cover;object-fit:cover}}.wp-block-video.aligncenter{text-align:center}.wp-block-video figcaption{margin-top:.5em;margin-bottom:1em}:root .has-pale-pink-background-color{background-color:#f78da7}:root .has-vivid-red-background-color{background-color:#cf2e2e}:root .has-luminous-vivid-orange-background-color{background-color:#ff6900}:root .has-luminous-vivid-amber-background-color{background-color:#fcb900}:root .has-light-green-cyan-background-color{background-color:#7bdcb5}:root .has-vivid-green-cyan-background-color{background-color:#00d084}:root .has-pale-cyan-blue-background-color{background-color:#8ed1fc}:root .has-vivid-cyan-blue-background-color{background-color:#0693e3}:root .has-vivid-purple-background-color{background-color:#9b51e0}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-cyan-bluish-gray-background-color{background-color:#abb8c3}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-pale-pink-color{color:#f78da7}:root .has-vivid-red-color{color:#cf2e2e}:root .has-luminous-vivid-orange-color{color:#ff6900}:root .has-luminous-vivid-amber-color{color:#fcb900}:root .has-light-green-cyan-color{color:#7bdcb5}:root .has-vivid-green-cyan-color{color:#00d084}:root .has-pale-cyan-blue-color{color:#8ed1fc}:root .has-vivid-cyan-blue-color{color:#0693e3}:root .has-vivid-purple-color{color:#9b51e0}:root .has-very-light-gray-color{color:#eee}:root .has-cyan-bluish-gray-color{color:#abb8c3}:root .has-very-dark-gray-color{color:#313131}.has-small-font-size{font-size:13px}.has-normal-font-size,.has-regular-font-size{font-size:16px}.has-medium-font-size{font-size:20px}.has-large-font-size{font-size:36px}.has-huge-font-size,.has-larger-font-size{font-size:42px}.has-text-align-center{text-align:center}.has-text-align-left{text-align:left}.has-text-align-right{text-align:right} .post-ratings{width:100%;opacity:1}.post-ratings-loading{display:none;height:16px;text-align:left}.post-ratings-image{border:0}.post-ratings img,.post-ratings-loading img,.post-ratings-image img{border:0;padding:0;margin:0}.post-ratings-comment-author{font-weight:400;font-style:italic} .download-info .download-button,.download-info .more-button{width:120px;height:0;padding-top:36px;overflow:hidden;display:block}.download-info .download-button{background:url(//www.holoborodko.com/pavel/wp-content/plugins/download-monitor/page-addon/downloadbutton.gif) no-repeat top left}.download-info .more-button{background:url(//www.holoborodko.com/pavel/wp-content/plugins/download-monitor/page-addon/morebutton.gif) no-repeat top left}form#download-page-search{border:1px solid #ddd;-moz-border-radius:4px;-webkit-border-radius:4px;margin:8px 0 16px !important;padding:12px !important}form#download-page-search p,form#download-page-search input,form#download-page-search label{margin:0 !important;padding:0 !important;line-height:1 !important;vertical-align:middle !important}form#download-page-search input{margin-left:8px !important}form#download-page-search br{display:none}div.download-info.single{overflow:hidden;padding-left:140px}.download-info-heading{margin:8px 0 12px !important}.download-desc-heading{margin:8px 0 12px !important;color:#999;font-weight:700;padding:4px 0;border-bottom:1px solid #ddd}#download-page small{margin-left:4px;font-size:11px;letter-spacing:-.1px}#download-page small small{margin-left:0}#download-page small a{color:#999}div.side-section{float:left;width:120px;text-align:center;margin-left:-140px;position:relative}div.main-section{float:right;position:relative;width:100%}div.download-info p{margin:8px 0 12px !important;padding:0 !important}img.download-image{padding:3px;background:#fff;border:1px solid #ddd;margin-bottom:0 !important}table.download-meta{margin:0 0 12px !important;padding:0 !important}table.download-meta td,table.download-meta th{padding:4px 0;border-bottom:1px solid #ddd}table.download-meta thead{display:none}table.download-meta tbody th{color:#999;font-weight:700}#download-page-featured,#download-page-tags{border:1px solid #ddd;-moz-border-radius:4px;-webkit-border-radius:4px;padding:12px;margin:8px 0 16px !important}div#download-page-featured ul,div#download-page-tags ul{overflow:hidden;margin:0;padding:0;text-indent:0}div#download-page-featured li:before,div#download-page-tags li:before{content:""}div#download-page-featured li{clear:left;float:left;list-style:none;width:47%;padding-right:3% !important;margin:0 0 4px !important;border-right:1px dotted #ddd}div#download-page-featured li.alternate{clear:none;float:right;border:0;padding:0 !important;width:47%}div#download-page-featured a{display:table-row}div#download-page-featured img{width:42px;height:42px;padding:3px;background:#fff;border:1px solid #ddd;vertical-align:middle;margin:0 8px 0 0}div#download-page-featured span{display:table-cell;vertical-align:middle}div#download-page-featured a:hover,#download-page-categories a:hover{text-decoration:none}div#download-page-featured h3,#download-page-categories h3,div#download-page-tags h3{margin:0 0 12px !important;padding:0 0 8px;border-bottom:1px solid #ddd}#download-page-categories{overflow:hidden}#download-page-categories .category{float:left;width:48%;clear:both;border:1px solid #ddd;-moz-border-radius:4px;-webkit-border-radius:4px;margin:8px 3% 8px 0 !important}#download-page-categories .category.alternate{margin:8px 0 !important;clear:none}#download-page-categories .category .inner{padding:12px}#download-page-categories .category ol{margin:0;padding:0;border:0;text-indent:0}#download-page-categories .category li{margin:0;padding:2px 0;list-style-position:inside;border:0}div#download-page-tags ul{text-align:center}div#download-page-tags li{display:inline;margin:0;padding:0 6px}div#download-page-tags li a{line-height:1.5em}p.sorting a.active{background:#999;color:#fff;padding:2px}#download-page .pagination{margin:0;padding:0;text-indent:0}#download-page .pagination li:before{content:""}#download-page .pagination li{display:inline;margin:0 4px 0 0;padding:0} .download-info .download-button{background-image:url(http://www.holoborodko.com/pavel/wp-content/plugins/download-monitor/page-addon/downloadbutton.gif)}.download-info .more-button{background-image:url(http://www.holoborodko.com/pavel/wp-content/plugins/download-monitor/page-addon/morebutton.gif)}/*]]>*/</style><title>Generating Equidistant Points on Unit Disk</title><meta http-equiv="content-type" content="text/html charset=UTF-8"/><meta name="robots" content="index,follow" /><link rel="canonical" href="http://www.holoborodko.com/pavel/2015/07/23/generating-equidistant-points-on-unit-disk/"/><link rel="alternate" type="application/rss+xml" href="http://www.holoborodko.com/pavel/feed/" title="Pavel Holoborodko Posts RSS feed" /><link rel="alternate" type="application/rss+xml" href="http://www.holoborodko.com/pavel/comments/feed/" title="Pavel Holoborodko Comments RSS feed" /><link rel="pingback" href="http://www.holoborodko.com/pavel/xmlrpc.php" /><link rel='dns-prefetch' href='//s.w.org' /> <script type="text/javascript">// // Google Analytics for WordPress by Yoast v4.2.3 | http://yoast.com/wordpress/google-analytics/ var _gaq = _gaq || []; _gaq.push(['_setAccount','UA-589790-3']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); //</script> <link rel="alternate" type="application/rss+xml" title="Pavel Holoborodko » Generating Equidistant Points on Unit Disk Comments Feed" href="http://www.holoborodko.com/pavel/2015/07/23/generating-equidistant-points-on-unit-disk/feed/" /> <script type="text/javascript">/*<![CDATA[*/window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/12.0.0-1\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/12.0.0-1\/svg\/","svgExt":".svg","source":{"concatemoji":"http:\/\/www.holoborodko.com\/pavel\/wp-includes\/js\/wp-emoji-release.min.js?ver=5.3.18"}}; !function(e,a,t){var n,r,o,i=a.createElement("canvas"),p=i.getContext&&i.getContext("2d");function s(e,t){var a=String.fromCharCode;p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,e),0,0);e=i.toDataURL();return p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,t),0,0),e===i.toDataURL()}function c(e){var t=a.createElement("script");t.src=e,t.defer=t.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(t)}for(o=Array("flag","emoji"),t.supports={everything:!0,everythingExceptFlag:!0},r=0;r<o.length;r++)t.supports[o[r]]=function(e){if(!p||!p.fillText)return!1;switch(p.textBaseline="top",p.font="600 32px Arial",e){case"flag":return s([127987,65039,8205,9895,65039],[127987,65039,8203,9895,65039])?!1:!s([55356,56826,55356,56819],[55356,56826,8203,55356,56819])&&!s([55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447],[55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447]);case"emoji":return!s([55357,56424,55356,57342,8205,55358,56605,8205,55357,56424,55356,57340],[55357,56424,55356,57342,8203,55358,56605,8203,55357,56424,55356,57340])}return!1}(o[r]),t.supports.everything=t.supports.everything&&t.supports[o[r]],"flag"!==o[r]&&(t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&t.supports[o[r]]);t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&!t.supports.flag,t.DOMReady=!1,t.readyCallback=function(){t.DOMReady=!0},t.supports.everything||(n=function(){t.readyCallback()},a.addEventListener?(a.addEventListener("DOMContentLoaded",n,!1),e.addEventListener("load",n,!1)):(e.attachEvent("onload",n),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&t.readyCallback()})),(n=t.source||{}).concatemoji?c(n.concatemoji):n.wpemoji&&n.twemoji&&(c(n.twemoji),c(n.wpemoji)))}(window,document,window._wpemojiSettings);/*]]>*/</script> <script type='text/javascript'>var AJAXCommentPreview = {"loading":"Loading\u2026","error":"Preview error","emptyString":"\u00a0","url":"http:\/\/www.holoborodko.com\/pavel\/wp-admin\/admin-ajax.php?action=ajax_comment_preview"};</script> <link rel='https://api.w.org/' href='http://www.holoborodko.com/pavel/wp-json/' /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.holoborodko.com/pavel/xmlrpc.php?rsd" /><link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.holoborodko.com/pavel/wp-includes/wlwmanifest.xml" /><link rel='prev' title='Computing Mixed Derivatives by Finite Differences' href='http://www.holoborodko.com/pavel/2014/11/04/computing-mixed-derivatives-by-finite-differences/' /><link rel="canonical" href="http://www.holoborodko.com/pavel/2015/07/23/generating-equidistant-points-on-unit-disk/" /><link rel='shortlink' href='http://wp.me/piexS-TH' /><link rel="alternate" type="application/json+oembed" href="http://www.holoborodko.com/pavel/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fwww.holoborodko.com%2Fpavel%2F2015%2F07%2F23%2Fgenerating-equidistant-points-on-unit-disk%2F" /><link rel="alternate" type="text/xml+oembed" href="http://www.holoborodko.com/pavel/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fwww.holoborodko.com%2Fpavel%2F2015%2F07%2F23%2Fgenerating-equidistant-points-on-unit-disk%2F&format=xml" /><link id='MediaRSS' rel='alternate' type='application/rss+xml' title='NextGEN Gallery RSS Feed' href='http://www.holoborodko.com/pavel/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/xml/media-rss.php' /><meta id="syntaxhighlighteranchor" name="syntaxhighlighter-version" content="3.1.3" /> <!--[if IE]><link rel="stylesheet" href="http://www.holoborodko.com/pavel/wp-content/themes/thematic/library/styles/ie.css" type="text/css" media="screen" /> <![endif]--></head><body class="wordpress y2024 m11 d25 h02 slug-generating-equidistant-points-on-unit-disk single postid-3453 s-y2015 s-m07 s-d23 s-h23 s-category-numeric-analysis s-category-programming s-author-admin unknown-os unknown-browser"><div id="wrapper" class="hfeed"><div id="header"><div id="branding"><div id="blog-title"><span><a href="http://www.holoborodko.com/pavel/" title="Pavel Holoborodko" rel="home">Pavel Holoborodko</a></span></div><div id="blog-description">Applied mathematics and beyond</div></div><div id="access"><div class="skip-link"><a href="#content" title="Skip navigation to the content">Skip to content</a></div><div class="menu"><ul id="nav" class="sf-menu"><li ><a href="http://www.holoborodko.com/pavel/">Home</a></li><li class="page_item page-item-12"><a href="http://www.holoborodko.com/pavel/mpfr/">MPFR C++</a></li><li class="page_item page-item-1413 page_item_has_children"><a href="http://www.holoborodko.com/pavel/numerical-methods/">Numerical Methods</a><ul class='children'><li class="page_item page-item-236 page_item_has_children"><a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-derivative/">Numerical Differentiation</a><ul class='children'><li class="page_item page-item-239"><a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-derivative/central-differences/">Central Differences</a></li><li class="page_item page-item-242"><a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-derivative/lanczos-low-noise-differentiators/">Low-noise Lanczos differentiators</a></li><li class="page_item page-item-245"><a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-derivative/smooth-low-noise-differentiators/">Smooth noise-robust differentiators</a></li></ul></li><li class="page_item page-item-679 page_item_has_children"><a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/">Numerical Integration</a><ul class='children'><li class="page_item page-item-1879"><a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/cubature-formulas-for-the-unit-disk/">Cubature formulas for the unit disk</a></li><li class="page_item page-item-2801"><a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/stable-newton-cotes-formulas/">Stable Newton-Cotes Formulas</a></li><li class="page_item page-item-2822"><a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/overlapped-newton-cotes-quadratures/">Overlapped Newton-Cotes Quadratures</a></li><li class="page_item page-item-3678"><a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/stable-newton-cotes-formulas-open-type/">Stable Newton-Cotes Formulas (Open Type)</a></li></ul></li><li class="page_item page-item-3645"><a href="http://www.holoborodko.com/pavel/numerical-methods/noise-robust-smoothing-filter/">Noise-robust smoothing filter</a></li></ul></li><li class="page_item page-item-1422 page_item_has_children"><a href="http://www.holoborodko.com/pavel/quicklatex/">QuickLaTeX</a><ul class='children'><li class="page_item page-item-3759"><a href="http://www.holoborodko.com/pavel/quicklatex/latex-fonts-quicklatex/">LaTeX Fonts in QuickLaTeX</a></li></ul></li><li class="page_item page-item-1689 page_item_has_children"><a href="http://www.holoborodko.com/pavel/image-processing/">Image Processing</a><ul class='children'><li class="page_item page-item-1660"><a href="http://www.holoborodko.com/pavel/image-processing/edge-detection/">Noise Robust Gradient Operators</a></li></ul></li><li class="page_item page-item-2"><a href="http://www.holoborodko.com/pavel/about/">About</a></li></ul></div></div></div><div id="main"><div id="container"><div id="content"><div id="nav-above" class="navigation"><div class="nav-previous"><a href="http://www.holoborodko.com/pavel/2014/11/04/computing-mixed-derivatives-by-finite-differences/" rel="prev"><span class="meta-nav">«</span> Computing Mixed Derivatives by Finite Differences</a></div><div class="nav-next"></div></div><div id="post-3453" class="hentry p1 post publish author-pavel-holoborodko category-numeric-analysis category-programming untagged y2015 m07 d23 h23 slug-generating-equidistant-points-on-unit-disk"><h1 class="entry-title">Generating Equidistant Points on Unit Disk</h1><div class="entry-meta"><span class="entry-date"><abbr class="published" title="2015-07-23T14:48:53+0900">July 23, 2015</abbr></span></div><div class="entry-content"><p>Recently I needed an algorithm to generate equidistant points inside the unit disk with some of them placed on the boundary (circle). To my surprise, quick search didn’t reveal any simple method for this. Below is obvious solution & code, hopefully it will save some time for others.</p><p>MATLAB code:</p><pre class="brush: matlabkey; title: ; notranslate" title=""> function [x, y, Nb, Np] = eqdisk(Nr) %EQDISK Generates equidistant points inside the unit disk. % Nr [in] - number of radial circles % x,y [out] - coordinates of generated points % Np [out] - total number of generated points % Nb [out] - points on boundary (on r = 1 circle) dR = 1/Nr; x(1) = 0; y(1) = 0; k = 1; for r = dR:dR:1 n = round(pi/asin(1/(2*k))); theta = linspace(0, 2*pi, n+1)'; x = [x; r.*cos(theta(1:n))]; y = [y; r.*sin(theta(1:n))]; k = k+1; end; Nb = n; Np = size(x,1); end </pre><p>Algorithm is based on the idea of placing the points on concentric circles with (near-) equal arc length between them. Here is some examples:</p><p><span id="more-3453"></span></p><div><div style="width:475px; float:left; text-align:justify;"> <img src="http://www.holoborodko.com/pavel/downloads/ud1.svg" width=475 alt="Nr=1" title="Equidistant points on unit disk, Nr=1"/></div><div style="float:right; width:475px; text-align:justify;"> <img src="http://www.holoborodko.com/pavel/downloads/ud2.svg" width=475 alt="Nr=2" title="Equidistant points on unit disk, Nr=2"/></div><p><br style="clear: both;" /></div><div><div style="width:475px; float:left; text-align:justify;"> <img src="http://www.holoborodko.com/pavel/downloads/ud3.svg" width=475 alt="Nr=3" title="Equidistant points on unit disk, Nr=3"/></div><div style="float:right; width:475px; text-align:justify;"> <img src="http://www.holoborodko.com/pavel/downloads/ud4.svg" width=475 alt="Nr=4" title="Equidistant points on unit disk, Nr=4"/></div><p><br style="clear: both;" /></div><div><div style="width:475px; float:left; text-align:justify;"> <img src="http://www.holoborodko.com/pavel/downloads/ud5.svg" width=475 alt="Nr=5" title="Equidistant points on unit disk, Nr=5"/></div><div style="float:right; width:475px; text-align:justify;"> <img src="http://www.holoborodko.com/pavel/downloads/ud10.svg" width=475 alt="Nr=10" title="Equidistant points on unit disk, Nr=10"/></div><p><br style="clear: both;" /></div><p style="margin-top:22px"> Note the “equilibrium” case, when we have the same number of points on boundary and inside the disk, Nr=3 (19/19).</p><div id="post-ratings-3453" class="post-ratings" itemscope itemtype="http://schema.org/Article" data-nonce="dd6ac1f776"><img id="rating_3453_1" src="http://www.holoborodko.com/pavel/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="1 Star" title="1 Star" onmouseover="current_rating(3453, 1, '1 Star');" onmouseout="ratings_off(4.9, 5, 0);" onclick="rate_post();" onkeypress="rate_post();" style="cursor: pointer; border: 0px;" /><img id="rating_3453_2" src="http://www.holoborodko.com/pavel/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="2 Stars" title="2 Stars" onmouseover="current_rating(3453, 2, '2 Stars');" onmouseout="ratings_off(4.9, 5, 0);" onclick="rate_post();" onkeypress="rate_post();" style="cursor: pointer; border: 0px;" /><img id="rating_3453_3" src="http://www.holoborodko.com/pavel/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="3 Stars" title="3 Stars" onmouseover="current_rating(3453, 3, '3 Stars');" onmouseout="ratings_off(4.9, 5, 0);" onclick="rate_post();" onkeypress="rate_post();" style="cursor: pointer; border: 0px;" /><img id="rating_3453_4" src="http://www.holoborodko.com/pavel/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="4 Stars" title="4 Stars" onmouseover="current_rating(3453, 4, '4 Stars');" onmouseout="ratings_off(4.9, 5, 0);" onclick="rate_post();" onkeypress="rate_post();" style="cursor: pointer; border: 0px;" /><img id="rating_3453_5" src="http://www.holoborodko.com/pavel/wp-content/plugins/wp-postratings/images/stars_crystal/rating_half.gif" alt="5 Stars" title="5 Stars" onmouseover="current_rating(3453, 5, '5 Stars');" onmouseout="ratings_off(4.9, 5, 0);" onclick="rate_post();" onkeypress="rate_post();" style="cursor: pointer; border: 0px;" /> (<strong>13</strong> votes, average: <strong>4.92</strong>)<br /><span class="post-ratings-text" id="ratings_3453_text"></span><meta itemprop="name" content="Generating Equidistant Points on Unit Disk" /><meta itemprop="headline" content="Generating Equidistant Points on Unit Disk" /><meta itemprop="description" content="Recently I needed an algorithm to generate equidistant points inside the unit disk with some of them placed on the boundary (circle). To my surprise, quick search didn't reveal any simple method for t..." /><meta itemprop="datePublished" content="2015-07-23T14:48:53+09:00" /><meta itemprop="dateModified" content="2015-07-23T16:06:55+09:00" /><meta itemprop="url" content="http://www.holoborodko.com/pavel/2015/07/23/generating-equidistant-points-on-unit-disk/" /><meta itemprop="author" content="Pavel Holoborodko" /><meta itemprop="mainEntityOfPage" content="http://www.holoborodko.com/pavel/2015/07/23/generating-equidistant-points-on-unit-disk/" /><div style="display: none;" itemprop="publisher" itemscope itemtype="https://schema.org/Organization"><meta itemprop="name" content="Pavel Holoborodko" /><meta itemprop="url" content="http://www.holoborodko.com/pavel" /><div itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="" /></div></div><div style="display: none;" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"><meta itemprop="bestRating" content="5" /><meta itemprop="worstRating" content="1" /><meta itemprop="ratingValue" content="4.92" /><meta itemprop="ratingCount" content="13" /></div></div><div id="post-ratings-3453-loading" class="post-ratings-loading"><img src="http://www.holoborodko.com/pavel/wp-content/plugins/wp-postratings/images/loading.gif" width="16" height="16" class="post-ratings-image" />Loading...</div></div></div><div id="nav-below" class="navigation"><div class="nav-previous"><a href="http://www.holoborodko.com/pavel/2014/11/04/computing-mixed-derivatives-by-finite-differences/" rel="prev"><span class="meta-nav">«</span> Computing Mixed Derivatives by Finite Differences</a></div><div class="nav-next"></div></div><div id="comments"><div id="comments-list" class="comments"><h3><span>One</span> Comment</h3><ol><li id="comment-161982" class="comment c c-y2018 c-m08 c-d11 c-h17 alt depth-1"><div class="comment-author vcard"> <span class="fn n"><a href="http://mixkino.net/" onclick="javascript:_gaq.push(['_trackEvent','outbound-commentauthor','http://mixkino.net/']);" rel='external nofollow ugc' class='url url'>Mixkino</a></span></div><div class="comment-meta">Posted August 11, 2018 at 8:40 am <span class="meta-sep">|</span> <a href="#comment-161982" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Tammes and Thomson problems can be considered as an extension for non-Platonic cases. For instance, see Math Overflow: Distributing points evenly on a sphere . Sadly, general solutions to these problems are not trivial.</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/2015/07/23/generating-equidistant-points-on-unit-disk/?replytocom=161982#respond' data-commentid="161982" data-postid="3453" data-belowelement="comment-161982" data-respondelement="respond" aria-label='Reply to Mixkino'>Reply</a></div></li></ol><div id="comments-nav-below" class="comment-navigation"><div class="paginated-comments-links"></div></div></div><div id="respond"><h3>Post a Comment</h3><div id="cancel-comment-reply"><a rel="nofollow" id="cancel-comment-reply-link" href="/pavel/2015/07/23/generating-equidistant-points-on-unit-disk/#respond" style="display:none;">Click here to cancel reply.</a></div><div class="formcontainer"><form id="commentform" action="http://www.holoborodko.com/pavel/wp-comments-post.php" method="post"><p id="comment-notes">Your email is <em>never</em> published nor shared.</p><div id="form-section-author" class="form-section"><div class="form-label"><label for="author">Name</label></div><div class="form-input"><input id="author" name="author" type="text" value="" size="30" maxlength="20" tabindex="3" /></div></div><div id="form-section-email" class="form-section"><div class="form-label"><label for="email">Email</label></div><div class="form-input"><input id="email" name="email" type="text" value="" size="30" maxlength="50" tabindex="4" /></div></div><div id="form-section-url" class="form-section"><div class="form-label"><label for="url">Website</label></div><div class="form-input"><input id="url" name="url" type="text" value="" size="30" maxlength="50" tabindex="5" /></div></div><div id="form-section-comment" class="form-section"><div class="form-label"><label for="comment">Comment</label></div><div class="form-textarea"><textarea id="comment" name="comment" cols="45" rows="8" tabindex="6"></textarea></div></div><div id="form-allowed-tags" class="form-section"><p><span>Use native LaTeX syntax to include formulas:</span> $ ... $, \[ ... \], <span>etc. Do not forget to preview comment before posting.</span></p><p><span>Also you may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: </span><a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong></p></div><p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="30bb40aed7" /></p><input name="acp-preview" type="button" id="acp-preview" tabindex="6" value="Preview" /><div id="ajax-comment-preview"></div><p style="clear: both;" class="subscribe-to-comments"> <input type="checkbox" name="subscribe" id="subscribe" value="subscribe" style="width: auto;" /> <label for="subscribe">Notify me of followup comments via e-mail</label></p><p style="display: none;"><input type="hidden" id="ak_js" name="ak_js" value="102"/></p><div class="form-submit"><input id="submit" name="submit" type="submit" value="Post Comment" tabindex="7" /><input type="hidden" name="comment_post_ID" value="3453" /></div> <input type='hidden' name='comment_post_ID' value='3453' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /></form><form action="" method="post"> <input type="hidden" name="solo-comment-subscribe" value="solo-comment-subscribe" /> <input type="hidden" name="postid" value="3453" /> <input type="hidden" name="ref" value="http://www.holoborodko.com/pavel/2015/07/23/generating-equidistant-points-on-unit-disk/" /><p class="solo-subscribe-to-comments"> Subscribe without commenting <br /> <label for="solo-subscribe-email">E-Mail: <input type="text" name="email" id="solo-subscribe-email" size="22" value="" /></label> <input type="submit" name="submit" value="Subscribe" /></p></form></div></div></div></div></div></div><div id="footer"><div id="siteinfo"> Powered by <a class="wp-link" href="http://WordPress.org/" title="WordPress" rel="generator">WordPress</a> with <a href="http://www.holoborodko.com/pavel/quicklatex/">QuickLaTeX</a>. Built on the <a class="theme-link" href="http://themeshaper.com/thematic-for-wordpress" title="Thematic Theme Framework" rel="designer">Thematic Theme Framework</a>.</div></div></div> <!-- ngg_resource_manager_marker --><script type='text/javascript' src='http://www.holoborodko.com/pavel/wp-includes/js/comment-reply.min.js?ver=5.3.18'></script> <script type='text/javascript'> /* <![CDATA[ */ var ratingsL10n = {"plugin_url":"http:\/\/www.holoborodko.com\/pavel\/wp-content\/plugins\/wp-postratings","ajax_url":"http:\/\/www.holoborodko.com\/pavel\/wp-admin\/admin-ajax.php","text_wait":"Please rate only 1 item at a time.","image":"stars_crystal","image_ext":"gif","max":"5","show_loading":"1","show_fading":"1","custom":"0"}; var ratings_mouseover_image=new Image();ratings_mouseover_image.src="http://www.holoborodko.com/pavel/wp-content/plugins/wp-postratings/images/stars_crystal/rating_over.gif";; /* ]]> */ </script> <script type='text/javascript' src='http://www.holoborodko.com/pavel/wp-content/plugins/wp-postratings/js/postratings-js.js?ver=1.87'></script> <script type='text/javascript' src='http://www.holoborodko.com/pavel/wp-includes/js/wp-embed.min.js?ver=5.3.18'></script> <script async="async" type='text/javascript' src='http://www.holoborodko.com/pavel/wp-content/plugins/akismet/_inc/form.js?ver=4.1.3'></script> <script type='text/javascript' src='http://www.holoborodko.com/pavel/wp-content/cache/autoptimize/js/autoptimize_single_488ca2f56c37f84283fc9be63219304f.js?ver=3.0.83c'></script> <script type='text/javascript' src='http://www.holoborodko.com/pavel/wp-content/cache/autoptimize/js/autoptimize_single_09792428d91aaa6494f2e033e34bb13f.js?ver=20091209'></script> <script type='text/javascript'>(function(){ var corecss = document.createElement('link'); var themecss = document.createElement('link'); var corecssurl = "http://www.holoborodko.com/pavel/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shCore.css?ver=3.0.83c"; if ( corecss.setAttribute ) { corecss.setAttribute( "rel", "stylesheet" ); corecss.setAttribute( "type", "text/css" ); corecss.setAttribute( "href", corecssurl ); } else { corecss.rel = "stylesheet"; corecss.href = corecssurl; } document.getElementsByTagName("head")[0].insertBefore( corecss, document.getElementById("syntaxhighlighteranchor") ); var themecssurl = "http://www.holoborodko.com/pavel/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shThemeDefault.css?ver=3.0.83c"; if ( themecss.setAttribute ) { themecss.setAttribute( "rel", "stylesheet" ); themecss.setAttribute( "type", "text/css" ); themecss.setAttribute( "href", themecssurl ); } else { themecss.rel = "stylesheet"; themecss.href = themecssurl; } //document.getElementById("syntaxhighlighteranchor").appendChild(themecss); document.getElementsByTagName("head")[0].insertBefore( themecss, document.getElementById("syntaxhighlighteranchor") ); })(); SyntaxHighlighter.config.strings.expandSource = '+ expand source'; SyntaxHighlighter.config.strings.help = '?'; SyntaxHighlighter.config.strings.alert = 'SyntaxHighlighter\n\n'; SyntaxHighlighter.config.strings.noBrush = 'Can\'t find brush for: '; SyntaxHighlighter.config.strings.brushNotHtmlScript = 'Brush wasn\'t configured for html-script option: '; SyntaxHighlighter.defaults['pad-line-numbers'] = true; SyntaxHighlighter.all();</script> <script src="http://stats.wordpress.com/e-202447.js" type="text/javascript"></script> <script type="text/javascript">st_go({blog:'4345820',v:'ext',post:'3453'}); var load_cmc = function(){linktracker_init(4345820,3453,2);}; if ( typeof addLoadEvent != 'undefined' ) addLoadEvent(load_cmc); else load_cmc();</script> <script defer src="http://www.holoborodko.com/pavel/wp-content/cache/autoptimize/js/autoptimize_e6852a14955f2394fbe3924e82d374a7.js"></script></body></html> <!-- Dynamic page generated in 0.080 seconds. --> <!-- Cached page generated by WP-Super-Cache on 2024-11-25 02:07:54 --> <!-- Compression = gzip -->