Newer
Older
//
// 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

Christophe Geuzaine
committed
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA.
//
// Please report all bugs and problems to "gmsh@geuz.org".

Christophe Geuzaine
committed
#include "Context.h"
extern Context_T CTX;
StringXNumber CutSphereOptions_Number[] = {
{ GMSH_FULLRC, "Xc" , NULL , 0. },
{ GMSH_FULLRC, "Yc" , NULL , 0. },
{ GMSH_FULLRC, "Zc" , NULL , 0. },
};
extern "C"
{
GMSH_Plugin *GMSH_RegisterCutSpherePlugin ()
{
GMSH_CutSpherePlugin::GMSH_CutSpherePlugin()
{
}
void GMSH_CutSpherePlugin::getName(char *name) const
{
}
void GMSH_CutSpherePlugin::getInfos(char *author, char *copyright, char *help_text) const
{
strcpy(author,"J.-F. Remacle (remacle@scorec.rpi.edu)");
strcpy(copyright,"DGR (www.multiphysics.com)");
strcpy(help_text,
"Cuts a 3D scalar view with the sphere\n"
"(X-Xc)^2 + (Y-Yc)^2 + (Z-Zc)^2 = R^2.\n"
"Script name: Plugin(CutSphere).");
}
int GMSH_CutSpherePlugin::getNbOptions() const
{
return sizeof(CutSphereOptions_Number)/sizeof(StringXNumber);
StringXNumber* GMSH_CutSpherePlugin:: GetOption (int iopt)
}
void GMSH_CutSpherePlugin::CatchErrorMessage (char *errorMessage) const
{
strcpy(errorMessage,"CutSphere failed...");
double GMSH_CutSpherePlugin :: levelset (double x, double y, double z, double val) const
double a = CutSphereOptions_Number[0].def;
double b = CutSphereOptions_Number[1].def;
double c = CutSphereOptions_Number[2].def;
double r = CutSphereOptions_Number[3].def;
return (x-a)*(x-a) + (y-b)*(y-b) + (z-c)*(z-c) - r*r;
}
Post_View *GMSH_CutSpherePlugin::execute (Post_View *v)
{
int iView = (int)CutSphereOptions_Number[4].def;
_orientation = ORIENT_SPHERE;
_ref[0] = CutSphereOptions_Number[0].def;
_ref[1] = CutSphereOptions_Number[1].def;
_ref[2] = CutSphereOptions_Number[2].def;
else{
if(!v && iView < 0) iView = 0;

Christophe Geuzaine
committed
if(!(vv = (Post_View*)List_Pointer_Test(CTX.post.list,iView))){
return GMSH_LevelsetPlugin::execute(vv);
}