亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS開發之隨機生成兩圓之間的標準圓

2020-07-26 02:57:59
字體:
來源:轉載
供稿:網友

前言

相信很多社交產品中,肯定會存在尋找附近人或者附近商家的需求,類似下圖,在大圓和小圓之間(橘色區域)生成一系列的隨機圓,并且所有隨機圓之間也不能有交集,我暫且稱這種圓為標準圓。

關于這樣的需要以前在做項目中有同事做過,雖然可以實現了上面的效果圖,但是坐標及半徑都是寫死,從寫死的數據隨機取值,看上去是滿足了,但是對于用戶來說多次使用該功能時,肯定有一定的視覺疲倦,且寫死的一些數據真的不好寫,如果大圓或者小圓半徑變化了,或者需要更多的標準圓,那怎么辦呢?一臉懵逼????

實現思路

思路一:

對于這個需求,我一開始也陷入了寫死數據的套路,但是在兼容大小圓半徑上做了一定的兼容,大致的將大圓切分成 9塊 ,然后在除了中間區域外的8塊區域再生成一系列的偽標準圓。然后取值時現隨機選取8塊區域,再隨機從塊區拿取 偽標準圓 :

很明顯,在 1、3、6、8 塊中及中間塊 存在很大的誤差,明顯也不可取

思路二:

根據數學思路,尋找標準圓:

1、在大圓內部生成 隨機圓1 ,也就是生成內含圓:(其中只有圓1才是該步驟所需要的 隨機圓1 )

對應的數學公式,當圓心距小于兩圓半徑之差時 兩圓內含:

大圓中心坐標為(px1、py1),半徑為R; 隨機圓中心坐標為(px2、py2),半徑為r

Objective-c代碼如下:

 // 1: 判斷隨機生成的 圓 包含在 self 這個大圓內部 if ( sqrt(pow(self.center.x - randomCPX, 2) + pow(self.frame.size.height / 2 - randomCPY, 2)) < (R - r) ) {  }

2、從第1步得到的隨機圓1中,篩選出和小圓不相交 隨機圓2 :(其中只有圓1才是該步驟所需要的 隨機圓2 )

對應的數學公式,當圓心距大于兩圓半徑之和時 兩圓外離:

小圓中心坐標為(px1、py1),半徑為Rr; 隨機圓 中心坐標為(px2、py2),半徑為r

Objective-c代碼如下:

 // 2: 判斷隨機生成的 圓 不在 中間 這個圓 不能重合, 即得到兩個圓之間的小圓  if (sqrt(pow(self.center.x - randomCPX, 2) + pow(self.frame.size.height / 2 - randomCPY, 2)) > (Rr + r)) {  }

3、從第2步得到的隨機圓2中,篩選出和已存在的 標準圓 不相交 隨機圓3 , 隨機圓3 即我們所需要的 標準圓 (其中圓2是已經存在的 標準圓 ,那么只有圓1才是該步驟所需要的 隨機圓3 )

對應的數學公式,當圓心距小于兩圓半徑之和時 兩圓相交或兩圓內含,隨機圓2應該廢棄:

存在的標準圓中心坐標為(px、py),半徑為rr; 隨機圓中心坐標為(px2、py2),半徑為r

Objective-c代碼如下:

// 3: 新生成的 圓 和已經存在的 圓 不能重合 BOOL success = YES;for (NSValue *value in randomCircleInfos) { CircleInfo circle;  [value getValue:&circle];  // 只要新生成的 圓 和 任何一個存在的 圓 有交集,則失敗 if (sqrt(pow(circle.center.x - randomCPX, 2) + pow(circle.center.y - randomCPY, 2)) <= (circle.radius + r)) {  success = NO; break ; }}if (success) { [randomCircleInfos addObject:[self standardCircle:randomCPX centerY:randomCPY radius:r]];}為了尋找 8 個標準圓一共生成了 53 個隨機圓 生成了 29 個在大圓內部的圓 生成了 9 個在大圓內部的圓且不與中圓有交集的圓 為了尋找 8 個標準圓一共生成了 38 個隨機圓 生成了 28 個在大圓內部的圓 生成了 10 個在大圓內部的圓且不與中圓有交集的圓

只要通過這三步成功后,即得到了我們所要的標準圓,從算法的時間復雜度看 ,得到標準圓的復雜度為O(n*n),對于小量了標準圓來說,速度是非??斓模海ó斎恍噬线€由隨機圓的半徑有關系)

為了尋找 8 個標準圓一共生成了 53 個隨機圓 生成了 29 個在大圓內部的圓 生成了 9 個在大圓內部的圓且不與中圓有交集的圓  為了尋找 8 個標準圓一共生成了 38 個隨機圓 生成了 28 個在大圓內部的圓 生成了 10 個在大圓內部的圓且不與中圓有交集的圓

但是在產生大量的標準圓上,隨機生成的總量會非常大:(可以考慮將隨機圓半徑減少,或者生成該頁面之前,提前生成好這些標準圓相關數據:即圓心坐標和半徑)

為了尋找 30 個標準圓 一共生成了 233220 個隨機圓 生成了 138095 個在大圓內部的圓 生成了 40287 個在大圓內部的圓且不與中圓有交集的圓

最后給出最終成果圖:

對應的log日志:

為了尋找 9 個標準圓 一共生成了 127 個隨機圓 生成了 75 個在大圓內部的圓 生成了 20 個在大圓內部的圓且不與中圓有交集的圓為了尋找 12 個標準圓 一共生成了 265 個隨機圓 生成了 150 個在大圓內部的圓 生成了 40 個在大圓內部的圓且不與中圓有交集的圓 為了尋找 23 個標準圓 一共生成了 5181 個隨機圓 生成了 3112 個在大圓內部的圓 生成了 909 個在大圓內部的圓且不與中圓有交集的圓

源碼下載:點擊這里

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品欧美国产精品忘忧草| 91在线直播亚洲| 日韩成人av网址| 欧美中文在线免费| 欧美亚洲视频一区二区| wwwwwwww亚洲| 亚洲国产毛片完整版| 中日韩美女免费视频网址在线观看| 亚洲欧美www| 91在线观看欧美日韩| 久久久亚洲欧洲日产国码aⅴ| 欧美性jizz18性欧美| 久久久久国产精品www| 亚洲男人的天堂在线播放| 亚洲夜晚福利在线观看| 亚洲成色777777在线观看影院| 91免费福利视频| 68精品国产免费久久久久久婷婷| 韩国日本不卡在线| 久久久久久久久久久免费| 一区二区三区日韩在线| 高跟丝袜一区二区三区| 欧美激情在线播放| 成人做爰www免费看视频网站| 成人午夜在线观看| 尤物yw午夜国产精品视频| 精品久久久av| 色妞在线综合亚洲欧美| 亚洲人午夜精品| 国产精品夜色7777狼人| 中文字幕亚洲一区二区三区五十路| 日本成人黄色片| 欧美性猛交xxxx乱大交3| 全球成人中文在线| 亚洲日本中文字幕免费在线不卡| 久久久久久12| 久久久国产91| 91亚洲精品久久久| 精品国产一区二区三区久久狼5月| 日韩的一区二区| 精品欧美一区二区三区| 欧美国产日韩在线| y97精品国产97久久久久久| 国产精品视频精品| 久久99精品久久久久久噜噜| 日韩电影在线观看永久视频免费网站| 成人久久久久爱| 亚洲欧美中文日韩在线v日本| 久久久精品免费视频| 97视频在线观看成人| 欧美亚洲视频在线看网址| 日韩中文字幕免费视频| 亚洲综合在线中文字幕| 欧美在线一区二区三区四| 国产精品欧美一区二区| 欧美交受高潮1| 综合激情国产一区| 欧美日韩亚洲成人| 国产精品入口尤物| 国产成+人+综合+亚洲欧洲| 国产欧美精品一区二区三区-老狼| 日本a级片电影一区二区| 欧美电影第一页| 操日韩av在线电影| 亚洲人a成www在线影院| 国产日本欧美在线观看| 亚洲福利视频网| 久久天天躁狠狠躁夜夜躁| 亚洲天堂网站在线观看视频| 欧美日韩一区二区三区在线免费观看| 亚洲国产成人久久综合| 成人情趣片在线观看免费| 日本人成精品视频在线| 亚洲精品自产拍| 日韩中文字幕在线精品| 亚洲欧美日韩天堂一区二区| 国产精品一区电影| 91美女片黄在线观| 久久久亚洲成人| 欧美丝袜第一区| 亚洲精品久久久久| 俺去啦;欧美日韩| 欧美久久精品一级黑人c片| 欧美日韩一区二区免费在线观看| zzijzzij亚洲日本成熟少妇| 欧洲美女免费图片一区| 亚洲 日韩 国产第一| 亚洲国产美女久久久久| 日本不卡视频在线播放| 久久久91精品国产一区不卡| 中文日韩电影网站| 久久视频免费观看| 国内精品国产三级国产在线专| 欧美性在线视频| 欧美激情久久久久久| 日本高清+成人网在线观看| 最近2019免费中文字幕视频三| 久久亚洲综合国产精品99麻豆精品福利| 亚洲欧美日韩直播| 伊人久久精品视频| 国产精品久久久久久久一区探花| 国产69精品99久久久久久宅男| 国模精品系列视频| 2019中文字幕在线免费观看| 日韩免费在线电影| 狠狠爱在线视频一区| 国产精品久久久久9999| 综合久久五月天| 日韩精品在线免费观看视频| 清纯唯美日韩制服另类| 久久久av一区| 久久久久久这里只有精品| 国产成人综合亚洲| 国产精品久久久久久久9999| 97精品一区二区三区| 亚洲色图18p| 韩曰欧美视频免费观看| 久久精品视频导航| 美日韩在线视频| 668精品在线视频| 欧美人与物videos| 日韩在线视频网| 久久久国产一区二区三区| xvideos国产精品| 久久99视频精品| 亚洲资源在线看| 日韩欧美在线看| 亚洲第一av网| 亚洲欧美另类在线观看| 中文字幕国产亚洲| 日韩精品在线私人| 最近更新的2019中文字幕| 国产成人精品久久| 中文字幕欧美日韩在线| 日韩在线视频免费观看高清中文| 都市激情亚洲色图| 欧美www视频在线观看| 成人久久久久爱| 中文字幕精品在线| 亚洲bt天天射| 国产精品美乳一区二区免费| 欧日韩在线观看| 日韩理论片久久| 成人激情在线播放| 国产亚洲精品91在线| 91麻豆国产语对白在线观看| 78m国产成人精品视频| 欧美日韩精品在线视频| 日韩高清a**址| 日韩精品日韩在线观看| 国产女精品视频网站免费| 97人人模人人爽人人喊中文字| 国产一区二区三区直播精品电影| 91久久国产婷婷一区二区| 日韩在线播放一区| 国产精品精品一区二区三区午夜版| 欧美极品少妇xxxxⅹ裸体艺术| 91精品啪aⅴ在线观看国产| 亚洲精品乱码久久久久久按摩观| 欧美精品激情blacked18| 久久亚洲一区二区三区四区五区高| 日韩中文娱乐网| 精品呦交小u女在线| 国产精品狼人色视频一区|