⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vrml_2_ostream.h

📁 CGAL is a collaborative effort of several sites in Europe and Israel. The goal is to make the most i
💻 H
字号:
// Copyright (c) 1997  Utrecht University (The Netherlands),// ETH Zurich (Switzerland), Freie Universitaet Berlin (Germany),// INRIA Sophia-Antipolis (France), Martin-Luther-University Halle-Wittenberg// (Germany), Max-Planck-Institute Saarbruecken (Germany), RISC Linz (Austria),// and Tel-Aviv University (Israel).  All rights reserved.//// This file is part of CGAL (www.cgal.org); you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public License as// published by the Free Software Foundation; version 2.1 of the License.// See the file LICENSE.LGPL distributed with CGAL.//// Licensees holding a valid commercial license may use this file in// accordance with the commercial license agreement provided with the software.//// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.//// $Source: /CVSROOT/CGAL/Packages/Inventor/include/CGAL/IO/VRML_2_ostream.h,v $// $Revision: 1.16 $ $Date: 2004/05/14 21:17:43 $// $Name:  $//// Author(s)     : Andreas Fabri//                 Lutz Kettner <kettner@inf.ethz.ch>//                 Herve Bronnimann//                 Mariette Yvinec <Mariette.Yvinec@sophia.inria.fr>#ifndef CGAL_IO_VRML_2_OSTREAM_H#define CGAL_IO_VRML_2_OSTREAM_H#include <CGAL/basic.h>#include <iostream>CGAL_BEGIN_NAMESPACEclass VRML_2_ostream {public:    VRML_2_ostream()           : m_os(0)  {}    VRML_2_ostream(std::ostream& o) : m_os(&o) { header();}    ~VRML_2_ostream()  { close(); }    void open(std::ostream& o)   { m_os = &o; header(); }    void close() {        if ( m_os)            footer();        m_os = 0;    }    typedef const void* Const_void_ptr;    operator Const_void_ptr () const {        if ( m_os)            return *m_os;        return 0;    }    std::ostream& os() {        // The behaviour if m_os == 0 could be changed to return        // cerr or a file handle to /dev/null. The latter one would        // mimick the behaviour that one can still use a stream with        // an invalid stream, but without producing any output.        CGAL_assertion( m_os);        return *m_os;    }private:    void header() {        os() << "#VRML V2.0 utf8\n"                "# File written with the help of the CGAL Library\n"                "#-- Begin of file header\n"                "Group {\n"                "    children [\n"                "        Shape {\n"                "          appearance DEF A1 Appearance {\n"                "            material Material {\n"                "              diffuseColor .6 .5 .9\n"                "            }\n         }\n"                "            appearance\n"                "                Appearance {\n"                "                    material DEF Material Material {}\n"                "                }\n"                "            geometry NULL\n"                "        }\n"                "        #-- End of file header" << std::endl;    }    void footer() {        os() << "        #-- Begin of file footer\n"                "    ]\n"                "}\n"                "#-- End of file footer" << std::endl;    }    std::ostream*  m_os;};VRML_2_ostream&operator<<(VRML_2_ostream& os,           const char* s){  os.os() << s;  return os;}VRML_2_ostream&operator<<(VRML_2_ostream& os,           const double& d){  os.os() << d;  return os;}CGAL_END_NAMESPACE#endif // CGAL_IO_VRML_2_OSTREAM_H#ifdef CGAL_TETRAHEDRON_3_H#ifndef CGAL_IO_VRML_2_TETRAHEDRON_3#define CGAL_IO_VRML_2_TETRAHEDRON_3CGAL_BEGIN_NAMESPACEtemplate <class R >VRML_2_ostream&operator<<(VRML_2_ostream& os,           const Tetrahedron_3<R > &t){  const char *Indent = "                                    ";  os <<      "        Group {\n"             "            children [\n"             "                Shape {\n"             "                    appearance\n"             "                        Appearance {\n"             "                            material USE Material\n"             "                        } #Appearance\n"             "                    geometry\n"             "                        IndexedFaceSet {\n"             "                            coord Coordinate {\n"             "                                point [ \n"          << Indent << "point [\n"          << Indent << "  "          << CGAL::to_double(t[0].x()) << " "          << CGAL::to_double(t[0].y()) << " "          << CGAL::to_double(t[0].z()) << " ,\n"          << Indent << "  "          << CGAL::to_double(t[1].x()) << " "          << CGAL::to_double(t[1].y()) << " "          << CGAL::to_double(t[1].z()) << " ,\n"          << Indent << "  "          << CGAL::to_double(t[2].x()) << " "          << CGAL::to_double(t[2].y()) << " "          << CGAL::to_double(t[2].z()) << " ,\n"          << Indent << "  "          << CGAL::to_double(t[3].x()) << " "          << CGAL::to_double(t[3].y()) << " "          << CGAL::to_double(t[3].z()) << " ]"             "\n                                ]\n"             "                            }\n"             "                            solid   FALSE\n"          << Indent << "coordIndex  [ 0,1,2,-1, 1,3,2,-1,\n"          << Indent << "              0,2,3,-1, 0,3,1,-1 ]\n"             "                        } #IndexedFaceSet\n"             "                } #Shape\n"             "            ] #children\n"             "        } #Group\n";  return os;}CGAL_END_NAMESPACE#endif // CGAL_IO_VRML_2_TETRAHEDRON_3#endif // CGAL_TETRAHEDRON_3_H#ifdef CGAL_POINT_3_H#ifndef CGAL_IO_VRML_2_POINT_3#define CGAL_IO_VRML_2_POINT_3CGAL_BEGIN_NAMESPACEtemplate <class R >VRML_2_ostream&operator<<(VRML_2_ostream& os,           const Point_3<R > &p){  const char *Indent = "                                    ";  os <<      "        Group {\n"             "            children [\n"             "                Shape {\n"             "                    appearance USE A1\n"             "                    geometry\n"             "                        PointSet {\n"             "                            coord Coordinate {\n"             "                                point [ ";  os << CGAL::to_double(p.x()) << " " << CGAL::to_double(p.y())      << " " << CGAL::to_double(p.z()) << " ]\n";  os << Indent << "}\n";  os << Indent << "} # PointSet\n";  os << "                } #Shape\n"        "            ] #children\n"        "        } #Group\n";  return os;}CGAL_END_NAMESPACE#endif // CGAL_IO_VRML_2_POINT_3#endif // CGAL_POINT_3_H#ifdef CGAL_TRIANGLE_3_H#ifndef CGAL_IO_VRML_2_TRIANGLE_3#define CGAL_IO_VRML_2_TRIANGLE_3CGAL_BEGIN_NAMESPACEtemplate <class R >VRML_2_ostream&operator<<(VRML_2_ostream& os,           const Triangle_3<R > &t){  const char *Indent = "                                    ";  os <<      "        Group {\n"             "            children [\n"             "                Shape {\n"             "                    appearance USE A1\n"             "                    geometry\n"             "                        IndexedLineSet {\n"             "                            coord Coordinate {\n"             "                                point [ \n";  os << Indent ;  os << CGAL::to_double(t[0].x()) << " " << CGAL::to_double(t[0].y())      << " " << CGAL::to_double(t[0].z()) << ",\n";  os << Indent;  os << CGAL::to_double(t[1].x()) << " " << CGAL::to_double(t[1].y())      << " " << CGAL::to_double(t[1].z()) << ",\n";  os << Indent;  os << CGAL::to_double(t[2].x()) << " " << CGAL::to_double(t[2].y())      << " " << CGAL::to_double(t[2].z()) << " ]\n";  os << Indent << "}\n" << Indent << "coordIndex [ 0 1, 1 2, 2 0 -1 ]\n";  os << Indent << "} # IndexedLineSet\n";  os << "                } #Shape\n"        "            ] #children\n"        "        } #Group\n";  return os;}CGAL_END_NAMESPACE#endif // CGAL_IO_VRML_2_TRIANGLE_3#endif // CGAL_TRIANGLE_3_H#ifdef CGAL_SEGMENT_3_H#ifndef CGAL_IO_VRML_2_SEGMENT_3#define CGAL_IO_VRML_2_SEGMENT_3CGAL_BEGIN_NAMESPACEtemplate <class R >VRML_2_ostream&operator<<(VRML_2_ostream& os,           const Segment_3<R > &s){  const char *Indent = "                                    ";  os <<      "        Group {\n"             "            children [\n"             "                Shape {\n"             "                    appearance USE A1\n"             "                    geometry\n"             "                        IndexedLineSet {\n"             "                            coord Coordinate {\n"             "                                point [ \n";  os << Indent << CGAL::to_double(s.source().x());  os << " " << CGAL::to_double(s.source().y())      << " " << CGAL::to_double(s.source().z()) << ",\n";  os << Indent;  os << CGAL::to_double(s.target().x())     << " " << CGAL::to_double(s.target().y())      << " " << CGAL::to_double(s.target().z()) << " ]\n";  os << Indent << "}\n" << Indent << "coordIndex [ 0 1 -1 ]\n";  os << Indent << "} # IndexedLineSet\n";  os << "                } #Shape\n"        "            ] #children\n"        "        } #Group\n";  return os;}CGAL_END_NAMESPACE#endif // CGAL_IO_VRML_2_SEGMENT_3#endif // CGAL_SEGMENT_3_H#ifdef CGAL_SPHERE_3_H#ifndef CGAL_IO_VRML_2_SPHERE_3#define CGAL_IO_VRML_2_SPHERE_3CGAL_BEGIN_NAMESPACEtemplate <class R >VRML_2_ostream&operator<<(VRML_2_ostream& os,           const Sphere_3<R > &s){  os <<      "        Group {\n"             "            children [\n"             "              Transform {\n"             "                translation ";  os <<      CGAL::to_double(s.center().x()) << " "      <<      CGAL::to_double(s.center().y()) << " "     <<      CGAL::to_double(s.center().z()) << "\n";  os <<      "                children Shape {\n"             "                    appearance USE A1\n"             "                    geometry\n"             "                        Sphere { "             "radius ";  os <<      ::sqrt(CGAL::to_double(s.squared_radius())) <<" }\n";  os <<      "                } #children Shape\n"             "              } # Transform\n"             "            ] #children\n"             "        } #Group\n";  return os;}CGAL_END_NAMESPACE#endif // CGAL_IO_VRML_2_SEGMENT_3#endif // CGAL_SPHERE_3_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -