~siretart/ubuntu/utopic/blender/libav10

« back to all changes in this revision

Viewing changes to extern/carve/lib/pointset.cpp

  • Committer: Package Import Robot
  • Author(s): Matteo F. Vescovi
  • Date: 2012-07-23 08:54:18 UTC
  • mfrom: (14.2.16 sid)
  • mto: (14.2.19 sid)
  • mto: This revision was merged to the branch mainline in revision 42.
  • Revision ID: package-import@ubuntu.com-20120723085418-9foz30v6afaf5ffs
Tags: 2.63a-2
* debian/: Cycles support added (Closes: #658075)
  For now, this top feature has been enabled only
  on [any-amd64 any-i386] architectures because
  of OpenImageIO failing on all others
* debian/: scripts installation path changed
  from /usr/lib to /usr/share:
  + debian/patches/: patchset re-worked for path changing
  + debian/control: "Breaks" field added on yafaray-exporter

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Begin License:
 
2
// Copyright (C) 2006-2011 Tobias Sargeant (tobias.sargeant@gmail.com).
 
3
// All rights reserved.
 
4
//
 
5
// This file is part of the Carve CSG Library (http://carve-csg.com/)
 
6
//
 
7
// This file may be used under the terms of the GNU General Public
 
8
// License version 2.0 as published by the Free Software Foundation
 
9
// and appearing in the file LICENSE.GPL2 included in the packaging of
 
10
// this file.
 
11
//
 
12
// This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
 
13
// INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
 
14
// A PARTICULAR PURPOSE.
 
15
// End:
 
16
 
 
17
 
 
18
#if defined(HAVE_CONFIG_H)
 
19
#  include <carve_config.h>
 
20
#endif
 
21
 
 
22
#include <carve/geom.hpp>
 
23
#include <carve/pointset.hpp>
 
24
 
 
25
namespace carve {
 
26
  namespace point {
 
27
 
 
28
    PointSet::PointSet(const std::vector<carve::geom3d::Vector> &points) {
 
29
      vertices.resize(points.size());
 
30
      for (size_t i = 0; i < points.size(); ++i) {
 
31
        vertices[i].v = points[i];
 
32
      }
 
33
      aabb.fit(points.begin(), points.end());
 
34
    }
 
35
 
 
36
    void PointSet::sortVertices(const carve::geom3d::Vector &axis) {
 
37
      std::vector<std::pair<double, size_t> > temp;
 
38
      temp.reserve(vertices.size());
 
39
      for (size_t i = 0; i < vertices.size(); ++i) {
 
40
        temp.push_back(std::make_pair(dot(axis, vertices[i].v), i));
 
41
      }
 
42
      std::sort(temp.begin(), temp.end());
 
43
 
 
44
      std::vector<Vertex> vnew;
 
45
      vnew.reserve(vertices.size());
 
46
 
 
47
      // std::vector<int> revmap;
 
48
      // revmap.resize(vertices.size());
 
49
 
 
50
      for (size_t i = 0; i < vertices.size(); ++i) {
 
51
        vnew.push_back(vertices[temp[i].second]);
 
52
        // revmap[temp[i].second] = i;
 
53
      }
 
54
 
 
55
      vertices.swap(vnew);
 
56
   }
 
57
 
 
58
  }
 
59
}