Shows how to create grapical objects to render lines and rectangles in 3D space.
sdh=io.LoadPDB('sdh.pdb')
helix=sdh.Select('rnum=75:78 and cname=A and aname=CA,C,N,O')
res_a=helix.residues[0]
res_b=helix.residues[-1]
def MakePlane(name, pt1, pt2, pt3):
p1=[pt1, pt2, pt3, pt2+(pt1-pt2)+(pt3-pt2)]
c1=sum(p1)/4.0
p1=[c1+(p-c1)*1.5 for p in p1]
plane=gfx.Quad(name, *p1)
plane.SetLineWidth(1.0)
plane.SetFillColor(gfx.Color(0.3, 0.7, 0.3, 0.5))
scene.Add(plane)
r1_n=res_a.FindAtom("N").pos
r1_ca=res_a.FindAtom("CA").pos
r1_c=res_a.FindAtom("C").pos
MakePlane("Plane1", r1_n, r1_ca, r1_c)
r2_ca=res_b.FindAtom("CA").pos
r2_c=res_b.FindAtom("C").pos
r2_o=res_b.FindAtom("O").pos
MakePlane("Plane2", r2_ca, r2_c, r2_o)
ca_dist=gfx.PrimList("Calpha dist")
ca_dist.AddLine(r1_ca, r2_ca, gfx.GREEN)
scene.Add(ca_dist)
go=gfx.Entity('helix2', gfx.SIMPLE, helix)
scene.Add(go)
scene.SetBackground(gfx.WHITE)
go.SetRenderMode(gfx.CUSTOM)
scene.center=go.center