Dynagon代码阅读感想
因为要做动态网络生成,于是去github找代码,看到这个dynagon比较对的上眼,于是clone下来慢慢研究。
链接:https://github.com/lanius/dynagon
于是我发现这个真的是写的好棒好棒,C#写的真是漂亮啊,让我见识到了delegate,lambda表达式,select,order,sort,aggregate,泛型,LIST,还有封装的种种。
看到triangulator那一块的时候遇到了Delaunay三角划分算法,没有补算法的情况下真是看不下去了。但是已经觉得学到了很多很多的东西。
简单举一个例子吧,之前我如果要取几个点的中心点的话,撸出来的代码丑的要死。这边两行搞定了:
protected Vector3 GetCentroid() { var uniqs = vertices.Distinct(); return uniqs.Aggregate(Vector3.zero, (sum, v) => (sum + v)) / uniqs.Count(); }
多么漂亮,多么简洁
虽然这个包写的相当漂亮,以至于需要用的话只需要
var vertices = new List<Vector3>() { new Vector3(0f, 1f, 0f), new Vector3(0f, -0.3f, 0.9f), new Vector3(0.8f, -0.3f, -0.5f), new Vector3(-0.8f, -0.3f, -0.5f) }; Factory.Create(vertices);
就可以搞定了,但是阅读代码的过程实在太享受了。