Commit b7ff04e4 authored by js9's avatar js9

Adding geodesic sphere vector quantization algorithm and deformation operator.


git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@6629 18c085ea-50e0-402c-830e-de6fd14e8384
parent 3f8e9ead
/*****************************************************************************
*
* Copyright (c) 2000 - 2008, Lawrence Livermore National Security, LLC
* Produced at the Lawrence Livermore National Laboratory
* LLNL-CODE-400142
* All rights reserved.
*
* This file is part of VisIt. For details, see https://visit.llnl.gov/. The
* full copyright notice is contained in the file COPYRIGHT located at the root
* of the VisIt distribution or at http://www.llnl.gov/visit/copyright.html.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the disclaimer below.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the disclaimer (as noted below) in the
* documentation and/or other materials provided with the distribution.
* - Neither the name of the LLNS/LLNL nor the names of its contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL LAWRENCE LIVERMORE NATIONAL SECURITY,
* LLC, THE U.S. DEPARTMENT OF ENERGY OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
*****************************************************************************/
// ************************************************************************* //
// avtGeodesicVectorQuantizeExpression.C //
// ************************************************************************* //
#include <avtGeodesicVectorQuantizeExpression.h>
#include <math.h>
#include <vtkCellData.h>
#include <vtkDataArray.h>
#include <vtkDataSet.h>
#include <vtkFloatArray.h>
#include <vtkPointData.h>
#include <vtkUnsignedIntArray.h>
#include <ExprToken.h>
#include <avtExprNode.h>
#include <avtCallback.h>
#include <avtMetaData.h>
#include <DebugStream.h>
#include <ExpressionException.h>
#include <ImproperUseException.h>
#include <GeometricHelpers.h>
// ****************************************************************************
// Method: avtGeodesicVectorQuantizeExpression constructor
//
// Purpose:
// Defines the constructor. Note: this should not be inlined in the
// header because it causes problems for certain compilers.
//
// Programmer: Jeremy Meredith
// Creation: March 18, 2009
//
// ****************************************************************************
avtGeodesicVectorQuantizeExpression::avtGeodesicVectorQuantizeExpression()
{
}
// ****************************************************************************
// Method: avtGeodesicVectorQuantizeExpression destructor
//
// Purpose:
// Defines the destructor. Note: this should not be inlined in the header
// because it causes problems for certain compilers.
//
// Programmer: Jeremy Meredith
// Creation: March 18, 2009
//
// ****************************************************************************
avtGeodesicVectorQuantizeExpression::~avtGeodesicVectorQuantizeExpression()
{
}
// ****************************************************************************
// Method: avtGeodesicVectorQuantizeExpression::DeriveVariable
//
// Purpose:
// Creates an array.
//
// Arguments:
// inDS The input dataset.
//
// Returns: The derived variable. The calling class must free this
// memory.
//
// Programmer: Jeremy Meredith
// Creation: March 18, 2009
//
// ****************************************************************************
vtkDataArray *
avtGeodesicVectorQuantizeExpression::DeriveVariable(vtkDataSet *in_ds)
{
int i, j;
vtkDataArray *var;
avtCentering centering;
const char *varname = varnames[0];
var = in_ds->GetPointData()->GetArray(varname);
if (var == NULL)
{
var = in_ds->GetCellData()->GetArray(varname);
}
if (var == NULL)
{
EXCEPTION2(ExpressionException, outputVariableName,
"Cannot quantize because: cannot locate input variable");
}
if (var->GetNumberOfComponents() != 3)
{
EXCEPTION2(ExpressionException, outputVariableName,
"Cannot quantize because: required 3D vector");
}
// Okay, create the output
vtkFloatArray *rv = vtkFloatArray::New();
rv->SetNumberOfComponents(geodesic_sphere_npts);
int nvals = var->GetNumberOfTuples();
rv->SetNumberOfTuples(nvals);
for (i = 0 ; i < nvals ; i++)
{
double tmp[geodesic_sphere_npts];
// init output quantization to zero
for (int j=0; j<geodesic_sphere_npts; j++)
tmp[j] = 0.0;
// get the vector input
double *vorig = var->GetTuple3(i);
double vlen = sqrt(vorig[0]*vorig[0] +
vorig[1]*vorig[1] +
vorig[2]*vorig[2]);
// if it's non-zero, convert it to a quantization
if (vlen > 0)
{
double vunit[3] = {vorig[0]/vlen, vorig[1]/vlen, vorig[2]/vlen};
// accumulate at all points within "spread" units of a dp of 1.0,
// weighted by dot product squared
for (int j=0; j<geodesic_sphere_npts; j++)
{
double *gs = geodesic_sphere_points[j];
double dp = vunit[0]*gs[0] + vunit[1]*gs[1] + vunit[2]*gs[2];
dp = ((dp - (1-spread)) / spread);
if (dp > 0)
{
double accumval = dp*dp * vlen;
tmp[j] += accumval;
}
}
}
for (int j=0; j<geodesic_sphere_npts; j++)
rv->SetComponent(i, j, tmp[j]);
}
return rv;
}
// ****************************************************************************
// Method: avtGeodesicVectorQuantizeExpression::ProcessArguments
//
// Purpose:
// Tells the first argument to go generate itself. Parses the last
// argument as a value for the "spread".
//
// Arguments:
// inDS The input dataset.
//
// Returns: The derived variable. The calling class must free this
// memory.
//
// Programmer: Jeremy Meredith
// Creation: March 18, 2009
//
// ****************************************************************************
void
avtGeodesicVectorQuantizeExpression::ProcessArguments(ArgsExpr *args,
ExprPipelineState *state)
{
// Check the number of arguments
std::vector<ArgExpr*> *arguments = args->GetArgs();
int idx_of_list = arguments->size()-1;
ArgExpr *listarg = (*arguments)[idx_of_list];
ExprParseTreeNode *spreadTree = listarg->GetExpr();
spread = -1; // bad value
if (spreadTree->GetTypeName() == "IntegerConst")
{
spread = dynamic_cast<IntegerConstExpr*>(spreadTree)->GetValue();
}
else if (spreadTree->GetTypeName() == "FloatConst")
{
spread = dynamic_cast<FloatConstExpr*>(spreadTree)->GetValue();
}
if (spread <= 0 || spread > 1)
{
EXCEPTION2(ExpressionException, outputVariableName,
"Expected a spread (in the range (0,1]) as the final argument.");
}
// Let the base class do the rest of the processing. We only had to
// over-ride this function to determine the number of arguments and
// extract the spread.
avtMultipleInputExpressionFilter::ProcessArguments(args, state);
}
// ****************************************************************************
// Method: avtGeodesicVectorQuantizeExpression::UpdateDataObjectInfo
//
// Purpose:
// Tell the output what the component names are.
//
// Programmer: Jeremy Meredith
// Creation: March 18, 2009
//
// Modifications:
//
// ****************************************************************************
void
avtGeodesicVectorQuantizeExpression::UpdateDataObjectInfo(void)
{
avtMultipleInputExpressionFilter::UpdateDataObjectInfo();
// If we don't know the name of the variable, we can't set it up in the
// output.
if (outputVariableName == NULL)
return;
std::vector<std::string> subnames(geodesic_sphere_npts);
for (int i = 0 ; i < geodesic_sphere_npts ; i++)
{
char str[256];
snprintf(str,256,"node%03d",i);
subnames[i] = str;
}
avtDataAttributes &outAtts = GetOutput()->GetInfo().GetAttributes();
outAtts.SetVariableDimension(subnames.size(), outputVariableName);
outAtts.SetVariableSubnames(subnames, outputVariableName);
}
/*****************************************************************************
*
* Copyright (c) 2000 - 2008, Lawrence Livermore National Security, LLC
* Produced at the Lawrence Livermore National Laboratory
* LLNL-CODE-400142
* All rights reserved.
*
* This file is part of VisIt. For details, see https://visit.llnl.gov/. The
* full copyright notice is contained in the file COPYRIGHT located at the root
* of the VisIt distribution or at http://www.llnl.gov/visit/copyright.html.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the disclaimer below.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the disclaimer (as noted below) in the
* documentation and/or other materials provided with the distribution.
* - Neither the name of the LLNS/LLNL nor the names of its contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL LAWRENCE LIVERMORE NATIONAL SECURITY,
* LLC, THE U.S. DEPARTMENT OF ENERGY OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
*****************************************************************************/
// ************************************************************************* //
// avtGeodesicVectorQuantizeExpression.h //
// ************************************************************************* //
#ifndef AVT_GEODESIC_VECTOR_QUANTIZE_EXPRESSION_H
#define AVT_GEODESIC_VECTOR_QUANTIZE_EXPRESSION_H
#include <avtMultipleInputExpressionFilter.h>
#include <vector>
class vtkDataArray;
class ArgsExpr;
class ExprPipelineState;
// ****************************************************************************
// Class: avtGeodesicVectorQuantizeExpression
//
// Purpose:
// Take vector variables and map it onto quantized geodesic coordinates.
//
// Programmer: Jeremy Meredith
// Creation: March 18, 2009
//
// ****************************************************************************
class EXPRESSION_API avtGeodesicVectorQuantizeExpression
: public avtMultipleInputExpressionFilter
{
public:
avtGeodesicVectorQuantizeExpression();
virtual ~avtGeodesicVectorQuantizeExpression();
virtual const char *GetType(void)
{ return "avtGeodesicVectorQuantizeExpression"; }
virtual const char *GetDescription(void)
{ return "Quantizing vector onto geodesic sphere"; };
virtual void ProcessArguments(ArgsExpr*, ExprPipelineState *);
virtual int NumVariableArguments(void) { return 2; };
protected:
double spread;
virtual void UpdateDataObjectInfo(void);
virtual vtkDataArray *DeriveVariable(vtkDataSet *);
virtual avtVarType GetVariableType(void) { return AVT_ARRAY_VAR; };
};
#endif
......@@ -317,6 +317,7 @@ General_src= \
General/avtDominantMaterialExpression.C \
General/avtExpressionComponentMacro.C \
General/avtExternalNodeExpression.C \
General/avtGeodesicVectorQuantizeExpression.C \
General/avtGradientExpression.C \
General/avtHSVColorComposeExpression.C \
General/avtLaplacianExpression.C \
......
......@@ -171,6 +171,7 @@
#include <avtPerMaterialValueExpression.h>
#include <avtApplyEnumerationExpression.h>
#include <avtConstantFunctionExpression.h>
#include <avtGeodesicVectorQuantizeExpression.h>
#include <stdio.h>
#include <ExpressionException.h>
......@@ -949,6 +950,8 @@ avtFunctionExpr::CreateFilters(string functionName)
mm->SetDoMinimum(false);
return mm;
}
if (functionName == "geodesic_vector_quantize")
return new avtGeodesicVectorQuantizeExpression();
if (functionName == "color")
return new avtColorComposeExpression(3);
if (functionName == "color4")
......
This diff is collapsed.
/*****************************************************************************
*
* Copyright (c) 2000 - 2008, Lawrence Livermore National Security, LLC
* Produced at the Lawrence Livermore National Laboratory
* LLNL-CODE-400142
* All rights reserved.
*
* This file is part of VisIt. For details, see https://visit.llnl.gov/. The
* full copyright notice is contained in the file COPYRIGHT located at the root
* of the VisIt distribution or at http://www.llnl.gov/visit/copyright.html.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the disclaimer below.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the disclaimer (as noted below) in the
* documentation and/or other materials provided with the distribution.
* - Neither the name of the LLNS/LLNL nor the names of its contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL LAWRENCE LIVERMORE NATIONAL SECURITY,
* LLC, THE U.S. DEPARTMENT OF ENERGY OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
*****************************************************************************/
#ifndef GEOMETRIC_HELPERS_H
#define GEOMETRIC_HELPERS_H
#include <utility_exports.h>
// ****************************************************************************
// File: GeometricHelpers
//
// Purpose:
// So far, this is just a nice place to store the geometry for
// a geodesic sphere tesselated as a few different levels, since
// calculating that on the fly isn't cheap. Furthermore, I'm adding
// an expression and operator which must agree on the same geometry,
// including the same ordering, so it must be some place common....
//
// Programmer: Jeremy Meredith
// Creation: March 19, 2009
//
// ****************************************************************************
#define geodesic_sphere_tess0_npts 12
#define geodesic_sphere_tess1_npts 42
#define geodesic_sphere_tess2_npts 162
#define geodesic_sphere_tess0_ntris 20
#define geodesic_sphere_tess1_ntris 80
#define geodesic_sphere_tess2_ntris 320
extern UTILITY_API double geodesic_sphere_tess0_points[12][3];
extern UTILITY_API double geodesic_sphere_tess1_points[42][3];
extern UTILITY_API double geodesic_sphere_tess2_points[162][3];
extern UTILITY_API int geodesic_sphere_tess0_tris[20][3];
extern UTILITY_API int geodesic_sphere_tess1_tris[80][3];
extern UTILITY_API int geodesic_sphere_tess2_tris[320][3];
// default
#define geodesic_sphere_npts geodesic_sphere_tess1_npts
#define geodesic_sphere_ntris geodesic_sphere_tess1_ntris
#define geodesic_sphere_points geodesic_sphere_tess1_points
#define geodesic_sphere_tris geodesic_sphere_tess1_tris
#endif
......@@ -97,7 +97,8 @@ LIBS=
##
## Files...
##
SRC=AtomicProperties.C CoordUtils.C NamingConvention.C StringHelpers.C Utility.C\
SRC=AtomicProperties.C CoordUtils.C GeometricHelpers.C \
NamingConvention.C StringHelpers.C Utility.C \
void_ref_ptr.C
HDR=AtomicProperties.h BJHash.h NamingConvention.h StringHelpers.h Utility.h\
ref_ptr.h array_ref_ptr.h void_ref_ptr.h
......
../../common/utility/GeometricHelpers.h
\ No newline at end of file
../../avt/Expressions/General/avtGeodesicVectorQuantizeExpression.h
\ No newline at end of file
<?xml version="1.0"?>
<Plugin name="DeformSphereGlyph" type="operator" label="DeformSphereGlyph" version="1.0" enabled="false" mdspecificcode="false" engspecificcode="false" onlyengine="false" noengine="false">
<Attribute name="DeformSphereGlyphAttributes" purpose="Attributes for the DeformSphereGlyph" persistent="false" keyframe="true" exportAPI="" exportInclude="">
<Field name="var" label="var" type="variablename" vartypes="00000000001">
Default
</Field>
<Field name="scale" label="Scale Factor" type="double">
1.000000
</Field>
<Field name="minSize" label="Minimum Size" type="double">
1.000000
</Field>
</Attribute>
</Plugin>
This diff is collapsed.
/*****************************************************************************
*
* Copyright (c) 2000 - 2008, Lawrence Livermore National Security, LLC
* Produced at the Lawrence Livermore National Laboratory
* LLNL-CODE-400142
* All rights reserved.
*
* This file is part of VisIt. For details, see https://visit.llnl.gov/. The
* full copyright notice is contained in the file COPYRIGHT located at the root
* of the VisIt distribution or at http://www.llnl.gov/visit/copyright.html.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the disclaimer below.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the disclaimer (as noted below) in the
* documentation and/or other materials provided with the distribution.
* - Neither the name of the LLNS/LLNL nor the names of its contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL LAWRENCE LIVERMORE NATIONAL SECURITY,
* LLC, THE U.S. DEPARTMENT OF ENERGY OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
*****************************************************************************/
#ifndef DEFORMSPHEREGLYPHATTRIBUTES_H
#define DEFORMSPHEREGLYPHATTRIBUTES_H
#include <string>
#include <AttributeSubject.h>
// ****************************************************************************
// Class: DeformSphereGlyphAttributes
//
// Purpose:
// Attributes for the DeformSphereGlyph
//
// Notes: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: omitted
//
// Modifications:
//
// ****************************************************************************
class DeformSphereGlyphAttributes : public AttributeSubject
{
public:
DeformSphereGlyphAttributes();
DeformSphereGlyphAttributes(const DeformSphereGlyphAttributes &obj);
virtual ~DeformSphereGlyphAttributes();
virtual DeformSphereGlyphAttributes& operator = (const DeformSphereGlyphAttributes &obj);
virtual bool operator == (const DeformSphereGlyphAttributes &obj) const;
virtual bool operator != (const DeformSphereGlyphAttributes &obj) const;
virtual const std::string TypeName() const;
virtual bool CopyAttributes(const AttributeGroup *);
virtual AttributeSubject *CreateCompatible(const std::string &) const;
virtual AttributeSubject *NewInstance(bool) const;
// Property selection methods
virtual void SelectAll();
void SelectVar();
// Property setting methods
void SetVar(const std::string &var_);
void SetScale(double scale_);
void SetMinSize(double minSize_);
// Property getting methods
const std::string &GetVar() const;
std::string &GetVar();
double GetScale() const;
double GetMinSize() const;
// Keyframing methods
virtual std::string GetFieldName(int index) const;
virtual AttributeGroup::FieldType GetFieldType(int index) const;
virtual std::string GetFieldTypeName(int index) const;
virtual bool FieldsEqual(int index, const AttributeGroup *rhs) const;
// IDs that can be used to identify fields in case statements
enum {
ID_var = 0,
ID_scale,
ID_minSize
};
private:
std::string var;
double scale;
double minSize;
// Static class format string for type map.
static const char *TypeMapFormatString;
};
#endif
// ***************************************************************************
//
// Copyright (c) 2000 - 2008, Lawrence Livermore National Security, LLC
// Produced at the Lawrence Livermore National Laboratory
// LLNL-CODE-400142
// All rights reserved.
//
// This file is part of VisIt. For details, see https://visit.llnl.gov/. The
// full copyright notice is contained in the file COPYRIGHT located at the root
// of the VisIt distribution or at http://www.llnl.gov/visit/copyright.html.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice,
// this list of conditions and the disclaimer below.
// - Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the disclaimer (as noted below) in the
// documentation and/or other materials provided with the distribution.
// - Neither the name of the LLNS/LLNL nor the names of its contributors may
// be used to endorse or promote products derived from this software without
// specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL LAWRENCE LIVERMORE NATIONAL SECURITY,
// LLC, THE U.S. DEPARTMENT OF ENERGY OR CONTRIBUTORS BE LIABLE FOR ANY
// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
// DAMAGE.
//
// ***************************************************************************
package llnl.visit.operators;
import llnl.visit.AttributeSubject;
import llnl.visit.CommunicationBuffer;
import llnl.visit.Plugin;
// ****************************************************************************
// Class: DeformSphereGlyphAttributes
//
// Purpose:
// Attributes for the DeformSphereGlyph
//
// Notes: Autogenerated by xml2java.
//
// Programmer: xml2java
// Creation: omitted
//
// Modifications:
//
// ****************************************************************************
public class DeformSphereGlyphAttributes extends AttributeSubject implements Plugin
{
public DeformSphereGlyphAttributes()
{
super(3);
var = new String("Default");
scale = 1;
minSize = 1;
}
public DeformSphereGlyphAttributes(DeformSphereGlyphAttributes obj)
{
super(3);