Shows how to create grapical objects to render lines and rectangles in 3D space.
1sdh=io.LoadPDB('sdh.pdb')
2helix=sdh.Select('rnum=75:78 and cname=A and aname=CA,C,N,O')
3res_a=helix.residues[0]
4res_b=helix.residues[-1]
5
6def MakePlane(name, pt1, pt2, pt3):
7 p1=[pt1, pt2, pt3, pt2+(pt1-pt2)+(pt3-pt2)]
8 c1=sum(p1)/4.0
9 p1=[c1+(p-c1)*1.5 for p in p1]
10 plane=gfx.Quad(name, *p1)
11 plane.SetLineWidth(1.0)
12 plane.SetFillColor(gfx.Color(0.3, 0.7, 0.3, 0.5))
13 scene.Add(plane)
14
15r1_n=res_a.FindAtom("N").pos
16r1_ca=res_a.FindAtom("CA").pos
17r1_c=res_a.FindAtom("C").pos
18MakePlane("Plane1", r1_n, r1_ca, r1_c)
19r2_ca=res_b.FindAtom("CA").pos
20r2_c=res_b.FindAtom("C").pos
21r2_o=res_b.FindAtom("O").pos
22MakePlane("Plane2", r2_ca, r2_c, r2_o)
23
24ca_dist=gfx.PrimList("Calpha dist")
25ca_dist.AddLine(r1_ca, r2_ca, gfx.GREEN)
26scene.Add(ca_dist)
27go=gfx.Entity('helix2', gfx.SIMPLE, helix)
28scene.Add(go)
29scene.SetBackground(gfx.WHITE)
30go.SetRenderMode(gfx.CUSTOM)
31scene.center=go.center