1 /* $Id: object_3d.hpp 103491 2007-05-04 17:18:18Z kazimird $ 2 * =========================================================================== 3 * 4 * PUBLIC DOMAIN NOTICE 5 * National Center for Biotechnology Information 6 * 7 * This software/database is a "United States Government Work" under the 8 * terms of the United States Copyright Act. It was written as part of 9 * the author's official duties as a United States Government employee and 10 * thus cannot be copyrighted. This software/database is freely available 11 * to the public for use. The National Library of Medicine and the U.S. 12 * Government have not placed any restriction on its use or reproduction. 13 * 14 * Although all reasonable efforts have been taken to ensure the accuracy 15 * and reliability of the software and data, the NLM and the U.S. 16 * Government do not and cannot warrant the performance or results that 17 * may be obtained by using this software or data. The NLM and the U.S. 18 * Government disclaim all warranties, express or implied, including 19 * warranties of performance, merchantability or fitness for any particular 20 * purpose. 21 * 22 * Please cite the author in any work or product based on this material. 23 * 24 * =========================================================================== 25 * 26 * Authors: Paul Thiessen 27 * 28 * File Description: 29 * holds 3d-objects - helix cylinders and strand bricks 30 * 31 * =========================================================================== 32 */ 33 34 #ifndef CN3D_OBJECT_3D__HPP 35 #define CN3D_OBJECT_3D__HPP 36 37 #include <objects/mmdb3/Residue_pntrs.hpp> 38 #include <objects/mmdb3/Cylinder.hpp> 39 #include <objects/mmdb3/Brick.hpp> 40 41 #include "structure_base.hpp" 42 #include "vector_math.hpp" 43 44 45 BEGIN_SCOPE(Cn3D) 46 47 class Object3D : public StructureBase 48 { 49 public: 50 static const int VALUE_NOT_SET; 51 int moleculeID, fromResidueID, toResidueID; 52 53 protected: 54 Object3D(StructureBase *parent, 55 const ncbi::objects::CResidue_pntrs& residues); 56 }; 57 58 class Helix3D : public Object3D 59 { 60 public: 61 Helix3D(StructureBase *parent, 62 const ncbi::objects::CCylinder& cylinder, const ncbi::objects::CResidue_pntrs& residues); 63 64 Vector Nterm, Cterm; 65 66 bool Draw(const AtomSet *data) const; 67 }; 68 69 class Strand3D : public Object3D 70 { 71 public: 72 Strand3D(StructureBase *parent, 73 const ncbi::objects::CBrick& brick, const ncbi::objects::CResidue_pntrs& residues); 74 75 Vector Nterm, Cterm, unitNormal; 76 77 bool Draw(const AtomSet *data) const; 78 }; 79 80 END_SCOPE(Cn3D) 81 82 #endif // CN3D_OBJECT_3D__HPP 83