Skip to content
Snippets Groups Projects
Commit c6462029 authored by marco's avatar marco
Browse files

added unit tests for entity POV export

the unit tests use a set of gold standard files that are then
compared to the output of gfx::Scene::Instance().ExportPov().
This assumes that there are no differences due to errors in
floating point arithmetic.

If floating point errors tend to show on some of the platforms,
we  will have find another way to check the correctness of the
POV export.

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@1860 5a81b35b-ba03-0410-adc8-b2c5c5119f08
parent b04be941
No related branches found
No related tags found
No related merge requests found
set(OST_GFX_UNIT_TESTS set(OST_GFX_UNIT_TESTS
test_map_octree.cc test_ent_pov_export.cc
tests.cc tests.cc
) )
if (ENABLE_IMG)
list(APPEND OST_GFX_UNIT_TESTS test_map_octree.cc)
endif()
ost_unittest(gfx "${OST_GFX_UNIT_TESTS}") ost_unittest(gfx "${OST_GFX_UNIT_TESTS}")
target_link_libraries(gfx_tests ost_io)
//------------------------------------------------------------------------------
// This file is part of the OpenStructure project <www.openstructure.org>
//
// Copyright (C) 2008-2010 by the OpenStructure authors
//
// This library is free software; 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; either version 3.0 of the License, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
// details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this library; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
//------------------------------------------------------------------------------
/*
Author: Marco Biasini
*/
#include <fstream>
#include <boost/test/unit_test.hpp>
#include <ost/io/load_entity.hh>
#include <ost/gfx/scene.hh>
#include <ost/gfx/entity.hh>
using boost::unit_test_framework::test_suite;
using namespace ost;
using namespace ost::gfx;
namespace {
boost::shared_ptr<Entity> prepare_object(gfx::RenderMode::Type mode)
{
mol::EntityHandle ent=io::LoadEntity("testfiles/helix.pdb");
boost::shared_ptr<Entity> gfx_ent(new Entity("Helix", mode, ent));
Scene::Instance().Add(gfx_ent);
Scene::Instance().CenterOn(gfx_ent);
return gfx_ent;
}
bool compare_files(const String& test, const String& gold_standard)
{
std::ifstream test_stream(test.c_str());
std::ifstream gold_stream(gold_standard.c_str());
String test_line, gold_line;
while (true) {
bool test_end=std::getline(test_stream, test_line);
bool gold_end=std::getline(gold_stream, gold_line);
if (!(test_end || gold_end)) {
return true;
}
if (!test_end) {
std::cerr << gold_standard << " contains additional line(s):"
<< std::endl << gold_line;
return false;
}
if (!gold_end) {
std::cerr << test << " contains additional line(s):"
<< std::endl << test_line;
return false;
}
if (gold_line!=test_line) {
std::cerr << "line mismatch:" << std::endl << "test: " << test_line
<< std::endl << "gold: " << gold_line;
return false;
}
}
return true;
}
bool compare_sphere_cyl_entries(const String& test,
const String& gold_standard)
{
std::vector<String> gold_spheres;
std::vector<String> test_spheres;
std::vector<String> test_cyls;
std::vector<String> gold_cyls;
std::ifstream test_stream(test.c_str());
std::ifstream gold_stream(gold_standard.c_str());
String test_line, gold_line;
while (true) {
bool test_end=std::getline(test_stream, test_line);
bool gold_end=std::getline(gold_stream, gold_line);
if (!(test_end && gold_end)) {
break;
}
if (gold_line.find(" sphere")==0) {
gold_spheres.push_back(gold_line);
} else if (gold_line.find(" cylinder")==0) {
gold_cyls.push_back(gold_line);
}
if (test_line.find(" sphere")==0) {
test_spheres.push_back(test_line);
} else if (gold_line.find(" cylinder")==0) {
test_cyls.push_back(test_line);
}
}
BOOST_CHECK_EQUAL(gold_spheres.size(), test_spheres.size());
BOOST_CHECK_EQUAL(test_cyls.size(), gold_cyls.size());
if (gold_spheres.size()!=test_spheres.size()) {
return false;
}
if (gold_cyls.size()!=test_cyls.size()) {
return false;
}
std::sort(gold_spheres.begin(), gold_spheres.end());
std::sort(gold_cyls.begin(), gold_cyls.end());
std::sort(test_spheres.begin(), test_spheres.end());
std::sort(test_cyls.begin(), test_cyls.end());
for (size_t i=0;i<gold_cyls.size(); ++i) {
BOOST_CHECK_EQUAL(gold_cyls[i], test_cyls[i]);
}
for (size_t i=0;i<gold_spheres.size(); ++i) {
BOOST_CHECK_EQUAL(gold_spheres[i], test_spheres[i]);
}
return true;
}
}
BOOST_AUTO_TEST_SUITE(gfx)
BOOST_AUTO_TEST_CASE(pov_export_simple)
{
Scene::Instance().SetOffscreenMode();
boost::shared_ptr<Entity> obj=prepare_object(RenderMode::SIMPLE);
Scene::Instance().ExportPov("pov_simple_test", ".");
compare_sphere_cyl_entries("pov_simple_test.inc",
"testfiles/pov_simple_std.inc");
Scene::Instance().Remove(obj);
}
BOOST_AUTO_TEST_CASE(pov_export_custom)
{
Scene::Instance().SetOffscreenMode();
boost::shared_ptr<Entity> obj=prepare_object(RenderMode::CUSTOM);
Scene::Instance().ExportPov("pov_custom_test", ".");
compare_sphere_cyl_entries("pov_custom_test.inc",
"testfiles/pov_custom_std.inc");
Scene::Instance().Remove(obj);
}
BOOST_AUTO_TEST_CASE(pov_export_cartoon)
{
Scene::Instance().SetOffscreenMode();
boost::shared_ptr<Entity> obj=prepare_object(RenderMode::HSC);
Scene::Instance().ExportPov("pov_cartoon_test", ".");
BOOST_CHECK(compare_files("pov_cartoon_test.inc",
"testfiles/pov_cartoon_std.inc"));
Scene::Instance().Remove(obj);
}
BOOST_AUTO_TEST_CASE(pov_export_cpk)
{
Scene::Instance().SetOffscreenMode();
boost::shared_ptr<Entity> obj=prepare_object(RenderMode::CPK);
Scene::Instance().ExportPov("pov_cpk_test", ".");
compare_sphere_cyl_entries("pov_cpk_test.inc",
"testfiles/pov_cpk_std.inc");
Scene::Instance().Remove(obj);
}
BOOST_AUTO_TEST_CASE(pov_export_trace)
{
Scene::Instance().SetOffscreenMode();
boost::shared_ptr<Entity> obj=prepare_object(RenderMode::TRACE);
Scene::Instance().ExportPov("pov_trace_test", ".");
BOOST_CHECK(compare_files("pov_trace_test.inc",
"testfiles/pov_trace_std.inc"));
Scene::Instance().Remove(obj);
}
BOOST_AUTO_TEST_CASE(pov_export_line_trace)
{
Scene::Instance().SetOffscreenMode();
boost::shared_ptr<Entity> obj=prepare_object(RenderMode::LINE_TRACE);
Scene::Instance().ExportPov("pov_line_trace_test", ".");
BOOST_CHECK(compare_files("pov_line_trace_test.inc",
"testfiles/pov_line_trace_std.inc"));
Scene::Instance().Remove(obj);
}
BOOST_AUTO_TEST_CASE(pov_export_sline)
{
Scene::Instance().SetOffscreenMode();
boost::shared_ptr<Entity> obj=prepare_object(RenderMode::SLINE);
Scene::Instance().ExportPov("pov_sline_test", ".");
BOOST_CHECK(compare_files("pov_sline_test.inc",
"testfiles/pov_sline_std.inc"));
Scene::Instance().Remove(obj);
}
BOOST_AUTO_TEST_SUITE_END()
ATOM 1 N ASP A 62 20.818 21.098 88.433 1.00 36.00 N
ATOM 2 CA ASP A 62 19.945 21.644 89.473 1.00 35.14 C
ATOM 3 C ASP A 62 18.631 22.188 88.916 1.00 34.81 C
ATOM 4 O ASP A 62 18.615 23.185 88.194 1.00 34.83 O
ATOM 5 N GLN A 63 17.527 21.546 89.275 1.00 33.87 N
ATOM 6 CA GLN A 63 16.217 21.962 88.794 1.00 33.52 C
ATOM 7 C GLN A 63 15.944 23.448 89.021 1.00 34.72 C
ATOM 8 O GLN A 63 15.393 24.129 88.158 1.00 35.13 O
ATOM 9 N ALA A 64 16.329 23.955 90.187 1.00 35.86 N
ATOM 10 CA ALA A 64 16.097 25.362 90.506 1.00 34.48 C
ATOM 11 C ALA A 64 16.796 26.271 89.506 1.00 32.80 C
ATOM 12 O ALA A 64 16.200 27.223 89.001 1.00 32.43 O
ATOM 13 N SER A 65 18.062 25.976 89.227 1.00 31.21 N
ATOM 14 CA SER A 65 18.843 26.772 88.284 1.00 30.13 C
ATOM 15 C SER A 65 18.215 26.692 86.894 1.00 29.47 C
ATOM 16 O SER A 65 18.210 27.665 86.144 1.00 27.80 O
ATOM 17 N ILE A 66 17.674 25.523 86.567 1.00 29.84 N
ATOM 18 CA ILE A 66 17.037 25.306 85.277 1.00 30.26 C
ATOM 19 C ILE A 66 15.785 26.169 85.134 1.00 32.24 C
ATOM 20 O ILE A 66 15.634 26.890 84.147 1.00 32.91 O
ATOM 21 N ASP A 67 14.893 26.108 86.117 1.00 34.00 N
ATOM 22 CA ASP A 67 13.664 26.895 86.059 1.00 35.40 C
ATOM 23 C ASP A 67 13.937 28.400 86.059 1.00 36.75 C
ATOM 24 O ASP A 67 13.202 29.176 85.442 1.00 36.01 O
ATOM 25 N ARG A 68 14.985 28.819 86.758 1.00 38.36 N
ATOM 26 CA ARG A 68 15.316 30.231 86.796 1.00 40.77 C
ATOM 27 C ARG A 68 15.752 30.657 85.408 1.00 41.08 C
ATOM 28 O ARG A 68 15.227 31.623 84.852 1.00 40.58 O
ATOM 29 N CYS A 69 16.712 29.918 84.856 1.00 40.06 N
ATOM 30 CA CYS A 69 17.252 30.191 83.531 1.00 39.62 C
ATOM 31 C CYS A 69 16.169 30.403 82.475 1.00 38.72 C
ATOM 32 O CYS A 69 16.150 31.422 81.783 1.00 37.80 O
ATOM 33 N VAL A 70 15.265 29.438 82.361 1.00 38.16 N
ATOM 34 CA VAL A 70 14.189 29.507 81.384 1.00 37.40 C
ATOM 35 C VAL A 70 13.238 30.673 81.619 1.00 38.38 C
ATOM 36 O VAL A 70 12.861 31.369 80.679 1.00 40.49 O
ATOM 37 N ALA A 71 12.843 30.881 82.868 1.00 38.72 N
ATOM 38 CA ALA A 71 11.934 31.969 83.201 1.00 38.96 C
ATOM 39 C ALA A 71 12.553 33.335 82.885 1.00 39.02 C
ATOM 40 O ALA A 71 11.873 34.233 82.394 1.00 37.96 O
ATOM 41 N GLU A 72 13.844 33.483 83.160 1.00 38.71 N
ATOM 42 CA GLU A 72 14.534 34.741 82.913 1.00 40.87 C
ATOM 43 C GLU A 72 14.619 35.073 81.427 1.00 42.58 C
ATOM 44 O GLU A 72 14.327 36.200 81.017 1.00 43.89 O
ATOM 45 N LEU A 73 15.021 34.094 80.622 1.00 42.36 N
ATOM 46 CA LEU A 73 15.134 34.288 79.183 1.00 40.61 C
ATOM 47 C LEU A 73 13.766 34.552 78.574 1.00 41.27 C
ATOM 48 O LEU A 73 13.641 35.313 77.613 1.00 40.27 O
ATOM 49 N LEU A 74 12.738 33.925 79.135 1.00 42.57 N
ATOM 50 CA LEU A 74 11.384 34.124 78.639 1.00 45.20 C
ATOM 51 C LEU A 74 10.957 35.578 78.780 1.00 47.81 C
ATOM 52 O LEU A 74 10.206 36.089 77.953 1.00 48.42 O
ATOM 53 N ASP A 75 11.432 36.243 79.830 1.00 50.76 N
ATOM 54 CA ASP A 75 11.076 37.637 80.051 1.00 52.76 C
ATOM 55 C ASP A 75 11.948 38.559 79.219 1.00 52.17 C
ATOM 56 O ASP A 75 11.502 39.623 78.803 1.00 52.65 O
ATOM 57 N ARG A 76 13.189 38.152 78.972 1.00 51.65 N
ATOM 58 CA ARG A 76 14.096 38.966 78.170 1.00 50.77 C
ATOM 59 C ARG A 76 13.787 38.837 76.680 1.00 48.49 C
ATOM 60 O ARG A 76 13.930 39.802 75.932 1.00 48.31 O
ATOM 61 N TRP A 77 13.367 37.649 76.250 1.00 45.41 N
ATOM 62 CA TRP A 77 13.073 37.420 74.835 1.00 42.13 C
ATOM 63 C TRP A 77 11.604 37.231 74.487 1.00 41.62 C
ATOM 64 O TRP A 77 11.191 37.532 73.372 1.00 42.05 O
ATOM 65 N GLY A 78 10.817 36.722 75.427 1.00 41.28 N
ATOM 66 CA GLY A 78 9.413 36.492 75.148 1.00 39.86 C
ATOM 67 C GLY A 78 9.199 35.091 74.606 1.00 39.97 C
ATOM 68 O GLY A 78 8.073 34.603 74.550 1.00 40.78 O
END
\ No newline at end of file
This diff is collapsed.
#declare _Helix = object {
#if (_Helix_merge)
merge {
#else
union {
#end
sphere {<20.817999,21.098000,88.432999>, _Helix_rf*1.550000 texture { _Helix_tex pigment {color rgbft <0.000000,0.000000,1.000000,_Helix_fi,_Helix_tp>}}}
sphere {<19.945000,21.644001,89.473000>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<18.631001,22.188000,88.916000>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<18.615000,23.184999,88.193993>, _Helix_rf*1.520000 texture { _Helix_tex pigment {color rgbft <1.000000,0.000000,0.000000,_Helix_fi,_Helix_tp>}}}
sphere {<17.527000,21.546001,89.274994>, _Helix_rf*1.550000 texture { _Helix_tex pigment {color rgbft <0.000000,0.000000,1.000000,_Helix_fi,_Helix_tp>}}}
sphere {<16.217001,21.962000,88.793991>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<15.943999,23.448000,89.020996>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<15.393001,24.129002,88.158005>, _Helix_rf*1.520000 texture { _Helix_tex pigment {color rgbft <1.000000,0.000000,0.000000,_Helix_fi,_Helix_tp>}}}
sphere {<16.329000,23.954998,90.187004>, _Helix_rf*1.550000 texture { _Helix_tex pigment {color rgbft <0.000000,0.000000,1.000000,_Helix_fi,_Helix_tp>}}}
sphere {<16.097000,25.362000,90.505997>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<16.796001,26.271000,89.505997>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<16.200001,27.223001,89.000999>, _Helix_rf*1.520000 texture { _Helix_tex pigment {color rgbft <1.000000,0.000000,0.000000,_Helix_fi,_Helix_tp>}}}
sphere {<18.062000,25.976000,89.226997>, _Helix_rf*1.550000 texture { _Helix_tex pigment {color rgbft <0.000000,0.000000,1.000000,_Helix_fi,_Helix_tp>}}}
sphere {<18.843000,26.772001,88.283997>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<18.215000,26.692001,86.893997>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<18.210001,27.664999,86.143997>, _Helix_rf*1.520000 texture { _Helix_tex pigment {color rgbft <1.000000,0.000000,0.000000,_Helix_fi,_Helix_tp>}}}
sphere {<17.674000,25.523001,86.567001>, _Helix_rf*1.550000 texture { _Helix_tex pigment {color rgbft <0.000000,0.000000,1.000000,_Helix_fi,_Helix_tp>}}}
sphere {<17.037001,25.306000,85.277000>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<15.785000,26.169001,85.133995>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<15.634000,26.889999,84.147003>, _Helix_rf*1.520000 texture { _Helix_tex pigment {color rgbft <1.000000,0.000000,0.000000,_Helix_fi,_Helix_tp>}}}
sphere {<14.893001,26.108000,86.117004>, _Helix_rf*1.550000 texture { _Helix_tex pigment {color rgbft <0.000000,0.000000,1.000000,_Helix_fi,_Helix_tp>}}}
sphere {<13.664001,26.894999,86.059006>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<13.936999,28.400000,86.059006>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<13.202000,29.176001,85.442001>, _Helix_rf*1.520000 texture { _Helix_tex pigment {color rgbft <1.000000,0.000000,0.000000,_Helix_fi,_Helix_tp>}}}
sphere {<14.985000,28.819000,86.758003>, _Helix_rf*1.550000 texture { _Helix_tex pigment {color rgbft <0.000000,0.000000,1.000000,_Helix_fi,_Helix_tp>}}}
sphere {<15.316000,30.231001,86.795990>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<15.752000,30.657000,85.408005>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<15.227000,31.623001,84.852005>, _Helix_rf*1.520000 texture { _Helix_tex pigment {color rgbft <1.000000,0.000000,0.000000,_Helix_fi,_Helix_tp>}}}
sphere {<16.712002,29.917999,84.856003>, _Helix_rf*1.550000 texture { _Helix_tex pigment {color rgbft <0.000000,0.000000,1.000000,_Helix_fi,_Helix_tp>}}}
sphere {<17.252001,30.191000,83.530998>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<16.169001,30.403000,82.474998>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<16.150000,31.422001,81.782997>, _Helix_rf*1.520000 texture { _Helix_tex pigment {color rgbft <1.000000,0.000000,0.000000,_Helix_fi,_Helix_tp>}}}
sphere {<15.265000,29.438000,82.361000>, _Helix_rf*1.550000 texture { _Helix_tex pigment {color rgbft <0.000000,0.000000,1.000000,_Helix_fi,_Helix_tp>}}}
sphere {<14.189000,29.507000,81.384003>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<13.238000,30.673000,81.619003>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<12.861001,31.368999,80.679001>, _Helix_rf*1.520000 texture { _Helix_tex pigment {color rgbft <1.000000,0.000000,0.000000,_Helix_fi,_Helix_tp>}}}
sphere {<12.843000,30.880999,82.868004>, _Helix_rf*1.550000 texture { _Helix_tex pigment {color rgbft <0.000000,0.000000,1.000000,_Helix_fi,_Helix_tp>}}}
sphere {<11.933999,31.969000,83.200996>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<12.553000,33.334999,82.885002>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<11.873000,34.232998,82.393997>, _Helix_rf*1.520000 texture { _Helix_tex pigment {color rgbft <1.000000,0.000000,0.000000,_Helix_fi,_Helix_tp>}}}
sphere {<13.844000,33.483002,83.159996>, _Helix_rf*1.550000 texture { _Helix_tex pigment {color rgbft <0.000000,0.000000,1.000000,_Helix_fi,_Helix_tp>}}}
sphere {<14.533999,34.741001,82.913002>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<14.619000,35.072998,81.427002>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<14.327001,36.200001,81.017006>, _Helix_rf*1.520000 texture { _Helix_tex pigment {color rgbft <1.000000,0.000000,0.000000,_Helix_fi,_Helix_tp>}}}
sphere {<15.021001,34.094002,80.621994>, _Helix_rf*1.550000 texture { _Helix_tex pigment {color rgbft <0.000000,0.000000,1.000000,_Helix_fi,_Helix_tp>}}}
sphere {<15.134000,34.288002,79.182999>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<13.766000,34.551998,78.573997>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<13.641001,35.312996,77.612999>, _Helix_rf*1.520000 texture { _Helix_tex pigment {color rgbft <1.000000,0.000000,0.000000,_Helix_fi,_Helix_tp>}}}
sphere {<12.738000,33.925003,79.134995>, _Helix_rf*1.550000 texture { _Helix_tex pigment {color rgbft <0.000000,0.000000,1.000000,_Helix_fi,_Helix_tp>}}}
sphere {<11.384000,34.124001,78.639000>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<10.957000,35.577999,78.779999>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<10.205999,36.089001,77.953003>, _Helix_rf*1.520000 texture { _Helix_tex pigment {color rgbft <1.000000,0.000000,0.000000,_Helix_fi,_Helix_tp>}}}
sphere {<11.431999,36.243000,79.830002>, _Helix_rf*1.550000 texture { _Helix_tex pigment {color rgbft <0.000000,0.000000,1.000000,_Helix_fi,_Helix_tp>}}}
sphere {<11.075999,37.636997,80.051003>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<11.948000,38.558998,79.219002>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<11.502000,39.622997,78.803001>, _Helix_rf*1.520000 texture { _Helix_tex pigment {color rgbft <1.000000,0.000000,0.000000,_Helix_fi,_Helix_tp>}}}
sphere {<13.189000,38.151997,78.972000>, _Helix_rf*1.550000 texture { _Helix_tex pigment {color rgbft <0.000000,0.000000,1.000000,_Helix_fi,_Helix_tp>}}}
sphere {<14.096000,38.966003,78.169998>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<13.787000,38.836998,76.680000>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<13.929999,39.801998,75.931999>, _Helix_rf*1.520000 texture { _Helix_tex pigment {color rgbft <1.000000,0.000000,0.000000,_Helix_fi,_Helix_tp>}}}
sphere {<13.367001,37.648998,76.250000>, _Helix_rf*1.550000 texture { _Helix_tex pigment {color rgbft <0.000000,0.000000,1.000000,_Helix_fi,_Helix_tp>}}}
sphere {<13.073000,37.420002,74.834999>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<11.604000,37.230999,74.487007>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<11.191001,37.531998,73.372002>, _Helix_rf*1.520000 texture { _Helix_tex pigment {color rgbft <1.000000,0.000000,0.000000,_Helix_fi,_Helix_tp>}}}
sphere {<10.817000,36.722000,75.427002>, _Helix_rf*1.550000 texture { _Helix_tex pigment {color rgbft <0.000000,0.000000,1.000000,_Helix_fi,_Helix_tp>}}}
sphere {<9.413000,36.492001,75.148003>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<9.199000,35.091000,74.605995>, _Helix_rf*1.750000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<8.073000,34.602997,74.550003>, _Helix_rf*1.520000 texture { _Helix_tex pigment {color rgbft <1.000000,0.000000,0.000000,_Helix_fi,_Helix_tp>}}}
}
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
#declare _Helix = object {
#if (_Helix_merge)
merge {
#else
union {
#end
sphere {<19.945000,21.644001,89.473000>, _Helix_rf*0.200000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<16.217001,21.962000,88.793991>, _Helix_rf*0.200000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<19.945000,21.644001,89.473000>, <18.081001,21.803001,89.133499>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<18.081001,21.803001,89.133499>, <16.217001,21.962000,88.793991>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<16.097000,25.362000,90.505997>, _Helix_rf*0.200000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<16.217001,21.962000,88.793991>, <16.157001,23.661999,89.649994>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<16.157001,23.661999,89.649994>, <16.097000,25.362000,90.505997>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<18.843000,26.772001,88.283997>, _Helix_rf*0.200000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<16.097000,25.362000,90.505997>, <17.470001,26.067001,89.394997>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<17.470001,26.067001,89.394997>, <18.843000,26.772001,88.283997>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<17.037001,25.306000,85.277000>, _Helix_rf*0.200000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<18.843000,26.772001,88.283997>, <17.940001,26.039001,86.780502>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<17.940001,26.039001,86.780502>, <17.037001,25.306000,85.277000>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<13.664001,26.894999,86.059006>, _Helix_rf*0.200000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<17.037001,25.306000,85.277000>, <15.350500,26.100498,85.667999>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<15.350500,26.100498,85.667999>, <13.664001,26.894999,86.059006>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<15.316000,30.231001,86.795990>, _Helix_rf*0.200000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<13.664001,26.894999,86.059006>, <14.490000,28.563000,86.427498>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<14.490000,28.563000,86.427498>, <15.316000,30.231001,86.795990>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<17.252001,30.191000,83.530998>, _Helix_rf*0.200000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<15.316000,30.231001,86.795990>, <16.284000,30.211000,85.163498>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<16.284000,30.211000,85.163498>, <17.252001,30.191000,83.530998>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<14.189000,29.507000,81.384003>, _Helix_rf*0.200000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<17.252001,30.191000,83.530998>, <15.720501,29.848999,82.457504>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<15.720501,29.848999,82.457504>, <14.189000,29.507000,81.384003>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<11.933999,31.969000,83.200996>, _Helix_rf*0.200000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<14.189000,29.507000,81.384003>, <13.061500,30.737999,82.292496>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<13.061500,30.737999,82.292496>, <11.933999,31.969000,83.200996>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<14.533999,34.741001,82.913002>, _Helix_rf*0.200000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<11.933999,31.969000,83.200996>, <13.233999,33.355000,83.056999>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<13.233999,33.355000,83.056999>, <14.533999,34.741001,82.913002>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<15.134000,34.288002,79.182999>, _Helix_rf*0.200000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<14.533999,34.741001,82.913002>, <14.834000,34.514503,81.048004>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<14.834000,34.514503,81.048004>, <15.134000,34.288002,79.182999>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<11.384000,34.124001,78.639000>, _Helix_rf*0.200000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<15.134000,34.288002,79.182999>, <13.259000,34.206001,78.910995>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<13.259000,34.206001,78.910995>, <11.384000,34.124001,78.639000>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<11.075999,37.636997,80.051003>, _Helix_rf*0.200000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<11.384000,34.124001,78.639000>, <11.230000,35.880501,79.345001>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<11.230000,35.880501,79.345001>, <11.075999,37.636997,80.051003>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<14.096000,38.966003,78.169998>, _Helix_rf*0.200000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<11.075999,37.636997,80.051003>, <12.585999,38.301498,79.110504>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<12.585999,38.301498,79.110504>, <14.096000,38.966003,78.169998>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<13.073000,37.420002,74.834999>, _Helix_rf*0.200000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<14.096000,38.966003,78.169998>, <13.584499,38.193001,76.502502>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<13.584499,38.193001,76.502502>, <13.073000,37.420002,74.834999>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
sphere {<9.413000,36.492001,75.148003>, _Helix_rf*0.200000 texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<13.073000,37.420002,74.834999>, <11.243000,36.956001,74.991501>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
cylinder {<11.243000,36.956001,74.991501>, <9.413000,36.492001,75.148003>, _Helix_rf*0.200000 open texture { _Helix_tex pigment {color rgbft <0.830000,0.970000,0.970000,_Helix_fi,_Helix_tp>}}}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment