BNNのprocessing本のようなアウトプットをいい感じに作る
Processing:ビジュアルデザイナーとアーティストのためのプログラミング入門
- 作者: ベン・フライ,ケイシー・リース,中西泰人,安藤幸央,澤村正樹,杉本達應
- 出版社/メーカー: ビー・エヌ・エヌ新社
- 発売日: 2015/09/20
- メディア: 単行本
- この商品を含むブログを見る
これみたいなやつをいい感じに作りたい。
なお、この本は高すぎるので買わない。
任意の点から1番目と2番目に近い点を探すのにどうしようかと思ってたけど力技で解決しようと思う。
任意の点から全ての点の距離を求める→ソートする→そこから一番短い距離を2つ求める→それの距離にある点をもう一度探す
という感じで探す。
int NUM = 1000; PVector[] vectors = new PVector[NUM]; void setup(){ size(800,800); smooth(); for(int i = 0; i <NUM ; i++){ float w = random(width); float h = random(height); vectors[i] = new PVector(w,h); } } void draw(){ background(30); stroke(200,250,255,50); strokeWeight(2); nns(); } void nns(){ for(int j = 0; j<vectors.length;j++){ float[] distances = new float[vectors.length-1]; for(int i = 0;i<vectors.length-1;i++){ distances[i] = dist(vectors[j].x,vectors[j].y,vectors[i].x,vectors[i].y); } distances = sort(distances); float saitan1 = distances[1]; float saitan2 = distances[2]; for(int i = 0; i<vectors.length-1;i++){ if(dist(vectors[j].x,vectors[j].y,vectors[i].x,vectors[i].y) == saitan1){ line(vectors[j].x,vectors[j].y,vectors[i].x,vectors[i].y); } } for(int i = 0; i<vectors.length-1;i++){ if(dist(vectors[j].x,vectors[j].y,vectors[i].x,vectors[i].y) == saitan2){ line(vectors[j].x,vectors[j].y,vectors[i].x,vectors[i].y); } } } }
- 詰まったところ・・・最短距離は自身から自身までのゼロが最短だったので最短から1個2個のところを探さなくてはいけなかった
出力結果
なんか違う・・