A
download impsurface.h
Language: C++
License: GPL
Copyright: (C) 2000-2005 Vincent LE PRINCE
LOC: 48
Project Info
Truevision
Server: SourceForge
Type: cvs
...evision\Truevision\include\
   atmosphere.h
   bicubic.h
   blob.h
   box.h
   camera.h
   cone.h
   cylinder.h
   density.h
   disc.h
   dlgutils.h
   fnintern.h
   fog.h
   function.h
   glview.h
   glview2d.h
   glview3d.h
   heightfield.h
   impsurface.h
   interface.h
   interior.h
   isosurface.h
   julia.h
   lathe.h
   lights.h
   linkobj.h
   main.h
   mapedit.h
   material.h
   matlib.h
   matlist.h
   matpov.h
   media.h
   mesh.h
   meshrotate.h
   meshscale.h
   meshtool.h
   meshtranslate.h
   obj3dcsg.h
   obj3ddef.h
   object3d.h
   objectlayer.h
   objectlist.h
   parametric.h
   plane.h
   polygon.h
   povfe.h
   povpreview.h
   povscript.h
   preferences.h
   prism.h
   proppanel.h
   pycamera.h
   pyengine.h
   pylights.h
   pyobjects.h
   pyscriptdb.h
   pyscriptobj.h
   pyutils.h
   rotation.h
   scene.h
   scriptobj.h
   slopemap.h
   sphere.h
   spheresweep.h
   spline2d.h
   spline3d.h
   superellipsoid.h
   texfinish.h
   texnormal.h
   texpigment.h
   text.h
   torus.h
   tvio.h
   tvwidgets.h
   undo.h
   utils3d.h
   vertex.h
   viewmanager.h

//*****************************************************************************************
// Truevision - a 3d modeler for povray
//
// impsurface.h
//
// Vincent LE PRINCE <vincentleprince@users.sourceforge.net>
// Copyright (C) 2000-2005 Vincent LE PRINCE
// This file is part of the TRUEVISION Package

//   This program is free software; you can redistribute it and/or modify
//   it under the terms of the GNU General Public License as published by
//   the Free Software Foundation; either version 2 of the License, or
//   (at your option) any later version.
//
//   This program 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 General Public License for more details.
//
//   You should have received a copy of the GNU General Public License
//   along with this program; if not, write to the Free Software
//   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
//*******************************************************************************************
#ifndef TV_IMPSURF_H
#define TV_IMPSURF_H
using namespace std;
#include <vector>
#include "include/main.h"

#define VOXEL_TYPE_A 1
#define VOXEL_TYPE_B 2

const int ImpSurfSubdivision = 12;  // max 30
//const int GridSubdivision= 3;  Now defined in preferences
const int IntersectRecursion = 14;
const int GridRecursion = 1;

class ImplicitSurface;

class Voxel {
	private:
		int type;
		bool value;
		int coordi[3];
		float coordf[3];
		bool vertices_intersects_calc[18];
		float vertices_intersects[18][3];
		float vertices_intersects_norm[18][3];
		int vertices_intersects_norm_avg[18];
		int triangles_num;
		int triangles[10][3];
		ImplicitSurface * surface;
		Voxel **edges;
		static bool(*TestFunc)(gpointer, float, float, float );
		static gpointer obj;
	
	public :
		~Voxel() {}
			
		void set( int a, int b, int c, float x, float y, float z, int type,  bool(*test_func)( gpointer, float, float, float ), gpointer obj, ImplicitSurface *surf );
		void get_triangles();
		void render_triangles();
			
		void set_triangle( int vertices[3], int *edges_in, bool invert );
		void set_vertice_intersect( int vertice, float *coords, float *norm, int norm_avg );
};


class ImplicitSurface	{
	
	private:
		Voxel voxels[ImpSurfSubdivision+3][ImpSurfSubdivision+3][ImpSurfSubdivision+3];
		//float step;
		bool(*TestFunc)(gpointer, float, float, float );
		gpointer obj;
		float *min, *max;
		int GridSubdivision;
	
	public:
		ImplicitSurface( app_objs *appref, bool(*test_func)(gpointer, float , float , float), gpointer obj, float *min, float *max );
		~ImplicitSurface();
	
		Voxel * get_voxel( int x, int y, int z ) { if ( x < 0 || x > ImpSurfSubdivision+3 || y < 0 || y > ImpSurfSubdivision+3 || z < 0 || z > ImpSurfSubdivision+3 ) return NULL; return & voxels[x][y][z]; }
};

#endif

About Koders | Resources | Downloads | Support | Black Duck | Terms of Service | DMCA | Privacy Policy | Contact Us