生物信息资源更新越来越快,使用可视化的方法来分析DNA序列已成为生物信息学的一个研究热点,用图形表示DNA序列的方法也越来越成熟。2011年,著名杂志《Science》发表一篇引起轰动的文章:《Presenting the Human Genome:Now is 3D!》,这篇文章全然给我们描写叙述了人类基因组測序未来的蓝图,可见3D技术在非常多领域都是发展方向。

当然简单的呈现DNA分子结构,不过一部分功能,假设将mono和专业的DNA分析仪结合。不仅能够发现病症。更重要的是预測病症的发生,治病于未发,这将是人类的福音。除了研究人类基因之外,我们还能够对农作物的进行DNA3D模型化,并加以分析。对农业的发展和粮食安全方面都会有积极的意义。

使用mono创建3D模型最大的特点就是快。代码只是几十行,使用Editor更是不须要代码量。

本文的效果图通过代码实现。核心代码例如以下:




​1​

​function createDNA(box, x, y, z, colors){​


​2​

​var count=​​​​20​​​​+Math.random()*​​​​50​​​​;​


​3​

​var dist=​​​​50​​​​;​


​4​

​var parent=createNode(box, ​​​​10​​​​, ​​​​0​​​​,​​​​0​​​​,​​​​0​​​​,​​​​'red'​​​​);​


​5​

​for​​​​(var i=​​​​0​​​​;i<count;i++){               ​


​6​

​var angle=Math.PI*​​​​2​​​​/​​​​360​​​​*​​​​15​​​​*i;​


​7​

​var radius = (i % ​​​​2​​​​==​​​​0​​​​) ?​

​10​​ ​​: ​​​​7​​​​;​



​8​

​var color = colors[i%​​​​2​​​​]​


​9​

​var node1=createPairNode(box, dist, radius, i, angle, color);​


​10​

​var node2=createPairNode(box, dist*​​​​0.3​​​​, radius, i, angle, color);​


​11​

​node1.setParent(parent);​


​12​

​node2.setParent(parent);​


​13​

 


​14​

​if​​​​(i % ​​​​2​​​​==​​​​0​​​​){​


​15​

​var link=createLink(box, node1, node2, dist, angle, ​​​​'gray'​​​​);​


​16​

​var node3=createPairNode(box, dist*​​​​0.58​​​​, radius*​​​​0.4​​​​, i, angle,​​​​'cyan'​​​​);​


​17​

​var node4=createPairNode(box, dist*​​​​0.72​​​​, radius*​​​​0.4​​​​, i, angle,​​​​'cyan'​​​​);​


​18​

​link.setParent(parent);​


​19​

​node3.setParent(parent);​


​20​

​node4.setParent(parent);​


​21​

​}​


​22​

​}​


​23​

​parent.setPosition(x,y,z);​


​24​

​parent.setStyle(​​​​'m.visible'​​​​,​​​​false​​​​);​


​25​

​return​​ ​​parent;​


​26​

​}​




​1​

​function createPairNode(box, size, radius, index, angle, color){​


​2​

​var x=size*Math.sin(angle);​


​3​

​var z=size*Math.cos(angle);​


​4​

​var y=index * ​​​​10​​​​;                      ​


​5​

​var node = createNode(box, radius, x, y, z, color);​


​6​

​return​​ ​​node;​


​7​

​}​