Brep の内外判定を CurveBrepIntersect(xx と IsPointOnSurface(xx を組み合わせて行っていますが、十分ではないかもしれません。次回解説します。 generate_test_01
Category: coding
指定図形範囲内に指定数のランダムポイントを打つ
指定図形内 = たとえば敷地 generate_test_00
複数の特定場所から複数の特定場所への媒介度(passcount)計算
出発場所、目的場所をそれぞれ複数指定して、各出発場所から各目的場所まで(マルチ)最短経路で移動した場合の、通過回数(passcount)を各ノードに対して加算します。 graph_module_betweenness1 このサンプルは、出発ポイント群、と目的ポイント群を分けて入力しています。各ポイントそれぞれ最寄のノードを距離計測の出発ノード・目的ノードにしています。計算が終わった後の結果ソート、今回のケースではノードのリストをpasscountおn多い順、つまり降順に行うほうが、直感に即しているでしょう。これも同様、pythonではラムダ式ソートが可能ですので、非常に簡潔です。降順では reverseというキーのフラグをTrueにします。 こうすると、g.nodes というノードのインスタンスの入ったリストを、Nodeクラスの passcountというプロパティメンバーに対して降順ソートが行われ、ソート済みのリストが passscountrank に返ってきます。
複数の特定場所からのminisum計算
場所を複数指定して、そこからの距離の合計(sumdist)を各ノードに対して行います。 graph_module_minisum1 今回は、ポイントを複数入力して各ポイントそれぞれ最寄のノードを距離計測の出発点にしています。計算が終わった後、結果をソートする場合、今回のケースではノードのリスト Graph.nodes コード中では g.nodes をソートすることにあります。つまりクラスのインスタンスのリストをソートすることになりますが、pythonではラムダ式ソートが可能ですので、非常に簡潔です。 こうすると、g.nodes というノードのインスタンスの入ったリストを、Nodeクラスの sumdist というプロパティメンバーに対してソートが行われ、ソート済みのリストが minisumrank に返ってきます。
Rhino/GH-python Graph Module 勾配負荷設定(有向グラフ化)
一つ一つのエッジに対して、往路 復路 の距離を変更します。下のコードは勾配を求めるところまでで、勾配の値をどのように距離に変換するかは未記述です。すごく勾配負荷を影響させるか、ほどほどにするか、各自の関数(formula)を考えてください。 この関数を作ってエッジの重みを変更した後、Dijkstraでその経路選択に影響が出ます。またminisum, betweennessの計算にも影響があるはずです。
Rhino/GH-python Graph Module 評価関数サンプル(近接度)
評価関数サンプル(媒介度)の続きです。 有向グラフにおいてminisum評価の基になる、各ノードからの他のすべてのノードに行く距離の合計の求め方 有向グラフにおいてminisum評価の基になる、各ノードへの他のすべてのノードから来る距離の合計の求め方(超絶微妙な違いわかります?) 以下のように続ければ、数値の高いノードほどminisum近接性が高いということになります
Rhino/GH-python Graph Module
graph_1_0.py → Rhino-python / GH-Python 用のGraphモジュール version 1.0 です(重みつき有向グラフ、マルチショーテストパス対応フレーム)。スタジオ用拡張モジュール置き場の c:\MAsunit\ 直下にコピーし(始めてモジュールを追加する人はパスも通してください)、アップしてライノを再起動してください。 グラフの作り方は今のところ2通り。こちらサンプルです。 graph_module_test.zip TextDotとそれらをつないだCurveからインスタンスを作る方法(クラスGraphDot) つながったCurveからインスタンスを作る方法(クラスGraph, hclab. Street Viewに近い) 全ノードアクセス 全エッジアクセス 現在組み込んである関数は、ダイクストラ法による最短経路距離計算、ショーテストパス検出のみです。 g.Dijkstra(基点ノードのインスタンス) g.DijkstraFast(基点ノードのインスタンス) g.traceRoute(目的ノードのインスタンス) g.traceRoutesNode(目的ノードのインスタンス) g.traceRoutesEdge(目的ノードのインスタンス) シングルパスダイクストラ、各ノードまでのコスト シングルパスダイクストラ、トレースルート(ノードリスト取得) マルチパス対応ダイクストラ、トレースルート(ノードリスト取得、エッジリスト取得)
CGAL wrap for rhino-python (through ctypes) Beta
Here just 2 functions (2d alpha shape and weighted voronoi diagram) wrapping from CGAL, combining rhino script functions. cgal_wrap.zip your script should be in the same folder How to use (2d weighted voronoi diagram, It would work on Gh-Python as well.): How to use (2d alpha shape, It would work on Gh-Python as well.) for developer: here source code and project file(qmake) cgal_wrapping_cpp requires: visual studio 2012 express, Qt 5.2 (64bit), CGAL-4.4, gmtl, mpfr, mpir, boost-1_55_0 It is still beta version and just for testing. I appreciate for your modification, adding more effective CGAL functions.
グラフ理論におけるネットワークの中心性(実装) / centrality of network (graph theory), implementation
network_evaluation.zip Dijkstra’s algorithm(finding shortest path) is very core of centrality evaluation. please refer to past post “centrality of network (graph theory)” 中心性を評価する過程で頻繁に使われるのがダイクストラ法(最短ルート検索)です。 ネットワークの中心性についてはこちらのポストも参照して下さい。
pseudocode or flowchart / 擬似コード もしくは フローチャート
flow_chart_sample_2014.pdf For next pin-up, please try to add pseudocode or flowchart of your system. I think flow chart will fit you. This might be better to write down before coding. Still, It is good to give clear direction for your system, and very strong tool for presentation. There is sort of standard grammar-syntax.But just try to describe it in your style for beginning. 次回のピンナップには、各自で作っているシステムの擬似コード もしくは フローチャートを作ってきてください。今回はフローチャートのほうが良いと思います。コードを書く前に作ったほうが良い場合もありますが、今やろうとしていることの方向性の整理、実装の手助け、またプレゼンテーションにも有効です。コンピュータプログラミングのためのなんとなく標準的な書き方がありますが、まずは各自思うとおりにやってみてください。






