Fix typos, most noticed by codespell.

This commit is contained in:
Ryan Pavlik 2019-12-05 15:20:56 -06:00
parent 34b68e0cec
commit 6c8ab64e76
124 changed files with 350 additions and 349 deletions

View File

@ -24,7 +24,7 @@ You need Qt5.9 and we assume that we have qtcreator installed and you know how t
├──...
└──...
All the include paths inside the `.pro` assume this relative positioning of the `meshlab` and `vcglib` folders. Please note that, given the fact that the developement of the vcglib and meshlab are often intermixed, if you compile the devel branch of the meshlab repo (or the current master until we reach a distributable beta), you should use the devel branch of the vcglib.
All the include paths inside the `.pro` assume this relative positioning of the `meshlab` and `vcglib` folders. Please note that, given the fact that the development of the vcglib and meshlab are often intermixed, if you compile the devel branch of the meshlab repo (or the current master until we reach a distributable beta), you should use the devel branch of the vcglib.
### Compiling
MeshLab has a plugin architecture and therefore all the plugins are compiled separately; some of them are harder to be compiled. Don't worry, if a plugin fails to compile just remove it and you lose just that functionality. As a first step you should try to use the `src/meshlab_mini.pro` that contains the info for building meshlab with a minimal set of plugins with no external dependencies and usually compile with no problem.

View File

@ -86,7 +86,7 @@ Moreover ID are UNSAFE (different plugin can have same id) so they should be use
class MeshLabInterface
{
public:
/** the type used to identify plugin actions; there is a one-to-one relation betweeen an ID and an Action.
/** the type used to identify plugin actions; there is a one-to-one relation between an ID and an Action.
\todo To be renamed as ActionIDType
*/
@ -98,7 +98,7 @@ public:
/// Standard stuff that usually should not be redefined.
void setLog(GLLogStream *log) { this->log = log; }
// This fucntion must be used to communicate useful information collected in the parsing/saving of the files.
// This function must be used to communicate useful information collected in the parsing/saving of the files.
// NEVER EVER use a msgbox to say something to the user.
template <typename... Ts>
void Log(const char * f, Ts&&... ts )
@ -158,7 +158,7 @@ public:
\li reset: revert to the hardwired values
If your plugins/action has no GlobalParameter, do nothing.
The RichParameterSet comes to the StartDecorate already intialized with the values stored on the permanent storage.
The RichParameterSet comes to the StartDecorate already initialized with the values stored on the permanent storage.
At the start up the initGlobalParameterSet function is called with an empty RichParameterSet (to collect the default values)
If a filter wants to save some permanent stuff should set the permanent default values.
*/
@ -247,7 +247,7 @@ class MeshFilterInterface : public MeshCommonInterface
{
public:
/** The FilterClass enum represents the set of keywords that must be used to categorize a filter.
Each filter can belong to one or more filtering class, or-ed togheter.
Each filter can belong to one or more filtering class, or-ed together.
*/
enum FilterClass
{
@ -310,7 +310,7 @@ public:
/**
The filters can have some additional requirements on the mesh capabiliteis.
// For example if a filters requires Face-Face Adjacency you shoud re-implement
// For example if a filters requires Face-Face Adjacency you should re-implement
// this function making it returns MeshModel::MM_FACEFACETOPO.
// The framework will ensure that the mesh has the requirements satisfied before invoking the applyFilter function
//
@ -351,7 +351,7 @@ public:
/** \brief tests if a filter is applicable to a mesh.
This function is a handy wrapper used by the framework for the \a getPreConditions callback;
For istance a colorize by quality filter cannot be applied to a mesh without per-vertex-quality.
For instance a colorize by quality filter cannot be applied to a mesh without per-vertex-quality.
On failure (returning false) the function fills the MissingItems list with strings describing the missing items.
*/
bool isFilterApplicable(QAction *act, const MeshModel& m, QStringList &MissingItems) const;
@ -497,7 +497,7 @@ class MeshDecorateInterface : public MeshCommonInterface
public:
/** The DecorationClass enum represents the set of keywords that must be used to categorize a filter.
Each filter can belong to one or more filtering class, or-ed togheter.
Each filter can belong to one or more filtering class, or-ed together.
*/
enum DecorationClass
{
@ -529,7 +529,7 @@ public:
/** \brief tests if a decoration is applicable to a mesh.
* used only for PerMesh Decorators.
For istance curvature cannot be shown on a mesh without curvature.
For instance curvature cannot be shown on a mesh without curvature.
On failure (returning false) the function fills the MissingItems list with strings describing the missing items.
It is invoked only for decoration of \i PerMesh class;
*/
@ -606,7 +606,7 @@ public:
// Called when the user changes the selected layer
//by default it calls end edit with the layer that was selected and start with the new layer that is
//selected. This ensures that plugins who dont support layers do not get sent pointers to meshes
//selected. This ensures that plugins who don't support layers do not get sent pointers to meshes
//they are not expecting.
// If your editing plugins is not singleMesh you MUST reimplement this to correctly handle the change of layer.
virtual void LayerChanged(MeshDocument &md, MeshModel &oldMeshModel, GLArea *parent, MLSceneGLSharedDataContext* cont)

View File

@ -219,7 +219,7 @@ void FilterScriptDialog::editOldParameters( const int row )
return;
}
//fill the paramter set with all the names and descriptions which are lost in the
//fill the parameter set with all the names and descriptions which are lost in the
//filter script
RichParameterSet newParameterSet;
iFilter->initParameterSet(action, *(mainWindow->meshDoc()), newParameterSet);

View File

@ -2229,7 +2229,7 @@ void GLArea::loadShot(const QPair<Shotm,float> &shotAndScale){
//Point3f tra = trackball.track.tra;
//
//// Apply this formula:
//// SR(t+p) -v = k[S'R'(t'+p) -v] forall p, R=R', k is a costant
//// SR(t+p) -v = k[S'R'(t'+p) -v] forall p, R=R', k is a constant
//// SR(t) -v = k[S'R(t') -v]
//// t' = 1/k* S'^-1St + (k-1)/k S'^-1*R^-1v
//Matrix44f s0 = Matrix44f().SetScale(trackball.track.sca,trackball.track.sca, trackball.track.sca);

View File

@ -359,7 +359,7 @@ public:
// the following pairs of slot/signal implements a very simple message passing mechanism.
// a widget that has a pointer to the glarea call the sendViewDir() slot and
// setup a connect to recive the transmitViewDir signal that actually contains the point3f.
// setup a connect to receive the transmitViewDir signal that actually contains the point3f.
// This mechanism is used to get the view direction/position and picking point on surface in the filter parameter dialog.
// See the Point3fWidget code.
signals :

View File

@ -22,8 +22,8 @@
</H2>
<table>
<tr><td width="200" align='right'>Click on eye icon: </td><td width="100">Toggle visibility status of the layer</td></tr>
<tr><td width="200" align='right'>Ctrl-Click on eye icon: </td><td width="100">Make Invisibile all other layers</td></tr>
<tr><td width="200" align='right'>Alt-Click on eye icon: </td><td width="100">Make Visibile all other layers</td></tr>
<tr><td width="200" align='right'>Ctrl-Click on eye icon: </td><td width="100">Make Invisible all other layers</td></tr>
<tr><td width="200" align='right'>Alt-Click on eye icon: </td><td width="100">Make Visible all other layers</td></tr>
<tr><td width="200" align='right'>Shift-Click on eye icon: </td><td width="100">Invert visibility status of all the layers</td></tr>
</table>
</font>

View File

@ -588,7 +588,7 @@ void MainWindow::setHandleMenu(QPoint point, Qt::Orientation orientation, QSplit
if(pickingId>=0)
splitUpAct->setEnabled(mvc->getViewer(pickingId)->size().width()/2 > mvc->getViewer(pickingId)->minimumSizeHint().width());
//the viewer on top can be closed only if the splitter over the handle that orginated the event has one child
//the viewer on top can be closed only if the splitter over the handle that originated the event has one child
bool unSplittabilityUp = true;
Splitter * upSplitter = qobject_cast<Splitter *>(origin->widget(0));
if(upSplitter)
@ -600,7 +600,7 @@ void MainWindow::setHandleMenu(QPoint point, Qt::Orientation orientation, QSplit
if(pickingId>=0)
splitDownAct->setEnabled(mvc->getViewer(pickingId)->size().width()/2 > mvc->getViewer(pickingId)->minimumSizeHint().width());
//the viewer below can be closed only if the splitter ounder the handle that orginated the event has one child
//the viewer below can be closed only if the splitter ounder the handle that originated the event has one child
bool unSplittabilityDown = true;
Splitter * downSplitter = qobject_cast<Splitter *>(origin->widget(1));
if(downSplitter)
@ -627,7 +627,7 @@ void MainWindow::setHandleMenu(QPoint point, Qt::Orientation orientation, QSplit
if(pickingId>=0)
splitRightAct->setEnabled(mvc->getViewer(pickingId)->size().height()/2 > mvc->getViewer(pickingId)->minimumSizeHint().height());
//the viewer on the rigth can be closed only if the splitter on the right the handle that orginated the event has one child
//the viewer on the right can be closed only if the splitter on the right the handle that originated the event has one child
bool unSplittabilityRight = true;
Splitter * rightSplitter = qobject_cast<Splitter *>(origin->widget(1));
if(rightSplitter)
@ -639,7 +639,7 @@ void MainWindow::setHandleMenu(QPoint point, Qt::Orientation orientation, QSplit
if(pickingId>=0)
splitLeftAct->setEnabled(mvc->getViewer(pickingId)->size().height()/2 > mvc->getViewer(pickingId)->minimumSizeHint().height());
//the viewer on the left can be closed only if the splitter on the left of the handle that orginated the event has one child
//the viewer on the left can be closed only if the splitter on the left of the handle that originated the event has one child
bool unSplittabilityLeft = true;
Splitter * leftSplitter = qobject_cast<Splitter *>(origin->widget(0));
if(leftSplitter)
@ -1101,7 +1101,7 @@ void MainWindow::showTooltip(QAction* q)
// /////////////////////////////////////////////////
// The Very Important Procedure of applying a filter
// /////////////////////////////////////////////////
// It is splitted in two part
// It is split in two part
// - startFilter that setup the dialogs and asks for parameters
// - executeFilter callback invoked when the params have been set up.
@ -1156,7 +1156,7 @@ void MainWindow::startFilter()
xmldialog = NULL;
}
// (2) Ask for filter parameters and eventally directly invoke the filter
// (2) Ask for filter parameters and eventually directly invoke the filter
// showAutoDialog return true if a dialog have been created (and therefore the execution is demanded to the apply event)
// if no dialog is created the filter must be executed immediately
if(! stddialog->showAutoDialog(iFilter, meshDoc()->mm(), (meshDoc()), action, this, GLA()) )
@ -1235,7 +1235,7 @@ void MainWindow::startFilter()
delete stddialog;
stddialog = NULL;
}
// (2) Ask for filter parameters and eventally directly invoke the filter
// (2) Ask for filter parameters and eventually directly invoke the filter
// showAutoDialog return true if a dialog have been created (and therefore the execution is demanded to the apply event)
// if no dialog is created the filter must be executed immediatel
if(!xmldialog->showAutoDialog(filt,PM,meshDoc(), this, GLA()))
@ -1431,7 +1431,7 @@ void MainWindow::executeFilter(QAction *action, RichParameterSet &params, bool i
iFilter->setLog(&meshDoc()->Log);
// Ask for filter requirements (eg a filter can need topology, border flags etc)
// and statisfy them
// and satisfy them
qApp->setOverrideCursor(QCursor(Qt::WaitCursor));
MainWindow::globalStatusBar()->showMessage("Starting Filter...",5000);
int req=iFilter->getRequirements(action);
@ -1754,7 +1754,7 @@ void MainWindow::executeFilter(MeshLabXMLFilterContainer* mfc,const QMap<QString
iFilter->setLog(&meshDoc()->Log);
//// Ask for filter requirements (eg a filter can need topology, border flags etc)
//// and statisfy them
//// and satisfy them
qApp->setOverrideCursor(QCursor(Qt::WaitCursor));
MainWindow::globalStatusBar()->showMessage("Starting Filter...",5000);
//int req=iFilter->getRequirements(action);
@ -1989,7 +1989,7 @@ void MainWindow::scriptCodeExecuted( const QScriptValue& val,const int time,cons
}
}
// Edit Mode Managment
// Edit Mode Management
// At any point there can be a single editing plugin active.
// When a plugin is active it intercept the mouse actions.
// Each active editing tools

View File

@ -119,7 +119,7 @@ void MultiViewer_Container::addView(GLArea* viewer,Qt::Orientation orient)
/ \
View2 View3
In the GUI, when a viewer is splitted, the new one appears on its right (the space is split in two equal portions).
In the GUI, when a viewer is split, the new one appears on its right (the space is split in two equal portions).
*/
//CASE 0: only when the first viewer is opened, just add it and return;
if (viewerCounter()==0)

View File

@ -682,7 +682,7 @@ private:
This class is used to automatically create a frame from a set of parameters.
it is used mostly for creating the main dialog of the filters, but it is used also
in the creation of the additional saving options, post and pre opening processing
and for general parameter setting in edit plugins (e.g. look at the aligment parameters)
and for general parameter setting in edit plugins (e.g. look at the alignment parameters)
*/
class StdParFrame : public QFrame
{
@ -712,7 +712,7 @@ signals:
// This class provide a modal dialog box for asking a generic parameter set
// It can be used by anyone needing for some values in a structred form and having some integrated help
// It can be used by anyone needing for some values in a structured form and having some integrated help
class GenericParamDialog: public QDialog
{
Q_OBJECT

View File

@ -538,7 +538,7 @@ void XMLStdParFrame::savePersistentParameterValue(QString name)
XMLStringWidget* stringwid = qobject_cast<XMLStringWidget*>(widg);
if (stringwid != nullptr)
{
/*WARNING!!!! WHY NOT USING THE ENV PATTERN FOR ALL THE CASES? Because QT when convert a QScriptValue to a QString of a javascript array (eg. [i0,i1,...,in]) return a i0,i1,...,in without the square brackets, making impossible to correctly re evalute again the resulting value*/
/*WARNING!!!! WHY NOT USING THE ENV PATTERN FOR ALL THE CASES? Because QT when convert a QScriptValue to a QString of a javascript array (eg. [i0,i1,...,in]) return a i0,i1,...,in without the square brackets, making impossible to correctly re evaluate again the resulting value*/
Env e;
expr = e.evaluate(expr).toString();
}

View File

@ -554,7 +554,7 @@ signals:
};
// This class provide a modal dialog box for asking a generic parameter set
// It can be used by anyone needing for some values in a structred form and having some integrated help
// It can be used by anyone needing for some values in a structured form and having some integrated help
class OldScriptingSystemXMLParamDialog: public QDialog
{
Q_OBJECT

View File

@ -86,7 +86,7 @@ bool DecorateBackgroundPlugin::startDecorate( QAction * action, MeshDocument &/*
switch(ID(action))
{
case DP_SHOW_CUBEMAPPED_ENV :
if(parset->findParameter(CubeMapPathParam())== NULL) qDebug("CubeMapPath was not setted!!!");
if(parset->findParameter(CubeMapPathParam())== NULL) qDebug("CubeMapPath was not set!!!");
cubemapFileName = parset->getString(CubeMapPathParam());
break;
case DP_SHOW_GRID:
@ -99,7 +99,7 @@ bool DecorateBackgroundPlugin::startDecorate( QAction * action, MeshDocument &/*
void DecorateBackgroundPlugin::decorateDoc(QAction *a, MeshDocument &m, RichParameterSet * parset,GLArea * gla, QPainter *, GLLogStream &)
{
static QString lastname("unitialized");
static QString lastname("uninitialized");
switch(ID(a))
{
case DP_SHOW_CUBEMAPPED_ENV :

View File

@ -47,7 +47,7 @@ QString DecorateBasePlugin::decorationInfo(FilterIDType filter) const
case DP_SHOW_QUALITY_HISTOGRAM: return tr("Draw a (colored) Histogram of the per vertex/face quality");
case DP_SHOW_QUALITY_CONTOUR: return tr("Draw quality contours, e.g. the isolines of the quality field defined over the surface ");
case DP_SHOW_CAMERA: return tr("Draw the position of the mesh camera and raster cameras");
case DP_SHOW_TEXPARAM: return tr("Draw an overlayed flattened version of the current mesh that show the current parametrization");
case DP_SHOW_TEXPARAM: return tr("Draw an overlaid flattened version of the current mesh that show the current parametrization");
case DP_SHOW_SELECTED_MESH: return tr("Highlight the current mesh");
}
assert(0);
@ -785,7 +785,7 @@ void DecorateBasePlugin::DisplayCamera(QString who, Shotm &ls, int cameraSourceI
// glLabel::render2D(painter,glLabel::TOP_LEFT,ln++, QString("axis 1 - %1 %2 %3").arg(ax1[0]).arg(ax1[1]).arg(ax1[2]));
// glLabel::render2D(painter,glLabel::TOP_LEFT,ln++, QString("axis 2 - %1 %2 %3").arg(ax2[0]).arg(ax2[1]).arg(ax2[2]));
// glLabel::render2D(painter,glLabel::TOP_LEFT,ln++, QString("Fov %1 ( %2 x %3) ").arg(fov).arg(ls.Intrinsics.ViewportPx[0]).arg(ls.Intrinsics.ViewportPx[1]));
// glLabel::render2D(painter,glLabel::TOP_LEFT,ln++, QString("Focal Lenght %1 (pxsize %2 x %3) ").arg(focal).arg(ls.Intrinsics.PixelSizeMm[0]).arg(ls.Intrinsics.PixelSizeMm[1]));
// glLabel::render2D(painter,glLabel::TOP_LEFT,ln++, QString("Focal Length %1 (pxsize %2 x %3) ").arg(focal).arg(ls.Intrinsics.PixelSizeMm[0]).arg(ls.Intrinsics.PixelSizeMm[1]));
this->RealTimeLog("Camera Info", who,

View File

@ -39,7 +39,7 @@ class GLArea;
/**
* Base abstract class for all the four decorator methods(shadow mapping, VSM shadow mapping, VSM shadow mapping
* with blur and Screen Space Ambient Occlusion). It defines the method that should be implemented in the derived
* class(init(), runShader() and setup()). It defines a set of methods in common beetwen all the derived class too.
* class(init(), runShader() and setup()). It defines a set of methods in common between all the derived class too.
*/
class DecorateShader
{
@ -305,9 +305,9 @@ protected:
/**
* Generates a texture color for the handler <b>tex</b> and attaches it to the FBO
* at the attachement target defined by <b>attachment</b>. The FBO should be binded before the method is called.
* at the attachment target defined by <b>attachment</b>. The FBO should be binded before the method is called.
* @param tex the texture handler
* @param attachement the FBO attachment target.
* @param attachment the FBO attachment target.
*/
void genColorTextureEXT(GLuint& tex, GLenum attachment){
glGenTextures(1, &tex);

View File

@ -99,7 +99,7 @@ void ShadowMapping::renderingFromLightSetup(MeshDocument& md, GLArea* gla){
track.rot.ToMatrix(rotation);
glMultMatrixf(rotation.transpose().V());
//traslate the model in the center
//translate the model to the center
glTranslatef(-center[0],-center[1],-center[2]);
}

View File

@ -455,15 +455,15 @@ bool AlignGlobal::GlobalAlign(const std::map<int,string> &Names, const double e
curr=ChooseDormantWithMostDormantLink ();
if(curr==0) {
LOG(elfp,"\nFailed ChooseDormantWithMostDormantLink, choosen id:%i\n" ,0);
LOG(elfp,"\nFailed ChooseDormantWithMostDormantLink, chosen id:%i\n" ,0);
break; // non ci sono piu' componenti connesse composte da piu' di una singola mesh.
}
else LOG(elfp,"\nCompleted ChooseDormantWithMostDormantLink, choosen id:%i\n" ,curr->id);
else LOG(elfp,"\nCompleted ChooseDormantWithMostDormantLink, chosen id:%i\n" ,curr->id);
curr->Active=true;
cursid=curr->sid;
curr=ChooseDormantWithMostActiveLink ();
if(curr==0) LOG(elfp,"\nFailed ChooseDormantWithMostActiveLink, choosen id:%i\n" ,0);
else LOG(elfp,"\nCompleted ChooseDormantWithMostActiveLink, choosen id:%i\n" ,curr->id);
if(curr==0) LOG(elfp,"\nFailed ChooseDormantWithMostActiveLink, chosen id:%i\n" ,0);
else LOG(elfp,"\nCompleted ChooseDormantWithMostActiveLink, chosen id:%i\n" ,curr->id);
}
LOG(elfp,"\nAdded node %i '%s' with %i/%i Active link\n",curr->id,Names.find(curr->id)->second.c_str(),curr->ActiveAdjNum(),curr->Adj.size());

View File

@ -137,7 +137,7 @@ void AlignPair::Stat::HTMLDump(FILE *fp)
This function is used to choose remove outliers after each ICP iteration.
All the points with a distance over the given Percentile are discarded.
It uses two parameters
MaxPointNum an (unused) hard limit on the number of points that are choosen
MaxPointNum an (unused) hard limit on the number of points that are chosen
MinPointNum the minimum number of points that have to be chosen to be usable
*/

View File

@ -47,7 +47,7 @@ void Guess::ApplyTransformation(const Point3f &BaseTranslation, const Matrix44f
/*
Very Low level function
Given a Occupancy grid intialized with the Fix mesh.
Given a Occupancy grid initialized with the Fix mesh.
We search the best translation matrix T such that
T * R * Mov has the greatest overlap with Fix
*/
@ -99,7 +99,7 @@ void Guess::ComputeTrans(std::vector<Result> &rv)
std::vector<Result> rvt;
Point3d BestTransV;
// Second Step: Compute for each possibile Orientation the Best Translation
// Second Step: Compute for each possible Orientation the Best Translation
Matrix44d TrBase;
size_t i;
for(i=0;i<MV.size();++i)
@ -194,7 +194,7 @@ void Guess::ComputeAlign(std::vector<Result> &rv)
ar.Pmov, ar.Nmov,
ar.H, ar.as);
ar.err=ar.as.LastPcl50();
// printf("Ornt %2i n %3i (%6.3f %6.3f %6.3f) ang %2i %s Err:%8.5f %4i \n",
// printf("Ornt %2i n %3i (%6.3f %6.3f %6.3f) angle %2i %s Err:%8.5f %4i \n",
// i, rv[i].nind,NV[rv[i].nind][0],NV[rv[i].nind][1],NV[rv[i].nind][2],rv[i].angl,
// AlignPair::ErrorMsg(aa.status),
// ar.err,

View File

@ -51,10 +51,10 @@ void AlignParameter::AlignPairParamToRichParameterSet(const AlignPair::Param &ap
"This value is also dynamically changed by the 'Reduce Distance Factor'"));
rps.addParam(new RichFloat("TrgDistAbs",app.TrgDistAbs,"Target Distance","When 50% of the chosen samples are below this distance we consider the two mesh aligned. Usually it should be a value lower than the error of the scanning device. "));
rps.addParam(new RichInt("MaxIterNum",app.MaxIterNum,"Max Iteration Num","The maximum number of iteration that the ICP is allowed to perform."));
rps.addParam(new RichBool("SampleMode",app.SampleMode == AlignPair::Param::SMNormalEqualized,"Normal Equalized Sampling","if true (default) the sample points of icp are choosen with a distribution uniform with respect to the normals of the surface. Otherwise they are distributed in a spatially uniform way."));
rps.addParam(new RichBool("SampleMode",app.SampleMode == AlignPair::Param::SMNormalEqualized,"Normal Equalized Sampling","if true (default) the sample points of icp are chosen with a distribution uniform with respect to the normals of the surface. Otherwise they are distributed in a spatially uniform way."));
rps.addParam(new RichFloat("ReduceFactorPerc",app.ReduceFactorPerc,"MSD Reduce Factor","At each ICP iteration the Minimal Starting Distance is reduced to be 5 times the <Reduce Factor> percentile of the sample distances (e.g. if RF is 0.9 the new Minimal Starting Distance is 5 times the value <X> such that 90% of the sample lies at a distance lower than <X>."));
rps.addParam(new RichFloat("PassHiFilter",app.PassHiFilter,"Sample Cut High","At each ICP iteration all the sample that are farther than the <cuth high> percentile are discarded ( In practice we use only the <cut high> best results )."));
rps.addParam(new RichBool("MatchMode",app.MatchMode == AlignPair::Param::MMRigid,"Rigid matching","If true the ICP is cosntrained to perform matching only throug roto-translations (no scaling allowed). If false a more relaxed transformation matrix is allowed (scaling and shearing can appear)."));
rps.addParam(new RichBool("MatchMode",app.MatchMode == AlignPair::Param::MMRigid,"Rigid matching","If true the ICP is cosntrained to perform matching only through roto-translations (no scaling allowed). If false a more relaxed transformation matrix is allowed (scaling and shearing can appear)."));
}
void AlignParameter::RichParameterSetToMeshTreeParam(const RichParameterSet &fps , MeshTree::Param &mtp)
@ -68,7 +68,7 @@ void AlignParameter::MeshTreeParamToRichParameterSet(const MeshTree::Param &mtp,
{
rps.clear();
rps.addParam(new RichInt("OGSize",mtp.OGSize,"Occupancy Grid Size","To compute the overlap between range maps we discretize them into voxel and count them (both for area and overlap); This parameter affect the resolution of the voxelization process. Using a too fine voxelization can "));
rps.addParam(new RichFloat("arcThreshold",mtp.arcThreshold,"Arc Area Thr.","We run ICP on every pair of mesh with a relative overlap greather than this threshold. The relative overlap is computed as overlapArea / min(area1,area2)"));
rps.addParam(new RichFloat("arcThreshold",mtp.arcThreshold,"Arc Area Thr.","We run ICP on every pair of mesh with a relative overlap greater than this threshold. The relative overlap is computed as overlapArea / min(area1,area2)"));
rps.addParam(new RichFloat("recalcThreshold",mtp.recalcThreshold,"Recalc Fraction","Every time we start process we discard the <recalc> fraction of all the arcs in order to recompute them and hopefully improve the final result. It corresponds to iteratively recalc the bad arcs."));
}

View File

@ -202,7 +202,7 @@ void MeshTree::Process(vcg::AlignPair::Param &ap, MeshTree::Param &mtp)
//if there are no valid arcs complain and return
if(!hasValidAlign) {
cb(0,qUtf8Printable(buf.sprintf("\n Failure. No succesful arc among candidate Alignment arcs. Nothing Done.\n")));
cb(0,qUtf8Printable(buf.sprintf("\n Failure. No successful arc among candidate Alignment arcs. Nothing Done.\n")));
return;
}

View File

@ -312,7 +312,7 @@
<item row="1" column="1">
<widget class="QRadioButton" name="minWRBtn">
<property name="text">
<string>Minimum Weigth</string>
<string>Minimum Weight</string>
</property>
</widget>
</item>

View File

@ -46,7 +46,7 @@ MeshEditInterface* EditHoleFactory::getMeshEditInterface(QAction *action)
if(action == editHole)
{
return new EditHolePlugin();
} else assert(0); //should never be asked for an action that isnt here
} else assert(0); //should never be asked for an action that isn't here
}
QString EditHoleFactory::getEditToolDescription(QAction *)

View File

@ -369,8 +369,8 @@ public:
/* Build a bridge inner to the same hole. It chooses the best bridge computing quality
* of 2 faces and similarity (as number of edge) of two next hole. Bridge is build follow
* bridge's rule, bridge must have 2 border edge.
* infoLabel paramter is used to show work progress.
* Return number of bridge builded.
* infoLabel parameter is used to show work progress.
* Return number of bridge built.
*/
static bool AutoSelfBridging(HoleSetManager<MESH>* holesManager, double dist_coeff=0.0, std::vector<FacePointer *> *app=0)
{
@ -472,7 +472,7 @@ public:
/* It connects iteratively selected holes with the best bridge.
* Result is unique hole instead of init holes.
* Return number of bridges builded.
* Return number of bridges built.
*/
static void AutoMultiBridging(HoleSetManager<MESH>* holesManager, std::vector<FacePointer *> *app=0 )
{
@ -948,7 +948,7 @@ public:
if(dist==2)
{
// face used to close non-manifold holes, close entirely a "sub-hole" (sub-hole has
// only 3 border edge). This face become a patch face wich fill an invisible subhole.
// only 3 border edge). This face become a patch face which fill an invisible subhole.
holesManager->SetPatchAttr(&*fit);
fit->FFp(1) = p2.f;
fit->FFi(1) = p2.z;

View File

@ -44,7 +44,7 @@
*
* FgtHole uses meshe's additional data to mark interesting face, so surfing
* the hole faces is driven by face-face ajacency and mark meaning.
* Additional data are accesible for an hole by parentManager (HoleSetManager)
* Additional data are accessible for an hole by parentManager (HoleSetManager)
* which links hole to a mesh.
* Characteristic faces for an hole are marked as:
* - HoleBorderFace: face which initially (before filling) have 1 or 2 border edge.

View File

@ -33,9 +33,9 @@
#include "fgtBridge.h"
#include "holeSetManager.h"
/* This class is the "model" of model-view architecture, so it implements methods to exposes data
* informations about holes as QAbstractItemModel says.
* It contains an istance of HoleSetManager to know and manipulate holes and bridges.
/* This class is the "model" of model-view architecture, so it implements methods to expose data
* information about holes as QAbstractItemModel says.
* It contains an instance of HoleSetManager to know and manipulate holes and bridges.
*/
class HoleListModel : public QAbstractItemModel
{

View File

@ -207,7 +207,7 @@ public:
// update bridging status for holes remaining.
// some hole marked as "bridged" can be adjacent to bridge which is accepted
// because it is adjacent to hole filled and accepted, so they arent "bridged" now.
// because it is adjacent to hole filled and accepted, so they aren't "bridged" now.
for( it= holes.begin(); it != holes.end(); it++)
{
assert(!it->IsFilled());

View File

@ -46,7 +46,7 @@ MeshEditInterface* EditManipulatorsFactory::getMeshEditInterface(QAction *action
if(action == editManipulators)
{
return new EditManipulatorsPlugin();
} else assert(0); //should never be asked for an action that isnt here
} else assert(0); //should never be asked for an action that isn't here
return NULL;
}

View File

@ -46,7 +46,7 @@ MeshEditInterface* EditMeasureFactory::getMeshEditInterface(QAction *action)
if(action == editMeasure)
{
return new EditMeasurePlugin();
} else assert(0); //should never be asked for an action that isnt here
} else assert(0); //should never be asked for an action that isn't here
return NULL;
}

View File

@ -46,7 +46,7 @@ MeshEditInterface* EditMutualCorrsFactory::getMeshEditInterface(QAction *action)
if(action == editMutualCorrs)
{
return new EditMutualCorrsPlugin();
} else assert(0); //should never be asked for an action that isnt here
} else assert(0); //should never be asked for an action that isn't here
return NULL;
}

View File

@ -1331,7 +1331,7 @@ void drawPercentualPolyLine(GLArea * gla, QPoint &mid, MeshModel &m, GLfloat* pi
double pix_y = b2;
double pix_z = c2;
/** to search with quicksearch the nearset zbuffer value in the line */
/** to search with quicksearch the nearest zbuffer value in the line */
for (int k = 0; k < STEPS; k++)
{
double inv_yy = gla->height() - pix_y;

View File

@ -46,7 +46,7 @@ MeshEditInterface* EditPaintFactory::getMeshEditInterface(QAction *action)
if(action == editPaint)
{
return new EditPaintPlugin();
} else assert(0); //should never be asked for an action that isnt here
} else assert(0); //should never be asked for an action that isn't here
return NULL;
}

View File

@ -180,7 +180,7 @@ inline float brush(Brush b, float distance, float dx, float dy, float hardness)
{
case CIRCLE : //circle
if (distance >= 1.0) op = 1.0;
else if (distance * 100.0 > hardness) //if after the treshold of total color
else if (distance * 100.0 > hardness) //if after the threshold of total color
{
op = (distance * 100.0 - hardness)/ (float) (100 - hardness);
}

View File

@ -891,7 +891,7 @@ p, li { white-space: pre-wrap; }
<item row="0" column="0">
<widget class="QLabel" name="label_percentual">
<property name="text">
<string>Strenght %</string>
<string>Strength %</string>
</property>
</widget>
</item>
@ -1394,7 +1394,7 @@ p, li { white-space: pre-wrap; }
<string>&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;fast:&lt;/span&gt; works better with big meshes, but can loose some vertexes when faces are not direct connected&lt;br /&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;slow but accurate: &lt;/span&gt;sholud be used with small meshes, because it finds every vertex during painting&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;fast:&lt;/span&gt; works better with big meshes, but can lose some vertexes when faces are not direct connected&lt;br /&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;slow but accurate: &lt;/span&gt;sholud be used with small meshes, because it finds every vertex during painting&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<item>
<property name="text">

View File

@ -46,7 +46,7 @@ MeshEditInterface* EditPickPointsFactory::getMeshEditInterface(QAction *action)
if(action == editPickPoints)
{
return new EditPickPointsPlugin();
} else assert(0); //should never be asked for an action that isnt here
} else assert(0); //should never be asked for an action that isn't here
}
QString EditPickPointsFactory::getEditToolDescription(QAction *)

View File

@ -48,7 +48,7 @@ using namespace vcg;
EditPickPointsPlugin::EditPickPointsPlugin()
{
//initialize to false so we dont end up collection some weird point in the beginning
// initialize to false so we don't end up collecting some weird point in the beginning
registerPoint = false;
moveSelectPoint = false;
@ -98,7 +98,7 @@ void EditPickPointsPlugin::Decorate(MeshModel &mm, GLArea *gla, QPainter *painte
currentMousePosition.y(),
pickedPoint[0], pickedPoint[1], pickedPoint[2]); */
//let the dialog know that this was the pointed picked incase it wants the information
//let the dialog know that this was the pointed picked in case it wants the information
bool picked = Pick<Point3m>(currentMousePosition.x(), currentMousePosition.y(), pickedPoint);
pickPointsDialog->selectOrMoveThisPoint(pickedPoint);
@ -127,7 +127,7 @@ void EditPickPointsPlugin::Decorate(MeshModel &mm, GLArea *gla, QPainter *painte
CFaceO::NormalType faceNormal = face[0]->N();
//qDebug() << "found face normal: " << faceNormal[0] << faceNormal[1] << faceNormal[2];
//if we didnt find a face then dont add the point because the user was probably
//if we didn't find a face then don't add the point because the user was probably
//clicking on another mesh opened inside the glarea
pickPointsDialog->addMoveSelectPoint(pickedPoint, faceNormal);
}
@ -143,7 +143,7 @@ bool EditPickPointsPlugin::StartEdit(MeshModel & mm, GLArea * gla, MLSceneGLShar
{
//qDebug() << "StartEdit Pick Points: " << mm.fileName.c_str() << " ..." << mm.cm.fn;
//if there are no faces then we cant do anything with this plugin
//if there are no faces then we can't do anything with this plugin
if (mm.cm.fn < 1)
{
if (NULL != pickPointsDialog)
@ -166,7 +166,7 @@ bool EditPickPointsPlugin::StartEdit(MeshModel & mm, GLArea * gla, MLSceneGLShar
//set this so redraw can use it
glArea = gla;
//Create GUI window if we dont already have one
//Create GUI window if we don't already have one
if (pickPointsDialog == 0)
{
pickPointsDialog = new PickPointsDialog(this, gla->window());
@ -206,7 +206,7 @@ void EditPickPointsPlugin::mousePressEvent(QMouseEvent *event, MeshModel &mm, GL
{
//qDebug() << "mouse press Pick Points: " << mm.fileName.c_str() << " ...";
//if there are no faces then we cant do anything with this plugin
//if there are no faces then we can't do anything with this plugin
if (mm.cm.fn < 1) return;
if (Qt::RightButton == event->button() &&
@ -225,7 +225,7 @@ void EditPickPointsPlugin::mouseMoveEvent(QMouseEvent *event, MeshModel &mm, GLA
{
//qDebug() << "mousemove pick Points: " << mm.fileName.c_str() << " ...";
//if there are no faces then we cant do anything with this plugin
//if there are no faces then we can't do anything with this plugin
if (mm.cm.fn < 1) return;
if (Qt::RightButton == event->button() &&
@ -244,7 +244,7 @@ void EditPickPointsPlugin::mouseReleaseEvent(QMouseEvent *event, MeshModel &mm,
{
//qDebug() << "mouseRelease Pick Points: " << mm.fileName.c_str() << " ...";
//if there are no faces then we cant do anything with this plugin
//if there are no faces then we can't do anything with this plugin
if (mm.cm.fn < 1) return;
//only add points for the left button

View File

@ -78,7 +78,7 @@ public:
std::vector<Point3m> * getPoint3Vector();
//translate each point using the matrix
//if the mesh moves you can then translate the points useing this function
//if the mesh moves you can then translate the points using this function
void translatePoints(Matrix44m &translation);
//get the suggested filename for the points. will be based on the mesh's filename

View File

@ -432,7 +432,7 @@ PickedPointTreeWidgetItem * PickPointsDialog::addTreeWidgetItemForPoint(Point3m
checkBox->setChecked(present);
//now connect the box to its slot that chanches the checked value of the
//PickedPointTreeWidgetItem and draws all the points. dont do this before
//PickedPointTreeWidgetItem and draws all the points. don't do this before
//set checked or you will have all points that should be drawn, not drawn
connect(checkBox, SIGNAL(toggled(bool)), checkBox, SLOT(toggleAndDraw(bool)));
@ -836,7 +836,7 @@ void PickPointsDialog::savePointTemplate() {
{
filename = QFileDialog::getSaveFileName(this, tr("Save File"), templateWorkingDirectory, "*" + PickPointsTemplate::fileExtension);
//if the user pushes cancel dont do anything
//if the user pushes cancel don't do anything
if ("" == filename) return;
else templateWorkingDirectory = filename;
}

View File

@ -106,7 +106,7 @@ public:
enum Mode { ADD_POINT, MOVE_POINT, SELECT_POINT };
//do soemthing with the point that was just picked(could be add,moving or select)
//do something with the point that was just picked(could be add,moving or select)
void addMoveSelectPoint(Point3m point, CMeshO::FaceType::NormalType faceNormal);
//we need to move the point closest to this one or select it depending on the mode
@ -129,7 +129,7 @@ public:
bool drawNormalAsPin();
//set flag that says the next value will overwite one we may want to jump back to
//set flag that says the next value will overwrite one we may want to jump back to
void recordNextPointForUndo();
public slots:
@ -168,13 +168,13 @@ private:
//the current mode of the GUI
Mode currentMode;
//QT patern - the ui pointer
//QT pattern - the ui pointer
Ui::pickpointsDialog ui;
//a map of the tree items to the points they represent
std::vector<PickedPointTreeWidgetItem*> pickedPointTreeWidgetItemVector;
//the parrent plugin
//the parent plugin
EditPickPointsPlugin *parentPlugin;
//in MOVE_POINT Mode this holds a pointer to the item
@ -230,7 +230,7 @@ private slots:
//save the points to a file
void savePointsToFile();
//ask the user for the filename and then load the pionts
//ask the user for the filename and then load the points
void askUserForFileAndLoadPoints();
//clear the points when the clear button is clicked
@ -254,7 +254,7 @@ private slots:
void undo();
};
//because QT is really dumb and TreeWidgetItems can recieve signals
//because QT is really dumb and TreeWidgetItems can receive signals
class TreeCheckBox : public QCheckBox
{
Q_OBJECT

View File

@ -167,7 +167,7 @@ void EditPointPlugin::Decorate(MeshModel &m, GLArea * gla, QPainter *p)
}
bool EditPointPlugin::StartEdit(MeshModel & m, GLArea * gla, MLSceneGLSharedDataContext* /*cont*/) {
// Needed by MeshLab to colorize the selected points (for istance when we exit the plugin)
// Needed by MeshLab to colorize the selected points (for instance when we exit the plugin)
connect(this, SIGNAL(setSelectionRendering(bool)), gla, SLOT(setSelectVertRendering(bool)));
setSelectionRendering(true);

View File

@ -51,7 +51,7 @@ typedef unsigned int UINT32;
#define NUMBER_OF_HISTOGRAM_BINS 50000
#define NUMBER_OF_HISTOGRAM_BARS 100
// The defalut percentile for clamping equalizer histogram
// The default percentile for clamping equalizer histogram
#define CLAMP_PERCENTILE 90

View File

@ -97,12 +97,12 @@ void applyColorByVertexQuality(MeshModel& mesh, TransferFunction *transferFuncti
if (vertexQuality > maxQuality)
percentageQuality = 1.0f;
else
// calcultating relative quality and applying exponential function: rel(Q)^exp, exp=2*midHandleRelPos
// calculating relative quality and applying exponential function: rel(Q)^exp, exp=2*midHandleRelPos
percentageQuality = pow( ((*vi).Q() - minQuality) / (maxQuality - minQuality) , (float)(2.0f*midHandlePercentilePosition));
currentColor = transferFunction->getColorByQuality(percentageQuality);
if (brightness!=1.0f) //Applying brightness to each color channel, 0<brightness<2, 1=normale brightness, 0=white, 2=black
if (brightness!=1.0f) //Applying brightness to each color channel, 0<brightness<2, 1=normal brightness, 0=white, 2=black
if (brightness<1.0f)
for (int i=0; i<NUMBER_OF_CHANNELS; i++)
currentColor[i] = relative2AbsoluteVali(pow(absolute2RelativeValf(currentColor[i],255.0f),brightness), 255.0f);

View File

@ -250,7 +250,7 @@ TF_KEY* TfChannel::operator [](size_t i)
//CODE USED FOR TESTING (define NOW_TESTING macro to use it)
#ifdef NOW_TESTING
//addes random key to channel
//adds random key to channel
void TfChannel::testInitChannel()
{
int num_of_keys = (rand() % 10) + 1;
@ -533,12 +533,12 @@ Color4b TransferFunction::getColorByQuality (float absoluteQuality, float minQua
if (absoluteQuality > maxQuality)
percentageQuality = 1.0f;
else
// calcultating relative quality and applying exponential function: rel(Q)^exp, exp=2*midHandleRelPos
// calculating relative quality and applying exponential function: rel(Q)^exp, exp=2*midHandleRelPos
percentageQuality = pow( (absoluteQuality - minQuality) / (maxQuality - minQuality) , (float)(2.0f*midRelativeQuality));
currentColor = getColorByQuality(percentageQuality);
if (brightness!=1.0f) //Applying brightness to each color channel, 0<brightness<2, 1=normale brightness, 0=white, 2=black
if (brightness!=1.0f) //Applying brightness to each color channel, 0<brightness<2, 1=normal brightness, 0=white, 2=black
{
if (brightness<1.0f)
for (int i=0; i<NUMBER_OF_CHANNELS; i++)
@ -594,7 +594,7 @@ QString TransferFunction::saveColorBand( QString fn, EQUALIZER_INFO& info )
}
//saving equalizer info too (only one line is needed)
outStream << CSV_FILE_COMMENT << "THE FOLLOWING 4 VALUES REPRESENT EQUALIZER SETTINGS - the first and the third values represent respectively the minimum and the maximum quality values used in histogram, the second one represent the position (in percentage) of the middle quality, and the last one represent the level of brightness as a floating point number (0 copletely dark, 1 original brightness, 2 completely white)" << endl;
outStream << CSV_FILE_COMMENT << "THE FOLLOWING 4 VALUES REPRESENT EQUALIZER SETTINGS - the first and the third values represent respectively the minimum and the maximum quality values used in histogram, the second one represent the position (in percentage) of the middle quality, and the last one represent the level of brightness as a floating point number (0 completely dark, 1 original brightness, 2 completely white)" << endl;
outStream << info.minQualityVal << CSV_FILE_SEPARATOR << info.midQualityPercentage << CSV_FILE_SEPARATOR << info.maxQualityVal << CSV_FILE_SEPARATOR << info.brightness << CSV_FILE_SEPARATOR << endl;
outFile.close();
@ -603,7 +603,7 @@ QString TransferFunction::saveColorBand( QString fn, EQUALIZER_INFO& info )
}
//"moving" the channel identified by ch_code to first plane.
//This operation simply implies the circular shift of the channel_order pivot indexes untill the selected channel code is in the last position of the array
//This operation simply implies the circular shift of the channel_order pivot indexes until the selected channel code is in the last position of the array
void TransferFunction::moveChannelAhead(TF_CHANNELS ch_code)
{
int ch_code_int = (int)ch_code;

View File

@ -47,7 +47,7 @@ MeshEditInterface* QualityMapperFactory::getMeshEditInterface(QAction *action)
if(action == editQuality)
{
return new QualityMapperPlugin();
} else assert(0); //should never be asked for an action that isnt here
} else assert(0); //should never be asked for an action that isn't here
return nullptr;
}

View File

@ -428,7 +428,7 @@ bool QualityMapperDialog::drawEqualizerHistogram(bool leftHandleIsInsideHistogra
QMessageBox::warning(this, tr("Quality Mapper"), tr("The model vertex quality is a constant"), QMessageBox::Ok);
return false;
}
//building histogram chart informations
//building histogram chart information
_histogram_info = new CHART_INFO( ui.equalizerGraphicsView, _equalizer_histogram->MinV(), _equalizer_histogram->MaxV(), 0, computeEqualizerMaxY(_equalizer_histogram, _equalizer_histogram->MinV(), _equalizer_histogram->MaxV()) );
}
else
@ -565,7 +565,7 @@ void QualityMapperDialog::initTF()
//comboBox operations complete. Re-enabling signals for comboBox
ui.presetComboBox->blockSignals( false );
//building transfer function chart informations (if necessary)
//building transfer function chart information (if necessary)
if ( _transferFunction_info == 0 )
_transferFunction_info = new CHART_INFO( ui.transferFunctionView, /*_transferFunction->size(),*/ 0.0f, 1.0f, 0.0f, 1.0f );
@ -637,7 +637,7 @@ void QualityMapperDialog::drawGammaCorrection()
painter.drawLine(0,height-1,width-1,0);
//// Painting the spline representing the exponential funcion: x^exp, 0<=x<=1
//// Painting the spline representing the exponential function: x^exp, 0<=x<=1
int c = _equalizerMidHandlePercentilePosition*width;
QPainterPath path;
path.moveTo(0, height);
@ -658,7 +658,7 @@ void QualityMapperDialog::drawTransferFunction()
//TF must exist!
assert(_transferFunction != 0);
//building transfer function chart informations
//building transfer function chart information
if ( _transferFunction_info == 0 )
_transferFunction_info = new CHART_INFO( ui.transferFunctionView, /* _transferFunction->size(),*/ 0.0f, 1.0f, 0.0f, 1.0f );
else
@ -758,7 +758,7 @@ void QualityMapperDialog::updateColorBand()
}
/*
Draws the partial histogram as background of the transfer funtion scene
Draws the partial histogram as background of the transfer function scene
*/
void QualityMapperDialog::drawTransferFunctionBG ()
{
@ -1325,7 +1325,7 @@ void QualityMapperDialog::on_TF_view_doubleClicked(QPointF pos)
on_applyButton_clicked();
}
// Cut unuseful tails from equalizer histogram
// Cut useless tails from equalizer histogram
void QualityMapperDialog::on_clampButton_clicked()
{
_leftHandleWasInsideHistogram = false;

View File

@ -46,7 +46,7 @@ MeshEditInterface* EditReferencingFactory::getMeshEditInterface(QAction *action)
if(action == editReferencing)
{
return new EditReferencingPlugin();
} else assert(0); //should never be asked for an action that isnt here
} else assert(0); //should never be asked for an action that isn't here
return nullptr;
}

View File

@ -58,7 +58,7 @@ MeshEditInterface* EditSelectFactory::getMeshEditInterface(QAction *action)
else if (action == editSelectArea)
return new EditSelectPlugin(EditSelectPlugin::SELECT_AREA_MODE);
assert(0); //should never be asked for an action that isnt here
assert(0); //should never be asked for an action that isn't here
return nullptr;
}

View File

@ -46,7 +46,7 @@ MeshEditInterface* EditSliceFactory::getMeshEditInterface(QAction *action)
if(action == editSlice)
{
return new ExtraMeshSlidePlugin();
} else assert(0); //should never be asked for an action that isnt here
} else assert(0); //should never be asked for an action that isn't here
}
QString EditSliceFactory::getEditToolDescription(QAction *)

View File

@ -262,7 +262,7 @@ void ExtraMeshSlidePlugin::UpdateVal(SVGPro* sv, SVGProperties * pr)
trackball_slice.center=centre;
trackball_slice.radius=edgeMax;
glColor4f(1.0,0.0,0.0,0.8);
int plane=1; //number of planis, defult=1
int plane=1; //number of planes, default=1
if(dialogsliceobj!=0) plane=dialogsliceobj->getPlaneNumber();
glEnable(GL_BLEND);

View File

@ -62,7 +62,7 @@ Q_SIGNALS:
void RestoreDefault();
private:
Ui::dialogsliceClass ui;
int numPlane; //numeber of plane
int numPlane; //number of plane
float distance;
float distanceRange;
float defaultdistance;

View File

@ -46,7 +46,7 @@ MeshEditInterface* EditTextureFactory::getMeshEditInterface(QAction *action)
if(action == editTexture)
{
return new EditTexturePlugin();
} else assert(0); //should never be asked for an action that isnt here
} else assert(0); //should never be asked for an action that isn't here
}
QString EditTextureFactory::getEditToolDescription(QAction *)

View File

@ -224,7 +224,7 @@ bool EditTexturePlugin::StartEdit(MeshModel &m, GLArea *gla )
connect(this, SIGNAL(setSelectionRendering(bool)),gla,SLOT(setSelectionRendering(bool)));
setSelectionRendering(true);
// Create an istance of the interface
// Create an instance of the interface
if (widget == 0)
{
widget = new TextureEditor(gla->window(), &m, gla, degenerate);
@ -305,7 +305,7 @@ void EditTexturePlugin::InitTexture(MeshModel &m)
// DA METTERE IN Clean.h
/**
Chek if the parametrization is valid
Check if the parametrization is valid
*/
bool EditTexturePlugin::HasCollapsedTextCoords(MeshModel &m)
{

View File

@ -1493,9 +1493,9 @@ void RenderArea::UnifySet()
next->WT(n).u() = mu;
next->WT(n).v() = mv;
}
CFaceO* previus = next;
CFaceO* previous = next;
next = next->VFp(n);
n = previus->VFi(n);
n = previous->VFi(n);
if (next == 0) break;
}
int n1 = path1[i]->VFi();
@ -1592,7 +1592,7 @@ vector<CVertexO*> RenderArea::FindPath(CVertexO* begin, CVertexO* end, CFaceO* f
CVertexO *tmp2 = p->V((j+1)%3);
bool added = false;
int n, oldn;
CFaceO *next, *previus;
CFaceO *next, *previous;
float tu, tv;
if (tmp1 == path[path.size()-1] && ((verso && p->WT(j).u() >= oldu) || (!verso && p->WT(j).u() <= oldu)))
{
@ -1602,7 +1602,7 @@ vector<CVertexO*> RenderArea::FindPath(CVertexO* begin, CVertexO* end, CFaceO* f
else drawnPath1.push_back(Point2f(p->WT((j+1)%3).u(),p->WT((j+1)%3).v()));
if (tmp2 == end) {finish = true; break;}
n = tmp2->VFi(), oldn = (j+1)%3;
next = tmp2->VFp(), previus = p;
next = tmp2->VFp(), previous = p;
added = true;
lastadd = index; lastex = j;
}
@ -1614,7 +1614,7 @@ vector<CVertexO*> RenderArea::FindPath(CVertexO* begin, CVertexO* end, CFaceO* f
else drawnPath1.push_back(Point2f(p->WT(j).u(),p->WT(j).v()));
if (tmp1 == end) {finish = true; break;}
n = tmp1->VFi(), oldn = j;
next = tmp1->VFp(), previus = p;
next = tmp1->VFp(), previous = p;
added = true;
lastadd = index; lastex = j;
}
@ -1626,10 +1626,10 @@ vector<CVertexO*> RenderArea::FindPath(CVertexO* begin, CVertexO* end, CFaceO* f
{
if (tu == next->WT(n).u() && tv == next->WT(n).v() && next != p && !next->IsV())
Q.push_back(next);
previus = next;
previous = next;
oldn = n;
next = next->VFp(n);
n = previus->VFi(n);
n = previous->VFi(n);
if (next == 0) break;
}
break;
@ -1662,7 +1662,7 @@ vector<CVertexO*> RenderArea::FindPath(CVertexO* begin, CVertexO* end, CFaceO* f
void RenderArea::HandleScale(QPoint e)
{
// Move the rectangle of scaling and resize the selction area
// Move the rectangle of scaling and resize the selection area
int tx = rectX - tpanX + e.x();
int ty = rectY - tpanY + e.y();
switch(highlighted)

View File

@ -99,7 +99,7 @@ class RenderArea : public QGLWidget
QImage image; // Background texture
unsigned textNum; // Number of tab (--> index in 'textures' vector)
QString fileName; // Name of the texture
MeshModel *model; // Ref to the model (for upate)
MeshModel *model; // Ref to the model (for update)
Mode mode, oldMode; // Action type
EditMode editMode;
@ -117,7 +117,7 @@ class RenderArea : public QGLWidget
int panX, panY, tpanX, tpanY, oldPX, oldPY, posVX, posVY; // Temp for axis
int maxX, maxY, minX, minY; // For texCoord out of border
int selBit, selVertBit; // User bit: idicates if a face/vertex is selected for editing
int selBit, selVertBit; // User bit: indicates if a face/vertex is selected for editing
bool selected, selectedV; // Indicates if the are some selected faces
QPointF origin; // Origin for rotate editing

View File

@ -55,7 +55,7 @@ class TextureEditor : public QWidget
Ui::TextureEditorClass ui;
void ResetLayout();
void SmoothTextureCoordinates();
MeshModel *model; // Ref to the model (for upate)
MeshModel *model; // Ref to the model (for update)
GLArea *area; // Ref to the GLArea (for refresh)
bool degenere;

View File

@ -119,14 +119,14 @@ class AngleEdgePred
seAngle = math::ToDeg(vcg::Angle(edge ^ ep.f->FFp(ep.z)->N(), ep.f->N()));
}
/* There are always 2 cases wich produce the same angle value:
/* There are always 2 cases which produce the same angle value:
___|_ ____
| | |
-| |-
In the first case the edge lies in a concave area of the mesh
while in the second case it lies in a convex area.
We need a way to know wich is the current case.
We need a way to know which is the current case.
This is done comparing seAngle with thVal.
*/
return (ffangle-athVal >= -0.001 && seAngle-athVal <= 0.001);

View File

@ -125,14 +125,14 @@ void GeometryAgingPlugin::initParameterSet(QAction *action, MeshModel &m, RichPa
"considered as 0."));
params.addParam(new RichFloat("DisplacementSteps", 10, "Displacement steps",
"The whole displacement process is performed as a sequence of small <br>"
"offsets applyed on each vertex. This parameter represents the number <br>"
"of steps into which the displacement process will be splitted. <br>"
"offsets applied on each vertex. This parameter represents the number <br>"
"of steps into which the displacement process will be split. <br>"
"Useful to avoid the introduction of self intersections. <br>"
"Bigger number means better accuracy."));
params.addParam(new RichBool("Selected", m.cm.sfn>0, "Affect only selected faces",
"The aging procedure will be applied to the selected faces only."));
params.addParam(new RichBool("StoreDisplacement", false, "Store erosion informations",
"Select this option if you want to store the erosion informations <br>"
params.addParam(new RichBool("StoreDisplacement", false, "Store erosion information",
"Select this option if you want to store the erosion information <br>"
"over the mesh. A new attribute will be added to each vertex <br>"
"to contain the displacement offset applied to that vertex."));
}
@ -218,8 +218,8 @@ bool GeometryAgingPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPar
if(cb) (*cb)( (i+1)*100/dispSteps, "Aging...");
// blend toghether face normals and recompute vertex normal from these normals
// to get smoother offest directions
// blend together face normals and recompute vertex normal from these normals
// to get smoother offset directions
tri::Smooth<CMeshO>::FaceNormalLaplacianFF(m.cm, 3);
tri::UpdateNormal<CMeshO>::PerVertexFromCurrentFaceNormal(m.cm);
tri::UpdateNormal<CMeshO>::NormalizePerVertex(m.cm);

View File

@ -104,7 +104,7 @@ void FilterCameraPlugin::initParameterSet(QAction *action, MeshDocument &/*m*/,
rotCenter.push_back("camera viewpoint");
rotCenter.push_back("custom point");
parlst.addParam(new RichEnum("rotCenter", 0, rotCenter, tr("Center of rotation:"), tr("Choose a method")));
parlst.addParam(new RichDynamicFloat("angle",0,-360,360,"Rotation Angle","Angle of rotation (in <b>degree</b>). If snapping is enable this vaule is rounded according to the snap value"));
parlst.addParam(new RichDynamicFloat("angle",0,-360,360,"Rotation Angle","Angle of rotation (in <b>degree</b>). If snapping is enabled this value is rounded according to the snap value"));
parlst.addParam(new RichPoint3f("customAxis",Point3f(0,0,0),"Custom axis","This rotation axis is used only if the 'custom axis' option is chosen."));
parlst.addParam(new RichPoint3f("customCenter",Point3f(0,0,0),"Custom center","This rotation center is used only if the 'custom point' option is chosen."));
parlst.addParam(new RichBool ("toallRaster", false, "Apply to all active Raster layers", "Apply the same scaling to all the active Raster layers: it is taken into account only if 'Raster Camera' is selected"));

View File

@ -110,7 +110,7 @@ bool AlignTools::setupThenAlign(MeshModel &/*mm*/, RichParameterSet & par)
}
} else
{
qDebug() << "stuck points file didnt exist: " << ppFileName;
qDebug() << "stuck points file didn't exist: " << ppFileName;
//Log(GLLogStream::WARNING, "No points were found for the Stuck mesh.");
return false;
}
@ -141,7 +141,7 @@ bool AlignTools::setupThenAlign(MeshModel &/*mm*/, RichParameterSet & par)
}
} else
{
qDebug() << "model to move points file didnt exist: " << ppFileName;
qDebug() << "model to move points file didn't exist: " << ppFileName;
//Log(GLLogStream::WARNING, "No points were found for the mesh to move.");
return false;
}
@ -303,7 +303,7 @@ bool AlignTools::align(MeshModel *stuckModel, PickedPoints *stuckPickedPoints,
transformHandle() = modelToMove->cm.Tr;
//now translate all the points in the mesh
//TODO probably should call a function to do this so if meshlab changes we dont have to
//TODO probably should call a function to do this so if meshlab changes we don't have to
//taken from meshlab/src/meshlabplugins/meshfilter/meshfilter.cpp
//if (ID(filter) == (FP_FREEZE_TRANSFORM) ) {
vcg::tri::UpdatePosition<CMeshO>::Matrix(modelToMove->cm, modelToMove->cm.Tr);

View File

@ -107,7 +107,7 @@ QString CleanFilter::filterName(FilterIDType filter) const
case FP_BALL_PIVOTING : return QString("Given a point cloud with normals it reconstructs a surface using the <b>Ball Pivoting Algorithm</b>."
"Starting with a seed triangle, the BPA algorithm pivots a ball of the given radius around the already formed edges"
"until it touches another point, forming another triangle. The process continues until all reachable edges have been tried."
"This surface reconstruction algoritm uses the existing points without creating new ones. Works better with uniformly sampled point clouds. "
"This surface reconstruction algorithm uses the existing points without creating new ones. Works better with uniformly sampled point clouds. "
"If needed first perform a poisson disk subsampling of the point cloud. <br>"
"Bernardini F., Mittleman J., Rushmeier H., Silva C., Taubin G.<br>"
"<b>The ball-pivoting algorithm for surface reconstruction.</b><br>"
@ -119,10 +119,10 @@ QString CleanFilter::filterName(FilterIDType filter) const
case FP_REMOVE_TVERTEX_FLIP : return QString("Delete t-vertices by flipping the opposite edge on the degenerate face if the triangulation quality improves");
case FP_SNAP_MISMATCHED_BORDER : return QString("Try to snap together adjacent borders that are slightly mismatched.<br>"
"This situation can happen on badly triangulated adjacent patches defined by high order surfaces.<br>"
"For each border vertex the filter snap it onto the closest boundary edge only if it is closest of <i>edge_lenght*threshold</i>. When vertex is snapped the correspoinding face it split and a new vertex is created.");
"For each border vertex the filter snap it onto the closest boundary edge only if it is closest of <i>edge_length*threshold</i>. When vertex is snapped the corresponding face is split and a new vertex is created.");
case FP_MERGE_CLOSE_VERTEX : return QString("Merge together all the vertices that are nearer than the specified threshold. Like a unify duplicated vertices but with some tolerance.");
case FP_MERGE_WEDGE_TEX : return QString("Merge together per-wedge texture coords that are very close. Used to correct apparent texture seams that can arise from numerical approximations when saving in ascii formats.");
case FP_REMOVE_DUPLICATE_FACE : return QString("Delete all the duplicate faces. Two faces are considered equal if they are composed by the same set of verticies, regardless of the order of the vertices.");
case FP_REMOVE_DUPLICATE_FACE : return QString("Delete all the duplicate faces. Two faces are considered equal if they are composed by the same set of vertices, regardless of the order of the vertices.");
case FP_REMOVE_FOLD_FACE : return QString("Delete all the single folded faces. A face is considered folded if its normal is opposite to all the adjacent faces. It is removed by flipping it against the face f adjacent along the edge e such that the vertex opposite to e fall inside f");
case FP_REMOVE_NON_MANIF_EDGE : return QString("For each non Manifold edge it iteratively deletes the smallest area face until it becomes 2-Manifold.");
case FP_REMOVE_NON_MANIF_VERT : return QString("Split non Manifold vertices until it becomes 2-Manifold.");
@ -225,7 +225,7 @@ void CleanFilter::initParameterSet(QAction *action,MeshDocument &md, RichParamet
parlst.addParam(new RichAbsPerc("BallRadius",0.0f,0.0f,md.mm()->cm.bbox.Diag(),"Pivoting Ball radius (0 autoguess)","The radius of the ball pivoting (rolling) over the set of points. Gaps that are larger than the ball radius will not be filled; similarly the small pits that are smaller than the ball radius will be filled."));
parlst.addParam(new RichFloat("Clustering",20.0f,"Clustering radius (% of ball radius)","To avoid the creation of too small triangles, if a vertex is found too close to a previous one, it is clustered/merged with it."));
parlst.addParam(new RichFloat("CreaseThr", 90.0f,"Angle Threshold (degrees)","If we encounter a crease angle that is too large we should stop the ball rolling"));
parlst.addParam(new RichBool("DeleteFaces",false,"Delete intial set of faces","if true all the initial faces of the mesh are deleted and the whole surface is rebuilt from scratch, other wise the current faces are used as a starting point. Useful if you run multiple times the algorithm with an incrasing ball radius."));
parlst.addParam(new RichBool("DeleteFaces",false,"Delete initial set of faces","if true all the initial faces of the mesh are deleted and the whole surface is rebuilt from scratch. Otherwise the current faces are used as a starting point. Useful if you run the algorithm multiple times with an increasing ball radius."));
break;
case FP_REMOVE_ISOLATED_DIAMETER:
parlst.addParam(new RichAbsPerc("MinComponentDiag",md.mm()->cm.bbox.Diag()/10.0f,0.0f,md.mm()->cm.bbox.Diag(),"Enter max diameter of isolated pieces","Delete all the connected components (floating pieces) with a diameter smaller than the specified one"));
@ -246,7 +246,7 @@ void CleanFilter::initParameterSet(QAction *action,MeshDocument &md, RichParamet
parlst.addParam(new RichFloat("MergeThr",1.0f/10000.0f,"Merging Threshold","All the per-wedge texture coords that are on the same vertex and are distant less then the given threshold are merged together. It can be used to remove the fake texture seams that arise from error. Distance is in texture space (the default, 1e-4, corresponds to one texel on a 10kx10x texture) "));
break;
case FP_SNAP_MISMATCHED_BORDER:
parlst.addParam(new RichFloat("EdgeDistRatio",1/100.0f,"Edge Distance Ratio", "Collapse edge when the edge / distance ratio is greater than this value. E.g. for default value 1000 two straight border edges are collapsed if the central vertex dist from the straight line composed by the two edges less than a 1/1000 of the sum of the edges lenght. Larger values enforce that only vertexes very close to the line are removed."));
parlst.addParam(new RichFloat("EdgeDistRatio",1/100.0f,"Edge Distance Ratio", "Collapse edge when the edge / distance ratio is greater than this value. E.g. for default value 1000 two straight border edges are collapsed if the central vertex dist from the straight line composed by the two edges less than a 1/1000 of the sum of the edges length. Larger values enforce that only vertexes very close to the line are removed."));
parlst.addParam(new RichBool("UnifyVertices",true,"UnifyVertices","if true the snap vertices are weld together."));
break;
case FP_REMOVE_TVERTEX_COLLAPSE :
@ -426,7 +426,7 @@ bool CleanFilter::applyFilter(QAction *filter, MeshDocument &md, RichParameterSe
{
float threshold = par.getFloat("EdgeDistRatio");
int total = SnapVertexBorder(m.cm, threshold,cb);
Log("Successfully Splitted %d faces to snap", total);
Log("Successfully Split %d faces to snap", total);
m.clearDataMask(MeshModel::MM_FACEFACETOPO);
m.clearDataMask(MeshModel::MM_VERTFACETOPO);
} break;

View File

@ -134,7 +134,7 @@ void FilterColorProjectionPlugin::initParameterSet(QAction *action, MeshDocument
"threshold value for depth buffer projection (shadow buffer)"));
parlst.addParam(new RichBool ("onselection",
false,
"Only on selecton",
"Only on selection",
"If true, projection is only done for selected vertices"));
parlst.addParam(new RichBool ("useangle",
true,

View File

@ -186,7 +186,7 @@ int floatbuffer::initborder(floatbuffer* zerofrom)
maxf = -10000000;
minf = 10000000;
// setting inital data
// setting initial data
//
// -99 outside object (using depthmap to decide -> if (zerofrom==0) )
//
@ -195,7 +195,7 @@ int floatbuffer::initborder(floatbuffer* zerofrom)
// -1 on pixels still to be filled
//getting max/min for treshold
//getting max/min for threshold
for(int kk=0; kk< sx*sy; kk++)
{
{

View File

@ -90,7 +90,7 @@ FilterColorProc::~FilterColorProc()
case CP_THRESHOLDING: return QString("Vertex Color Thresholding");
case CP_CONTR_BRIGHT: return QString("Vertex Color Brightness Contrast Gamma");
case CP_INVERT: return QString("Vertex Color Invert");
case CP_LEVELS: return QString("Vertex Color Levels Adjustement");
case CP_LEVELS: return QString("Vertex Color Levels Adjustment");
case CP_COLOURISATION: return QString("Vertex Color Colourisation");
case CP_DESATURATION: return QString("Vertex Color Desaturation");
case CP_EQUALIZE: return QString("Equalize Vertex Color");
@ -318,7 +318,7 @@ void FilterColorProc::initParameterSet(QAction *a, MeshDocument& md, RichParamet
}
case CP_SATURATE_QUALITY:
{
par.addParam(new RichFloat("gradientThr", 1, "Gradient Threshold", "The maximum value admitted for the quality gradient (in absolute valu)"));
par.addParam(new RichFloat("gradientThr", 1, "Gradient Threshold", "The maximum value admitted for the quality gradient (in absolute value)"));
par.addParam(new RichBool("updateColor", false, "Update ColorMap", "if true the color ramp is computed again"));
break;
@ -335,7 +335,7 @@ void FilterColorProc::initParameterSet(QAction *a, MeshDocument& md, RichParamet
par.addParam(new RichFloat("minVal", minmax.first, "Min", "The value that will be mapped with the lower end of the scale (blue)"));
par.addParam(new RichFloat("maxVal", minmax.second, "Max", "The value that will be mapped with the upper end of the scale (red)"));
par.addParam(new RichDynamicFloat("perc", 0, 0, 100, "Percentile Crop [0..100]", "If not zero this value will be used for a percentile cropping of the quality values.<br> If this parameter is set to a value <i>P</i> then the two values <i>V_min,V_max</i> for which <i>P</i>% of the vertices have a quality <b>lower or greater than <i>V_min,V_max</i> are used as min/max values for clamping.<br><br> The automated percentile cropping is very useful for automatically discarding outliers."));
par.addParam(new RichBool("zeroSym", false, "Zero Simmetric", "If true the min max range will be enlarged to be symmertic (so that green is always Zero)"));
par.addParam(new RichBool("zeroSym", false, "Zero Symmetric", "If true the min max range will be enlarged to be symmetric (so that green is always Zero)"));
break;
}
case CP_MAP_VQUALITY_INTO_COLOR:
@ -345,7 +345,7 @@ void FilterColorProc::initParameterSet(QAction *a, MeshDocument& md, RichParamet
par.addParam(new RichFloat("minVal", minmax.first, "Min", "The value that will be mapped with the lower end of the scale (blue)"));
par.addParam(new RichFloat("maxVal", minmax.second, "Max", "The value that will be mapped with the upper end of the scale (red)"));
par.addParam(new RichDynamicFloat("perc", 0, 0, 100, "Percentile Crop [0..100]", "If not zero this value will be used for a percentile cropping of the quality values.<br> If this parameter is set to a value <i>P</i> then the two values <i>V_min,V_max</i> for which <i>P</i>% of the vertices have a quality <b>lower or greater than <i>V_min,V_max</i> are used as min/max values for clamping.<br><br> The automated percentile cropping is very useful for automatically discarding outliers."));
par.addParam(new RichBool("zeroSym", false, "Zero Simmetric", "If true the min max range will be enlarged to be symmertic (so that green is always Zero)"));
par.addParam(new RichBool("zeroSym", false, "Zero Symmetric", "If true the min max range will be enlarged to be symmetric (so that green is always Zero)"));
break;
}
case CP_MAP_FQUALITY_INTO_COLOR:
@ -355,7 +355,7 @@ void FilterColorProc::initParameterSet(QAction *a, MeshDocument& md, RichParamet
par.addParam(new RichFloat("minVal", minmax.first, "Min", "The value that will be mapped with the lower end of the scale (blue)"));
par.addParam(new RichFloat("maxVal", minmax.second, "Max", "The value that will be mapped with the upper end of the scale (red)"));
par.addParam(new RichDynamicFloat("perc", 0, 0, 100, "Percentile Crop [0..100]", "If not zero this value will be used for a percentile cropping of the quality values.<br> If this parameter is set to a value <i>P</i> then the two values <i>V_min,V_max</i> for which <i>P</i>% of the faces have a quality <b>lower or greater than <i>V_min,V_max</i> are used as min/max values for clamping.<br><br> The automated percentile cropping is very useful for automatically discarding outliers."));
par.addParam(new RichBool("zeroSym", false, "Zero Simmetric", "If true the min max range will be enlarged to be symmertic (so that green is always Zero)"));
par.addParam(new RichBool("zeroSym", false, "Zero Symmetric", "If true the min max range will be enlarged to be symmetric (so that green is always Zero)"));
break;
}

View File

@ -88,7 +88,7 @@ QString FilterCreate::filterInfo(FilterIDType filterId) const
// This function define the needed parameters for each filter. Return true if the filter has some parameters
// it is called every time, so you can set the default value of parameters according to the mesh
// For each parmeter you need to define,
// For each parameter you need to define,
// - the name of the parameter,
// - the string shown in the dialog
// - the default value
@ -122,7 +122,7 @@ void FilterCreate::initParameterSet(QAction *action, MeshModel & /*m*/, RichPara
"<b>Montecarlo</b>: The points are randomly generated with an uniform distribution.<br>"
"<b>Poisson Disk</b>: The points are to follow a poisson disk distribution.<br>"
"<b>Disco Ball</b> Dave Rusin's disco ball algorithm for the regular placement of points on a sphere is used. <br>"
"<b>Recursive Octahedron</b> Points are genereate on the vertex of a recursively subdivided octahedron <br>"
"<b>Recursive Octahedron</b> Points are generated on the vertex of a recursively subdivided octahedron <br>"
"<b>Fibonacci</b> . "
)));
@ -145,7 +145,7 @@ void FilterCreate::initParameterSet(QAction *action, MeshModel & /*m*/, RichPara
break;
case CR_FITPLANE:
parlst.addParam(new RichFloat("extent", 1.0, "Extent (with respect to selection)", "Howe large is the plane, with respect to the size of the selction: 1.0 means as large as the selection, 1.1 means 10% larger thena the selection"));
parlst.addParam(new RichFloat("extent", 1.0, "Extent (with respect to selection)", "How large is the plane, with respect to the size of the selection: 1.0 means as large as the selection, 1.1 means 10% larger thena the selection"));
parlst.addParam(new RichInt("subdiv", 3, "Plane XY subivisions", "Subdivision steps of plane borders"));
parlst.addParam(new RichBool("hasuv", false, "UV parametrized", "The created plane has an UV parametrization"));
parlst.addParam(new RichEnum("orientation", 0,

View File

@ -96,7 +96,7 @@ CMeshO::CoordType RandomBaricentric(){
return interp;
}
/**
@def This funcion calculate the cartesian coordinates of a point given from its barycentric coordinates
@def This function calculate the cartesian coordinates of a point given from its barycentric coordinates
@param Point3m bc - barycentric coordinates of the point
@param FacePointer f - pointer to the face
@ -438,7 +438,7 @@ void ComputeParticlesFallsPosition(MeshModel* base_mesh,MeshModel* cloud_mesh,CM
/**
@def This funcion
@def This function
@param
@param
@ -617,11 +617,11 @@ void MoveParticle(Particle<CMeshO> &info,CMeshO::VertexPointer p,Scalarm l,int t
/**
This function compute the repulsion beetwen particles
This function compute the repulsion between particles
@param MeshModel* b_m - base mesh
@param MeshModel* c_m - cloud of points
@param int k - max number of particle to repulse
@param Scalarm l - lenght of the step
@param Scalarm l - length of the step
@return nothing - adhesion factor
*/
void ComputeRepulsion(MeshModel* b_m,MeshModel *c_m,int k,Scalarm /*l*/,Point3m g,Scalarm a){
@ -650,7 +650,7 @@ void ComputeRepulsion(MeshModel* b_m,MeshModel *c_m,int k,Scalarm /*l*/,Point3m
@param MeshModel cloud - Mesh of points
@param Point3m force - Direction of the force
@param Scalarm l - Lenght of the movementstep
@param Scalarm l - Length of the movementstep
@param Scalarm t - Time Step
@return nothing

View File

@ -88,15 +88,15 @@ QString FilterFunctionPlugin::filterName(FilterIDType filterId) const
return QString("error!");
}
const QString PossibleOperators("<br>It's possibile to use parenthesis <b>()</b>, and predefined operators:<br>"
const QString PossibleOperators("<br>It's possible to use parenthesis <b>()</b>, and predefined operators:<br>"
"<b>&&</b> (logic and), <b>||</b> (logic or), <b>&lt;</b>, <b>&lt;=</b>, <b>></b>, <b>>=</b>, <b>!=</b> (not equal), <b>==</b> (equal), <b>_?_:_</b> (c/c++ ternary operator)<br><br>");
const QString PerVertexAttributeString( "It's possibile to use the following per-vertex variables in the expression:<br>"
const QString PerVertexAttributeString( "It's possible to use the following per-vertex variables in the expression:<br>"
"<b>x,y,z</b> (position), <b>nx,ny,nz</b> (normal), <b>r,g,b,a</b> (color), <b>q</b> (quality), "
"<b>rad</b> (radius), <b>vi</b> (vertex index), <b>vtu,vtv,ti</b> (texture coords and texture index), <b>vsel</b> (is the vertex selected? 1 yes, 0 no) "
"and all custom <i>vertex attributes</i> already defined by user.<br>");
const QString PerFaceAttributeString("It's possibile to use the following per-face variables, or variables associated to the three vertex of every face:<br>"
const QString PerFaceAttributeString("It's possible to use the following per-face variables, or variables associated to the three vertex of every face:<br>"
"<b>x0,y0,z0</b> for the first vertex position, <b>x1,y1,z1</b> for the second vertex position, <b>x2,y2,z2</b> for the third vertex position, "
"<b>nx0,ny0,nz0 nx1,ny1,nz1 nx2,ny2,nz2</b> for vertex normals, <b>r0,g0,b0,a0 r1,g1,b1,a1 r2,g2,b2,a2</b> for vertex colors, "
"<b>q0,q1,q2</b> for vertex quality, <b>wtu0,wtv0 wtu1,wtv1 wtu2,wtv2</b> for per-wedge texture coords, <b>ti</b> for face texture index, <b>vsel0,vsel1,vsel2</b> for vertex selection (1 yes, 0 no) "
@ -116,10 +116,10 @@ QString FilterFunctionPlugin::filterInfo(FilterIDType filterId) const
"You can change x,y,z for every vertex according to the function specified.<br>") + PerVertexAttributeString;
case FF_FACE_COLOR : return tr( "Color function using muparser lib to generate new RGBA color for every face<br>"
"Red, Green, Blue and Alpha channels may be defined specifying a funcion in their respective fields.<br>") + PerFaceAttributeString;
"Red, Green, Blue and Alpha channels may be defined specifying a function in their respective fields.<br>") + PerFaceAttributeString;
case FF_VERT_COLOR : return tr( "Color function using muparser lib to generate new RGBA color for every vertex<br>"
"Red, Green, Blue and Alpha channels may be defined specifying a funcion in their respective fields.<br>") + PerVertexAttributeString;
"Red, Green, Blue and Alpha channels may be defined specifying a function in their respective fields.<br>") + PerVertexAttributeString;
case FF_VERT_QUALITY: return tr("Quality function using muparser to generate new Quality for every vertex<br>") + PerVertexAttributeString;
@ -245,7 +245,7 @@ int FilterFunctionPlugin::getRequirements(QAction *action)
// This function define the needed parameters for each filter. Return true if the filter has some parameters
// it is called every time, so you can set the default value of parameters according to the mesh
// For each parmeter you need to define,
// For each parameter you need to define,
// - the name of the parameter,
// - the string shown in the dialog
// - the default value
@ -380,7 +380,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
std::string expr = par.getString("condSelect").toStdString();
auto wexpr = conversion::fromStringToWString(expr);
// muparser initialization and explicitely define parser variables
// muparser initialization and explicitly define parser variables
Parser p;
setPerVertexVariables(p,m.cm);
@ -414,7 +414,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
} else (*vi).ClearS();
}
// if succeded log stream contains number of vertices and time elapsed
// if succeeded log stream contains number of vertices and time elapsed
Log( "selected %d vertices in %.2f sec.", numvert, (clock() - start) / (float) CLOCKS_PER_SEC);
return true;
@ -425,7 +425,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
{
QString select = par.getString("condSelect");
// muparser initialization and explicitely define parser variables
// muparser initialization and explicitly define parser variables
Parser p;
setPerFaceVariables(p,m.cm);
@ -459,7 +459,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
} else (*fi).ClearS();
}
// if succeded log stream contains number of vertices and time elapsed
// if succeeded log stream contains number of vertices and time elapsed
Log( "selected %d faces in %.2f sec.", numface, (clock() - start) / (float) CLOCKS_PER_SEC);
return true;
@ -492,7 +492,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
tri::UpdateSelection<CMeshO>::VertexFromFaceLoose(m.cm);
}
// muparser initialization and explicitely define parser variables
// muparser initialization and explicitly define parser variables
// function for x,y and z must use different parser and variables
Parser p1,p2,p3,p4;
@ -549,7 +549,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
tri::UpdateBounding<CMeshO>::Box(m.cm);
}
// if succeded log stream contains number of vertices processed and time elapsed
// if succeeded log stream contains number of vertices processed and time elapsed
Log( "%d vertices processed in %.2f sec.", m.cm.vn, (clock() - start) / (float) CLOCKS_PER_SEC);
return true;
@ -610,7 +610,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
tri::UpdateColor<CMeshO>::PerVertexQualityRamp(m.cm);
m.updateDataMask(MeshModel::MM_VERTCOLOR);
}
// if succeded log stream contains number of vertices and time elapsed
// if succeeded log stream contains number of vertices and time elapsed
Log( "%d vertices processed in %.2f sec.", m.cm.vn, (clock() - start) / (float) CLOCKS_PER_SEC);
return true;
@ -746,7 +746,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
m.updateDataMask(MeshModel::MM_FACECOLOR);
// muparser initialization and explicitely define parser variables
// muparser initialization and explicitly define parser variables
// every function must uses own parser and variables
Parser p1,p2,p3,p4;
@ -787,7 +787,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
(*fi).C() = Color4b(newr,newg,newb,newa);
}
// if succeded log stream contains number of vertices processed and time elapsed
// if succeeded log stream contains number of vertices processed and time elapsed
Log( "%d faces processed in %.2f sec.", m.cm.fn, (clock() - start) / (float) CLOCKS_PER_SEC);
return true;
@ -846,7 +846,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
m.updateDataMask(MeshModel::MM_FACECOLOR);
}
// if succeded log stream contains number of faces processed and time elapsed
// if succeeded log stream contains number of faces processed and time elapsed
Log( "%d faces processed in %.2f sec.", m.cm.fn, (clock() - start) / (float) CLOCKS_PER_SEC);
return true;
@ -898,12 +898,12 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
// add string, double and handler to vector.
// vectors keep tracks of new attributes and let muparser use explicit variables
// it's possibile to use custom attributes in other filters
// it's possible to use custom attributes in other filters
v_attrNames.push_back(name);
v_attrValue.push_back(0);
v_handlers.push_back(h);
// if succeded log stream contains number of vertices processed and time elapsed
// if succeeded log stream contains number of vertices processed and time elapsed
Log( "%d vertices processed in %.2f sec.", m.cm.vn, (clock() - start) / (float) CLOCKS_PER_SEC);
return true;
@ -952,12 +952,12 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
// // add string, double and handler to vector.
// // vectors keep tracks of new attributes and let muparser use explicit variables
// // it's possibile to use custom attributes in other filters
// // it's possible to use custom attributes in other filters
// f_attrNames.push_back(name);
// f_attrValue.push_back(0);
// fhandlers.push_back(h);
// if succeded log stream contains number of vertices processed and time elapsed
// if succeeded log stream contains number of vertices processed and time elapsed
Log( "%d faces processed in %.2f sec.", m.cm.fn, (clock() - start) / (float) CLOCKS_PER_SEC);
return true;
@ -1085,7 +1085,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
// Refine current mesh.
// Only edge specified with CustomEdge pred are selected
// and the new vertex is choosen with MidPointCustom created above
// and the new vertex is chosen with MidPointCustom created above
vcg::tri::RefineE<CMeshO, MidPointCustom<CMeshO>, CustomEdge<CMeshO> >
(m.cm, mid, edge, false, cb);
m.UpdateBoxAndNormals();
@ -1260,7 +1260,7 @@ void FilterFunctionPlugin::setAttributes(CMeshO::FaceIterator &fi, CMeshO &m)
f_attrValue[i] = f_handlers[i][fi];
}
// Function explicitely define parser variables to perform per-vertex filter action
// Function explicitly define parser variables to perform per-vertex filter action
// x, y, z for vertex coord, nx, ny, nz for normal coord, r, g ,b for color
// and q for quality
void FilterFunctionPlugin::setPerVertexVariables(Parser &p, CMeshO &m)
@ -1326,7 +1326,7 @@ void FilterFunctionPlugin::setPerVertexVariables(Parser &p, CMeshO &m)
}
// Function explicitely define parser variables to perform Per-Face filter action
// Function explicitly define parser variables to perform Per-Face filter action
void FilterFunctionPlugin::setPerFaceVariables(Parser &p, CMeshO &m)
{
// coord of the three vertices within a face

View File

@ -27,7 +27,7 @@
using namespace vcg;
using namespace mu;
// MidPoint Function Object used by RefineE() to find new vertex position on splitted edge
// MidPoint Function Object used by RefineE() to find new vertex position on split edge
// Sets new attributes values on created vertex.
template<class MESH_TYPE>
struct MidPointCustom : public std::unary_function<face::Pos<typename MESH_TYPE::FaceType> , typename MESH_TYPE::CoordType >

View File

@ -195,7 +195,7 @@ bool FilterImgPatchParamPlugin::applyFilter( QAction *act,
glContext->makeCurrent();
if( glewInit() != GLEW_OK )
{
this->errorMessage="Failed GLEW intialization";
this->errorMessage="Failed GLEW initialization";
return false;
}
@ -488,7 +488,7 @@ void FilterImgPatchParamPlugin::boundaryOptimization( CMeshO &mesh,
}
// If multiple neighboring reference images have the same number of occurences, the one with the highest
// If multiple neighboring reference images have the same number of occurrences, the one with the highest
// weight with respect to the current face is chosen.
RasterModel *candidate = faceVis[f].ref();
@ -899,7 +899,7 @@ void FilterImgPatchParamPlugin::patchBasedTextureParameterization( RasterPatchMa
RichParameterSet &par )
{
// Computes the visibility set for all mesh faces. It contains the set of all images
// into which the face is visible, as well as a reference image, namely the one whith
// into which the face is visible, as well as a reference image, namely the one with
// the most orthogonal viewing angle.
QTime t; t.start();
int weightMask = VisibleSet::W_ORIENTATION;

View File

@ -142,7 +142,7 @@ template <class FaceType>
if (bbox.IsIn(UVQuad[0])&&bbox.IsIn(UVQuad[1])&&bbox.IsIn(UVQuad[2]))
return false; ///no intersection is possible
///else test which edges must be splitted
///else test which edges must be split
//vcg::Segment2<float> border_seg[4];
vcg::Line2<float> border_seg[4];
border_seg[0].Set(vcg::Point2f(0,0),vcg::Point2f(1,0));
@ -167,9 +167,9 @@ template <class FaceType>
const PScalarType _EPS=(PScalarType)0.0001;
if ((intersect)&&(l_test>=_EPS))
{
float lenght=curr_edge.Length();
float length=curr_edge.Length();
float dist=((curr_edge.P0()-p_inters).Norm());
float Ndist=dist/lenght;
float Ndist=dist/length;
float alpha=1.0-Ndist;
float dist_medium1=fabs(alpha-0.5);
@ -195,7 +195,7 @@ template <class FaceType>
// Basic subdivision class
// This class must provide methods for finding the position of the newly created vertices
// In this implemenation we simply put the new vertex in the MidPoint position.
// In this implementation we simply put the new vertex in the MidPoint position.
// Color and TexCoords are interpolated accordingly.
template<class MESH_TYPE>
struct SplitMidPoint : public std::unary_function<vcg::face::Pos<typename MESH_TYPE::FaceType> , typename MESH_TYPE::CoordType >
@ -215,7 +215,7 @@ template <class FaceType>
ParamMesh *to_param=isoParam->ParaMesh();
///get eth value on which the edge must be splitted
///get eth value on which the edge must be split
VertexType* v0=ep.f->V(ep.z);
VertexType* v1=ep.f->V1(ep.z);

View File

@ -95,7 +95,7 @@ class DiamTopology
if (f1<f0)
std::swap(f0,f1);
///then put in the map the variuos edge
///then put in the map the various edge
DiamEdge de[4];
de[0]=DiamEdge(v0,f0);
de[1]=DiamEdge(v1,f0);

View File

@ -91,7 +91,7 @@ public:
SaveMesh.vn=0;
SaveMesh.fn=0;
///suposed to be the same everywhere
///supposed to be the same everywhere
///allocate space
std::vector<std::vector<MyVertex*> > vertMatrix;
vertMatrix.resize(sampleSize);

View File

@ -124,7 +124,7 @@ void FilterIsoParametrization::initParameterSet(QAction *a, MeshDocument& md, Ri
"3: Regularity : stop at minimum number of irregular vertices<br>"
"4: L2 : stop at minimum OneWay L2 Stretch Eff")));
par.addParam(new RichInt("convergenceSpeed",1, "Convergence Precision", "This parameter controls the convergence speed/precision of the optimization of the texture coordinates. Larger the number slower the processing and ,eventually, slighly better results"));
par.addParam(new RichInt("convergenceSpeed",1, "Convergence Precision", "This parameter controls the convergence speed/precision of the optimization of the texture coordinates. Larger the number slower the processing and ,eventually, slightly better results"));
par.addParam(new RichBool("DoubleStep",true,"Double Step","Use this bool to divide the parameterization in 2 steps. Double step makes the overall process faster and robust."
"<br> Consider to disable this bool in case the object has topologycal noise or small handles."));
par.addParam(new RichString("AbsLoadName", "", "Load AM", "The filename of the abstract mesh that has to be loaded. If empty, the abstract mesh will be computed according to the above parameters (suggested extension '.abs')."));
@ -140,11 +140,11 @@ void FilterIsoParametrization::initParameterSet(QAction *a, MeshDocument& md, Ri
{
par.addParam(new RichDynamicFloat("BorderSize",0.1f,0.01f,0.5f,"BorderSize ratio",
"This parameter controls the amount of space that must be left between each diamond when building the atlas."
"It directly affects how many triangle are splitted during this conversion. <br>"
"It directly affects how many triangle are split during this conversion. <br>"
"In abstract parametrization mesh triangles can naturally cross the triangles of the abstract domain, so when converting "
"to a standard parametrization we must cut all the triangles that protrudes outside each diamond more than the specified threshold."
"The unit of the threshold is in percentage of the size of the diamond,"
"The bigger the threshold the less triangles are splitted, but the more UV space is used (wasted)."));
"The bigger the threshold the less triangles are split, but the more UV space is used (wasted)."));
break;
}
case ISOP_TRANSFER:
@ -239,7 +239,7 @@ bool FilterIsoParametrization::applyFilter(QAction *filter, MeshDocument& md, Ri
switch(ret)
{
case IsoParametrizator::MultiComponent:
this->errorMessage="non possible parameterization because of multi componet mesh"; return false;
this->errorMessage="non possible parameterization because of multi component mesh"; return false;
case IsoParametrizator::NonSizeCons:
this->errorMessage="non possible parameterization because of non size consistent mesh"; return false;
case IsoParametrizator::NonManifoldE:

View File

@ -559,7 +559,7 @@ private:
ParamVertex * v=&diamond_meshes[index].HresDomain->vert[k];
CoordType bary=CoordType(v->T().U(),v->T().V(),1-v->T().U()-v->T().V());
AbstractMesh *paramDomain=diamond_meshes[index].domain;
///get the rigth face on the parametrized domain
///get the right face on the parametrized domain
int Father=v->T().N();
int faceNum=-1;
for (unsigned int i=0;i<diamond_meshes[index].local_to_global.size();i++)
@ -1393,7 +1393,7 @@ public:
CoordType bary=CoordType(UV.X(),UV.Y(),1-UV.X()-UV.Y());
///then transform to the half-diamond domain
///get egde mesh
///get edge mesh
AbstractMesh* diam_domain=diamond_meshes[DiamIndex].domain;
int LocalIndex=diamond_meshes[DiamIndex].Global2Local(I);
if(LocalIndex!=-1)
@ -1401,7 +1401,7 @@ public:
InterpolateUV<AbstractMesh>(&diam_domain->face[LocalIndex],bary,UVDiam.X(),UVDiam.Y());
return;
}
///if ! found seach in the star space
///if ! found search in the star space
else
{
AbstractFace *f_diam=&diam_domain->face[0];

View File

@ -249,7 +249,7 @@ typename VertexType::CoordType WarpRpos(const VertexType* v)
}
template <class MeshType>
typename MeshType::ScalarType EstimateLenghtByParam
typename MeshType::ScalarType EstimateLengthByParam
(const typename MeshType::VertexType* v0,
const typename MeshType::VertexType* v1,
typename MeshType::FaceType* on_edge[2])
@ -311,7 +311,7 @@ typename MeshType::ScalarType EstimateLenghtByParam
}
}
///find if there's ant edge return inital lenght
///find if there's ant edge return initial length
if (edges.size()==0)
{
estimated[i]+=(Distance(v0->RPos,v1->RPos));
@ -1023,7 +1023,7 @@ void ParametrizeStarEquilateral(MeshType &parametrized,
uvAve.Normalize();
vcg::Point2<ScalarType> p0=uvAve*(ScalarType)0.3;
vcg::Point2<ScalarType> p1=uvAve*(ScalarType)(-0.3);
///then test and set right assignement
///then test and set right assignment
non_border[0]->T().P()=p0;
non_border[1]->T().P()=p1;
if (!NonFolded(parametrized)){
@ -1077,7 +1077,7 @@ void ParametrizeDiamondEquilateral(MeshType &parametrized,
VertexType *v3=parametrized.face[1].V((edge1+2)%3);
assert((v2!=v3)&&(v0!=v2)&&(v0!=v3)&&(v1!=v2)&&(v1!=v3));
///assing texcoords
///assign texcoords
v0->T().P()=vcg::Point2<ScalarType>(0,-edge_len/2.0);
v1->T().P()=vcg::Point2<ScalarType>(0,edge_len/2.0);
v2->T().P()=vcg::Point2<ScalarType>(-h,0);
@ -1126,7 +1126,7 @@ void ParametrizeLocally(MeshType &parametrized,
///do a first copy of the mesh
///and parametrize it
///NB: order of faces is mantained
///NB: order of faces is maintained
CopyMeshFromFaces<MeshType>(orderedFaces,orderedVertex,parametrized);
//CreateMeshVertexStar(subset,orderedFaces,parametrized);

View File

@ -275,7 +275,7 @@ inline void getHresVertex(std::vector<FaceType*> &domain,
}
///copy mesh low level & high level
///putting the link between them toghether
///putting the link between them together
template <class MeshType>
void CopySubMeshLevels(std::vector<typename MeshType::FaceType*> &faces,
MeshType &Domain,MeshType &hlevMesh)

View File

@ -26,7 +26,7 @@ public:
};
ScalarType averageArea;
ScalarType averageLenght;
ScalarType averageLength;
MeshType &base_mesh;
MeshType &final_mesh;
int global_mark;
@ -39,7 +39,7 @@ public:
/*const float MaxVal=10000.f;*/
minInfoUV &inf = *(minInfoUV *)data;
///assing coordinate to central vertex
///assign coordinate to central vertex
inf.to_optimize->T().U()=p[0];
inf.to_optimize->T().V()=p[1];
@ -71,7 +71,7 @@ public:
for (unsigned int i=0;i<inf.parametrized_domain->face.size();i++)
inf.parametrized_domain->face[i].vertices_bary.resize(0);
///update alphabeta from UV to calculate edge_lenght and area
///update alphabeta from UV to calculate edge_length and area
bool inside=true;
for (unsigned int i=0;i<inf.Hres_vert.size();i++)
{
@ -131,11 +131,11 @@ public:
FaceType* edgeF[2];
edgeF[0]=on_edge[0];
edgeF[1]=on_edge[1];
ScalarType lenght=EstimateLenghtByParam<MeshType>(v0,v1,edgeF);
if (lenght<minEdge)
minEdge=lenght;
if (lenght>maxEdge)
maxEdge=lenght;
ScalarType length=EstimateLengthByParam<MeshType>(v0,v1,edgeF);
if (length<minEdge)
minEdge=length;
if (length>maxEdge)
maxEdge=length;
}
}
//if ((minArea<=0)||(minEdge<=0))
@ -159,8 +159,8 @@ public:
FaceType* edgeF[2];
edgeF[0]=on_edge[0];
edgeF[1]=on_edge[1];
ScalarType lenght=EstimateLenghtByParam<FaceType>(v0,v1,edgeF);
return lenght;
ScalarType length=EstimateLengthByParam<FaceType>(v0,v1,edgeF);
return length;
}
/////return the priority of vertex processing
@ -172,8 +172,8 @@ public:
// for (int i=0;i<star.size();i++)
// {
// VertexType *v1=star[i];
// ScalarType lenght=LengthPath(v,v1);//EstimateLenghtByParam<FaceType>(v0,v1,edgeF);
// prior+=pow((lenght-averageLenght),(ScalarType)2);
// ScalarType length=LengthPath(v,v1);//EstimateLengthByParam<FaceType>(v0,v1,edgeF);
// prior+=pow((length-averageLength),(ScalarType)2);
// }
// std::vector<VertexType*> vertices;
// std::vector<FaceType*> faces;
@ -191,8 +191,8 @@ public:
std::vector<typename MeshType::VertexType*> star;
getVertexStar<MeshType>(v,star);
ScalarType priorL=0,priorA=0;
std::vector<ScalarType> Lenghts,Areas;
Lenghts.resize(star.size());
std::vector<ScalarType> Lengths,Areas;
Lengths.resize(star.size());
std::vector<VertexType*> vertices;
std::vector<FaceType*> faces;
@ -205,9 +205,9 @@ public:
for (unsigned int i=0;i<star.size();i++)
{
VertexType *v1=star[i];
ScalarType lenght=LengthPath(v,v1);//EstimateLenghtByParam<FaceType>(v0,v1,edgeF);
Lenghts[i]=lenght;
aveL+=lenght;
ScalarType length=LengthPath(v,v1);//EstimateLengthByParam<FaceType>(v0,v1,edgeF);
Lengths[i]=length;
aveL+=length;
}
aveL/=(ScalarType)star.size();
@ -218,8 +218,8 @@ public:
}
aveA/=(ScalarType)faces.size();
for (unsigned int i=0;i<Lenghts.size();i++)
priorL+=pow((Lenghts[i]-aveL),(ScalarType)2);
for (unsigned int i=0;i<Lengths.size();i++)
priorL+=pow((Lengths[i]-aveL),(ScalarType)2);
for (unsigned int i=0;i<Areas.size();i++)
priorA+=pow((Areas[i]-aveA),(ScalarType)2);
@ -228,7 +228,7 @@ public:
}
static void FindVarianceLenghtArea(MeshType &base_mesh,
const ScalarType &averageLenght,
const ScalarType &averageLength,
const ScalarType &averageArea,
ScalarType &varianceL,
ScalarType &varianceA)
@ -252,8 +252,8 @@ public:
edgeF[1]=on_edge[1];*/
if (v0>v1)
{
ScalarType lenght=LengthPath(v0,v1);//EstimateLenghtByParam<FaceType>(v0,v1,edgeF);
varianceL+=pow((lenght-averageLenght),(ScalarType)2);
ScalarType length=LengthPath(v0,v1);//EstimateLengthByParam<FaceType>(v0,v1,edgeF);
varianceL+=pow((length-averageLength),(ScalarType)2);
num_edge++;
}
}
@ -422,13 +422,13 @@ void OptimizePatches()
const ScalarType sqrtsrt3=(ScalarType)1.31607401;
averageArea=Area(final_mesh)/((ScalarType)base_mesh.fn*(ScalarType)2.0);
averageLenght=(ScalarType)2.0*sqrt(averageArea)/sqrtsrt3;
averageLength=(ScalarType)2.0*sqrt(averageArea)/sqrtsrt3;
ScalarType varianceL,varianceA;
FindVarianceLenghtArea(base_mesh,averageLenght,averageArea,varianceL,varianceA);
FindVarianceLenghtArea(base_mesh,averageLength,averageArea,varianceL,varianceA);
#ifndef _MESHLAB
printf("Variance lenght:%f\n",varianceL*100.f/averageLenght);
printf("Variance length:%f\n",varianceL*100.f/averageLength);
printf("Variance area:%f\n",varianceA*100.f/averageArea);
#endif
//Initialize heap
@ -462,8 +462,8 @@ void OptimizePatches()
temp_oper++;
}
}
FindVarianceLenghtArea(base_mesh,averageLenght,averageArea,varianceL1,varianceA1);
ScalarType percL=(varianceL0-varianceL1)*100/averageLenght;
FindVarianceLenghtArea(base_mesh,averageLength,averageArea,varianceL1,varianceA1);
ScalarType percL=(varianceL0-varianceL1)*100/averageLength;
ScalarType percA=(varianceA0-varianceA1)*100/averageArea;
ScalarType curr_gap=percL+percA;
#ifndef _MESHLAB
@ -473,11 +473,11 @@ void OptimizePatches()
varianceA0=varianceA1;
continue_opt=curr_gap>gap;
}
FindVarianceLenghtArea(base_mesh,averageLenght,averageArea,varianceL,varianceA);
FindVarianceLenghtArea(base_mesh,averageLength,averageArea,varianceL,varianceA);
#ifndef _MESHLAB
printf("Num Oper:%i\n",n_oper);
printf("Variance lenght:%f\n",varianceL*100.f/averageLenght);
printf("Variance length:%f\n",varianceL*100.f/averageLength);
printf("Variance area:%f\n",varianceA*100.f/averageArea);
#endif

View File

@ -68,12 +68,12 @@ public:
edgeF[0]=on_edge[0];
edgeF[1]=on_edge[1];
ScalarType costArea=EstimateAreaByParam<BaseMesh>(Super::pos.V(0),Super::pos.V(1),edgeF);
ScalarType lenght=EstimateLenghtByParam<BaseMesh>(Super::pos.V(0),Super::pos.V(1),edgeF);
ScalarType length=EstimateLengthByParam<BaseMesh>(Super::pos.V(0),Super::pos.V(1),edgeF);
if (costArea<0)
assert(0);
assert(lenght>=0);
return (pow(lenght,2)+costArea);
assert(length>=0);
return (pow(length,2)+costArea);
}
inline bool IsFeasible(BaseParameterClass *){
@ -163,7 +163,7 @@ public:
{
minInfo0 &inf = *(minInfo0 *)data;
///assing coordinate to the face
///assign coordinate to the face
inf.central->P().X()=p[0];
inf.central->P().Y()=p[1];
inf.central->P().Z()=p[2];
@ -457,7 +457,7 @@ void AphaBetaToUV(VertexPair &pos,
///transform to UV
ScalarType u,v;
InterpolateUV<BaseMesh>(parametric_face,bary,u,v);
///and assing
///and assign
brother->T().U()=u;
brother->T().V()=v;

View File

@ -194,8 +194,8 @@ class ParamEdgeFlip : public vcg::tri::PlanarEdgeFlip<BaseMesh, ParamEdgeFlip<Ba
assert(Diam.face[0].FFp(edge0)==&Diam.face[1]);///test
assert(Diam.face[1].FFp(edge1)==&Diam.face[0]);///test
///Evaluate lenght of shared edge
ScalarType L0=EstimateLenghtByParam<BaseMesh>(Diam.face[0].V(edge0),Diam.face[0].V((edge0+1)%3),on_edge);
///Evaluate length of shared edge
ScalarType L0=EstimateLengthByParam<BaseMesh>(Diam.face[0].V(edge0),Diam.face[0].V((edge0+1)%3),on_edge);
///do the flip on the copied mesh do not affect the original mesh
ExecuteFlip(Diam.face[0],edge0);
@ -214,7 +214,7 @@ class ParamEdgeFlip : public vcg::tri::PlanarEdgeFlip<BaseMesh, ParamEdgeFlip<Ba
NB_edge=2;
assert(NB_edge!=-1);
ScalarType L1=EstimateLenghtByParam<BaseMesh>(Diam.face[0].V(NB_edge),Diam.face[0].V((NB_edge+1)%3),on_edge);
ScalarType L1=EstimateLengthByParam<BaseMesh>(Diam.face[0].V(NB_edge),Diam.face[0].V((NB_edge+1)%3),on_edge);
ScalarType value=L0-L1;
diff=value;
@ -242,7 +242,7 @@ class ParamEdgeFlip : public vcg::tri::PlanarEdgeFlip<BaseMesh, ParamEdgeFlip<Ba
v1 = this->_pos.F()->V1(edge0);
v2 = this->_pos.F()->V2(edge0);
v3 = this->_pos.F()->FFp(edge0)->V2(this->_pos.F()->FFi(edge0));
///assing texcoords
///assign texcoords
ScalarType h=(sqrt((ScalarType)3.0)/(ScalarType)2.0);
v0->T().P()=vcg::Point2<ScalarType>(0,(ScalarType)-0.5);
v1->T().P()=vcg::Point2<ScalarType>(0,(ScalarType)0.5);

View File

@ -82,7 +82,7 @@ public:
};
///class maintaing additional auxiliary data used during the parameterization
///class maintaining additional auxiliary data used during the parameterization
class AuxiliaryVertData{
public:
BaseVertex::ScalarType area;

View File

@ -51,8 +51,8 @@
class MyTriEdgeFlip : public vcg::tri::ParamEdgeFlip<BaseMesh>{};
class MyTriEdgeCollapse: public vcg::tri::ParamEdgeCollapse<BaseMesh>{};
///THIS CLASS MAINTAINS STRUCTURES WICH ARE USED FOR PARAMETRIZATION
///TOGHETHER WITH METHOD FOR COLORIZATION FOR VISUALIZATION PURPOSES
///THIS CLASS MAINTAINS STRUCTURES WHICH ARE USED FOR PARAMETRIZATION
///TOGETHER WITH METHOD FOR COLORIZATION FOR VISUALIZATION PURPOSES
class IsoParametrizator{
@ -479,7 +479,7 @@ private:
for (unsigned int i=0;i<base_mesh.vert.size();i++)
mesh->vert[i].RPos=base_mesh.vert[i].RPos;
///copy linking for parameterization informations
///copy linking for parameterization information
int k=0;
for (unsigned int i=0;i<base_mesh.face.size();i++)
{
@ -641,7 +641,7 @@ private:
ParaStack[i].ratio);
}
if ((isOK_interp)||(!test_interpolation))
printf("Choosen to stop at %d faces \n",ParaStack[indexmin].num_faces);
printf("Chosen to stop at %d faces \n",ParaStack[indexmin].num_faces);
else
printf("Not a right Interpolation Domain is found");
#endif
@ -923,7 +923,7 @@ public:
UpdateTopologies(&base_mesh);
}
///equilateralize patch lenght and areas
///equilateralize patch length and areas
void EquiPatches()
{
PatchesOptimizer<BaseMesh> DomOpt(base_mesh,final_mesh);

View File

@ -141,10 +141,10 @@ public:
if (num==1)
{
//printf("D");
///tranform in UV space
///transform in UV space
vcg::Point2<ScalarType> UVDiam;
isoParam->GE1(I1,bary1,IndexDomain,UVDiam);
///then find bary coords wich respect to the first face
///then find bary coords which respect to the first face
vcg::Point2<ScalarType> bary2;
isoParam->inv_GE1_fixedI(IndexDomain,UVDiam,I0,bary2);
vect=bary0-bary2;
@ -155,10 +155,10 @@ public:
if (num==2)
{
//printf("S");
///tranform in UV space
///transform in UV space
vcg::Point2<ScalarType> UVStar;
isoParam->GE0(I1,bary1,IndexDomain,UVStar);
///then find bary coords wich respect to the first face
///then find bary coords which respect to the first face
vcg::Point2<ScalarType> bary2;
isoParam->inv_GE0_fixedI(IndexDomain,UVStar,I0,bary2);
vect=bary0-bary2;

View File

@ -1002,7 +1002,7 @@ template<class MESH_TYPE>
class MIPSTexCoordFoldHealer:public MIPSTexCoordOptimization<MESH_TYPE>{
public:
int maxStarSize; // max star size that is affected around a folded face.. Defualt: 3
int maxStarSize; // max star size that is affected around a folded face.. Default: 3
typedef MESH_TYPE MeshType;
typedef typename MESH_TYPE::VertexIterator VertexIterator;

View File

@ -87,8 +87,8 @@ QString FilterLayerPlugin::filterName(FilterIDType filterId) const
QString FilterLayerPlugin::filterInfo(FilterIDType filterId) const
{
switch(filterId) {
case FP_SPLITSELECTEDFACES : return QString("Selected faces are moved (or duplicated) in a new layer. Warning! per-vertex and per-face user defined attributes will not be transfered.");
case FP_SPLITSELECTEDVERTICES : return QString("Selected vertices are moved (or duplicated) in a new layer. Warning! per-vertex user defined attributes will not be transfered.");
case FP_SPLITSELECTEDFACES : return QString("Selected faces are moved (or duplicated) in a new layer. Warning! per-vertex and per-face user defined attributes will not be transferred.");
case FP_SPLITSELECTEDVERTICES : return QString("Selected vertices are moved (or duplicated) in a new layer. Warning! per-vertex user defined attributes will not be transferred.");
case FP_DELETE_MESH : return QString("The current mesh layer is deleted");
case FP_DELETE_NON_VISIBLE_MESH : return QString("All the non visible mesh layers are deleted");
case FP_DELETE_RASTER : return QString("The current raster layer is deleted");
@ -126,7 +126,7 @@ void FilterLayerPlugin::initParameterSet(QAction *action, MeshDocument &md, Rich
break;
case FP_FLATTEN :
parlst.addParam(new RichBool ("MergeVisible", true, "Merge Only Visible Layers",
"If true, flatten only visible layers, othwerwise, all layers are used"));
"If true, flatten only visible layers, otherwise, all layers are used"));
parlst.addParam(new RichBool ("DeleteLayer", true, "Delete Layers ",
"Delete all the layers used as source in flattening. <br>If all layers are visible only a single layer will remain after the invocation of this filter"));
parlst.addParam(new RichBool ("MergeVertices", true, "Merge duplicate vertices",

View File

@ -272,7 +272,7 @@ QString ExtraMeshFilterPlugin::filterInfo(FilterIDType filterID) const
"The current implementation of these schemes don't handle vertices of valence > 12");
case FP_LOOP_SS : return tr("Apply Loop's Subdivision Surface algorithm. It is an approximant refinement method and it works for every triangle and has rules for extraordinary vertices.<br>");
case FP_BUTTERFLY_SS : return tr("Apply Butterfly Subdivision Surface algorithm. It is an interpolated refinement method, defined on arbitrary triangular meshes. The scheme is known to be C1 but not C2 on regular meshes<br>");
case FP_MIDPOINT : return tr("Apply a plain subdivision scheme where every edge is splitted on its midpoint. Useful to uniformly refine a mesh substituting each triangle with four smaller triangles.");
case FP_MIDPOINT : return tr("Apply a plain subdivision scheme where every edge is split on its midpoint. Useful to uniformly refine a mesh substituting each triangle with four smaller triangles.");
case FP_REFINE_CATMULL : return tr("Apply the Catmull-Clark Subdivision Surfaces. Note that position of the new vertices is simply linearly interpolated. If the mesh is triangle based (no faux edges) it generates a quad mesh, otherwise it honores it the faux-edge bits");
case FP_REFINE_HALF_CATMULL : return tr("Convert a tri mesh into a quad mesh by applying a 4-8 subdivision scheme."
"It introduces less overhead than the plain Catmull-Clark Subdivision Surfaces"
@ -284,7 +284,7 @@ QString ExtraMeshFilterPlugin::filterInfo(FilterIDType filterID) const
case FP_CLUSTERING : return tr("Collapse vertices by creating a three dimensional grid enveloping the mesh and discretizes them based on the cells of this grid");
case FP_QUADRIC_SIMPLIFICATION : return tr("Simplify a mesh using a Quadric based Edge Collapse Strategy; better than clustering but slower");
case FP_QUADRIC_TEXCOORD_SIMPLIFICATION : return tr("Simplify a textured mesh using a Quadric based Edge Collapse Strategy preserving UV parametrization; better than clustering but slower");
case FP_EXPLICIT_ISOTROPIC_REMESHING : return tr("Perform a explict remeshing of a triangular mesh, by repeatedly applying edge flip, collapse, relax and refine to improve aspect ratio (triangle quality) and topological regularity.");
case FP_EXPLICIT_ISOTROPIC_REMESHING : return tr("Perform a explicit remeshing of a triangular mesh, by repeatedly applying edge flip, collapse, relax and refine to improve aspect ratio (triangle quality) and topological regularity.");
case FP_REORIENT : return tr("Re-orient in a consistent way all the faces of the mesh. <br>"
"The filter visits a mesh face to face, reorienting any unvisited face so that it is coherent "
"to the already visited faces. If the surface is orientable it will end with a consistent orientation of "
@ -331,7 +331,7 @@ QString ExtraMeshFilterPlugin::filterInfo(FilterIDType filterID) const
return QString();
}
// this function builds and intializes with the default values (that can depend on the current mesh or selection)
// this function builds and initializes with the default values (that can depend on the current mesh or selection)
// the list of parameters that a filter requires.
// return
// true if has some parameters
@ -389,7 +389,7 @@ void ExtraMeshFilterPlugin::initParameterSet(QAction * action, MeshModel & m, Ri
parlst.addParam(new RichInt ("Iterations", lastisor_Iterations, "Iterations", "Number of iterations of the remeshing operations to repeat on the mesh."));
parlst.addParam(new RichBool ("Adaptive", lastisor_RemeshingAdaptivity, "Adaptive remeshing", "Toggles adaptive isotropic remeshing." ));
parlst.addParam(new RichBool ("SelectedOnly", lastisor_SelectedOnly, "Remesh only selected faces", "If checked the remeshing operations will be applyed only to the selected faces."));
parlst.addParam(new RichBool ("SelectedOnly", lastisor_SelectedOnly, "Remesh only selected faces", "If checked the remeshing operations will be applied only to the selected faces."));
maxVal = m.cm.bbox.Diag();
parlst.addParam(new RichAbsPerc("TargetLen",maxVal*0.01,0,maxVal,"Target Length", "Sets the target length for the remeshed mesh edges."));
parlst.addParam(new RichFloat ("FeatureDeg", lastisor_FeatureDeg, "Crease Angle", "Minimum angle between faces of the original to consider the shared edge as a feature to be preserved."));
@ -414,7 +414,7 @@ void ExtraMeshFilterPlugin::initParameterSet(QAction * action, MeshModel & m, Ri
case FP_LOOP_SS:
case FP_REFINE_LS3_LOOP:
loopWeightLst << "Loop" << "Enhance regularity" << "Enhance continuity";
parlst.addParam(new RichEnum("LoopWeight", 0, loopWeightLst, "Weighting scheme", "Change the weights used. Allow to optimize some beaviors in despite of others."));
parlst.addParam(new RichEnum("LoopWeight", 0, loopWeightLst, "Weighting scheme", "Change the weights used. Allow to optimize some behaviors in despite of others."));
case FP_BUTTERFLY_SS:
case FP_MIDPOINT:
parlst.addParam(new RichInt("Iterations", 3, "Iterations", "Number of time the model is subdivided."));
@ -516,10 +516,10 @@ void ExtraMeshFilterPlugin::initParameterSet(QAction * action, MeshModel & m, Ri
rotCenter.push_back("barycenter");
rotCenter.push_back("custom point");
parlst.addParam(new RichEnum("rotCenter", 0, rotCenter, tr("Center of rotation:"), tr("Choose a method")));
parlst.addParam(new RichDynamicFloat("angle",0,-360,360,"Rotation Angle","Angle of rotation (in <b>degree</b>). If snapping is enable this vaule is rounded according to the snap value"));
parlst.addParam(new RichDynamicFloat("angle",0,-360,360,"Rotation Angle","Angle of rotation (in <b>degree</b>). If snapping is enabled this value is rounded according to the snap value"));
parlst.addParam(new RichPoint3f("customAxis",Point3f(0,0,0),"Custom axis","This rotation axis is used only if the 'custom axis' option is chosen."));
parlst.addParam(new RichPoint3f("customCenter",Point3f(0,0,0),"Custom center","This rotation center is used only if the 'custom point' option is chosen."));
parlst.addParam(new RichBool("snapFlag", false, "Snap angle", "If selected, before starting the filter will remove anyy unreference vertex (for which curvature values are not defined)"));
parlst.addParam(new RichBool("snapFlag", false, "Snap angle", "If selected, before starting the filter will remove any unreferenced vertex (for which curvature values are not defined)"));
parlst.addParam(new RichFloat("snapAngle",30,"Snapping Value","This value is used to snap the rotation angle (i.e. if the snapping value is 30, 227 becomes 210)."));
parlst.addParam(new RichBool ("Freeze",true,"Freeze Matrix","The transformation is explicitly applied, and the vertex coordinates are actually changed"));
parlst.addParam(new RichBool ("allLayers",false,"Apply to all visible Layers","If selected the filter will be applied to all visible mesh layers"));
@ -560,7 +560,7 @@ void ExtraMeshFilterPlugin::initParameterSet(QAction * action, MeshModel & m, Ri
scaleCenter.push_back("custom point");
parlst.addParam(new RichEnum("scaleCenter", 0, scaleCenter, tr("Center of scaling:"), tr("Choose a method")));
parlst.addParam(new RichPoint3f("customCenter",Point3f(0,0,0),"Custom center","This scaling center is used only if the 'custom point' option is chosen."));
parlst.addParam(new RichBool("unitFlag",false,"Scale to Unit bbox","If selected, the object is scaled to a box whose sides are at most 1 unit lenght"));
parlst.addParam(new RichBool("unitFlag",false,"Scale to Unit bbox","If selected, the object is scaled to a box whose sides are at most 1 unit length"));
parlst.addParam(new RichBool ("Freeze",true,"Freeze Matrix","The transformation is explicitly applied, and the vertex coordinates are actually changed"));
parlst.addParam(new RichBool ("allLayers",false,"Apply to all visible Layers","If selected the filter will be applied to all visible mesh layers"));
} break;
@ -583,7 +583,7 @@ void ExtraMeshFilterPlugin::initParameterSet(QAction * action, MeshModel & m, Ri
break;
case FP_NORMAL_SMOOTH_POINTCLOUD:
parlst.addParam(new RichInt ("K",(int)10,"Number of neigbors","The number of neighbors used to smooth normals."));
parlst.addParam(new RichInt ("K",(int)10,"Number of neighbors","The number of neighbors used to smooth normals."));
parlst.addParam(new RichBool("useDist",false,"Weight using neighbour distance","If selected, the neighbour normals are waighted according to their distance"));
break;

View File

@ -59,7 +59,7 @@ public:
};
} // end namespace tri
} // end namepsace vcg
} // end namespace vcg
void QuadricSimplification (CMeshO &m,int TargetFaceNum, bool Selected, vcg::tri::TriEdgeCollapseQuadricParameter &pp, vcg::CallBackPos *cb);
void QuadricTexSimplification(CMeshO &m,int TargetFaceNum, bool Selected, vcg::tri::TriEdgeCollapseQuadricTexParameter &pp, vcg::CallBackPos *cb);

View File

@ -165,7 +165,7 @@ return QString("Filter Unknown");
// This function define the needed parameters for each filter. Return true if the filter has some parameters
// it is called every time, so you can set the default value of parameters according to the mesh
// For each parmeter you need to define,
// For each parameter you need to define,
// - the name of the parameter,
// - the string shown in the dialog
// - the default value
@ -237,7 +237,7 @@ void MlsPlugin::initParameterSet(QAction* action, MeshDocument& md, RichParamete
"MLS - Spherical parameter",
"Control the curvature of the fitted spheres: 0 is equivalent to a pure plane fit,"
"1 to a pure spherical fit, values between 0 and 1 gives intermediate results,"
"while others real values might give interresting results, but take care with extreme"
"while other real values might give interesting results, but take care with extreme"
"settings !"));
if (!(id & _COLORIZE_))
parlst.addParam(new RichBool( "AccurateNormal",

View File

@ -96,7 +96,7 @@ class MlsSurface
virtual MatrixType hessian(const VectorType& x, int* errorMask = 0) const
{ if (errorMask) *errorMask = MLS_NOT_SUPPORTED; return MatrixType(); }
/** \returns the projection of point x onto the MLS surface, and optionnaly returns the normal in \a pNormal */
/** \returns the projection of point x onto the MLS surface, and optionally returns the normal in \a pNormal */
virtual VectorType project(const VectorType& x, VectorType* pNormal = 0, int* errorMask = 0) const = 0;
/** \returns whether \a x is inside the restricted surface definition domain */

View File

@ -78,7 +78,7 @@ QString FilterMutualInfoPlugin::filterName(FilterIDType filterId) const
// The FilterClass describes in which generic class of filters it fits.
// This choice affect the submenu in which each filter will be placed
// More than a single class can be choosen.
// More than a single class can be chosen.
FilterMutualInfoPlugin::FilterClass FilterMutualInfoPlugin::getClass(QAction *a)
{
switch(ID(a))

View File

@ -66,7 +66,7 @@ PlyMCPlugin::PlyMCPlugin()
"It is mostly a variant of the Curless et al. e.g. a volumetric approach with some original weighting schemes,"
"a different expansion rule, and another approach to hole filling through volume dilation/relaxations.<br>"
"The filter is applied to <b>ALL</b> the visible layers. In practice, all the meshes/point clouds that are currently <i>visible<i> are used to build the volumetric distance field.");
case FP_MC_SIMPLIFY : return QString( "A simplification/cleaning algoritm that works ONLY on meshes generated by Marching Cubes algorithm." );
case FP_MC_SIMPLIFY : return QString( "A simplification/cleaning algorithm that works ONLY on meshes generated by Marching Cubes algorithm." );
default : assert(0);
}
@ -75,7 +75,7 @@ PlyMCPlugin::PlyMCPlugin()
// The FilterClass describes in which generic class of filters it fits.
// This choice affect the submenu in which each filter will be placed
// More than a single class can be choosen.
// More than a single class can be chosen.
PlyMCPlugin::FilterClass PlyMCPlugin::getClass(QAction *a)
{
switch(ID(a))
@ -89,7 +89,7 @@ PlyMCPlugin::PlyMCPlugin()
// This function define the needed parameters for each filter. Return true if the filter has some parameters
// it is called every time, so you can set the default value of parameters according to the mesh
// For each parmeter you need to define,
// For each parameter you need to define,
// - the name of the parameter,
// - the string shown in the dialog
// - the default value

View File

@ -39,12 +39,12 @@ void usage()
" -s... Compute only a subvolume (specify 6 integers) \n"
" -S... Compute all the subvolumes of a partition (specify 3 int) \n"
" -X... Compute a range of the the subvolumes of a partition (specify 9 int)\n"
" -M Apply a 'safe' simplification step that removes only the unecessary triangles\n"
" -M Apply a 'safe' simplification step that removes only the unnecessary triangles\n"
" -w# Set distance field Expansion factor in voxel (default 3)\n"
" -W# Set distance field Exp. as an absolute dist (override -w)\n"
" -a# Set angle threshold for distance field expansion (default 30)\n"
" -f# Set the fill threshold (default 12: all voxel having less \n"
" than 12 adjacent are not automaticall filled)\n"
" than 12 adjacent are not automatically filled)\n"
" -L# Set Number of smoothing passes to be done after merging of all meshes\n"
" -R# Set Number of Refill passes to be done after merging of all meshes\n"
" -l# Make a single smoothing step after each expansion\n"

View File

@ -106,7 +106,7 @@ QhullPlugin::~QhullPlugin()
// The FilterClass describes in which generic class of filters it fits.
// This choice affect the submenu in which each filter will be placed
// More than a single class can be choosen.
// More than a single class can be chosen.
QhullPlugin::FilterClass QhullPlugin::getClass(QAction *a)
{
switch(ID(a))
@ -125,7 +125,7 @@ QhullPlugin::~QhullPlugin()
// This function define the needed parameters for each filter. Return true if the filter has some parameters
// it is called every time, so you can set the default value of parameters according to the mesh
// For each parmeter you need to define,
// For each parameter you need to define,
// - the name of the parameter,
// - the string shown in the dialog
// - the default value

View File

@ -80,7 +80,7 @@ facetT *compute_convex_hull(int dim, int numpoints, MeshModel &m)
int exitcode; /* 0 if no error from qhull */
/* initialize points[] here.
points is an array of coordinates. Each triplet of coordinates rapresents a 3d vertex */
points is an array of coordinates. Each triplet of coordinates represents a 3d vertex */
points= qh_readpointsFromMesh(&numpoints, &dim, m);
exitcode= qh_new_qhull (dim, numpoints, points, ismalloc,
@ -134,7 +134,7 @@ facetT *compute_delaunay(int dim, int numpoints, MeshModel &m)
int exitcode; /* 0 if no error from qhull */
/* initialize points[] here.
points is an array of coordinates. Each triplet of coordinates rapresents a 3d vertex */
points is an array of coordinates. Each triplet of coordinates represents a 3d vertex */
points= qh_readpointsFromMesh(&numpoints, &dim, m);
exitcode= qh_new_qhull (dim, numpoints, points, ismalloc,
@ -192,7 +192,7 @@ bool compute_voronoi(int dim, int numpoints, MeshModel &m, MeshModel &pm, float
int exitcode; /* 0 if no error from qhull */
/* initialize points[] here.
points is an array of coordinates. Each triplet of coordinates rapresents a 3d vertex */
points is an array of coordinates. Each triplet of coordinates represents a 3d vertex */
points= qh_readpointsFromMesh(&numpoints, &dim, m);
coordT* copypoints= (coordT*)malloc(numpoints*dim*sizeof(coordT));
for(int i=0;i<numpoints*dim;i++)
@ -498,7 +498,7 @@ bool compute_alpha_shapes(int dim, int numpoints, MeshModel &m, MeshModel &pm, d
int exitcode; /* 0 if no error from qhull */
/* initialize points[] here.
points is an array of coordinates. Each triplet of coordinates rapresents a 3d vertex */
points is an array of coordinates. Each triplet of coordinates represents a 3d vertex */
points= qh_readpointsFromMesh(&numpoints, &dim, m);
int ridgesCount=0;
@ -862,7 +862,7 @@ int visible_points(int dim, int numpoints, MeshModel &m, MeshModel &pm,MeshModel
coordT *qh_readpointsFromMesh(int *numpoints, int *dimension, MeshModel &m)
build an array of coordinates from the vertices of the mesh m.
Each triplet of coordinates rapresents a 3d vertex.
Each triplet of coordinates represents a 3d vertex.
returns
the array of coordinates.

View File

@ -88,8 +88,8 @@ void QualityMapperFilter::initParameterSet(QAction *action,MeshModel &m, RichPar
{
_meshMinMaxQuality = tri::Stat<CMeshO>::ComputePerVertexQualityMinMax(m.cm);
parlst.addParam(new RichFloat("minQualityVal", _meshMinMaxQuality.minV, "Minimum mesh quality","The specified quality value is mapped in the <b>lower</b> end of the choosen color scale. Default value: the minumum quality value found on the mesh." ));
parlst.addParam(new RichFloat("maxQualityVal", _meshMinMaxQuality.maxV, "Maximum mesh quality","The specified quality value is mapped in the <b>upper</b> end of the choosen color scale. Default value: the maximum quality value found on the mesh." ));
parlst.addParam(new RichFloat("minQualityVal", _meshMinMaxQuality.minV, "Minimum mesh quality","The specified quality value is mapped in the <b>lower</b> end of the chosen color scale. Default value: the minimum quality value found on the mesh." ));
parlst.addParam(new RichFloat("maxQualityVal", _meshMinMaxQuality.maxV, "Maximum mesh quality","The specified quality value is mapped in the <b>upper</b> end of the chosen color scale. Default value: the maximum quality value found on the mesh." ));
parlst.addParam(new RichFloat("midHandlePos", 50, "Gamma biasing (0..100)", "Defines a gamma compression of the quality values, by setting the position of the middle of the color scale. Value is defined as a percentage (0..100). Default value is 50, that corresponds to a linear mapping." ));
parlst.addParam(new RichFloat("brightness", 1.0f, "Mesh brightness", "must be between 0 and 2. 0 represents a completely dark mesh, 1 represents a mesh colorized with original colors, 2 represents a completely bright mesh"));
//setting default transfer functions names

View File

@ -260,7 +260,7 @@ public:
double min_dist;
double max_dist;
double mean_dist;
double RMS_dist; /// from the wikipedia defintion RMS DIST is sqrt(Sum(distances^2)/n), here we store Sum(distances^2)
double RMS_dist; /// from the wikipedia definition RMS DIST is sqrt(Sum(distances^2)/n), here we store Sum(distances^2)
float getMeanDist() const { return mean_dist / n_total_samples; }
float getMinDist() const { return min_dist; }
@ -398,7 +398,7 @@ QString FilterDocSampling::filterName(FilterIDType filterId) const
QString FilterDocSampling::filterInfo(FilterIDType filterId) const
{
switch(filterId) {
case FP_ELEMENT_SUBSAMPLING : return QString("Create a new layer populated with a point sampling of the current mesh; at most one sample for each element of the mesh is created. Samples are taking in a uniform way, one for each element (vertex/edge/face); all the elements have the same probabilty of being choosen.");
case FP_ELEMENT_SUBSAMPLING : return QString("Create a new layer populated with a point sampling of the current mesh; at most one sample for each element of the mesh is created. Samples are taking in a uniform way, one for each element (vertex/edge/face); all the elements have the same probability of being chosen.");
case FP_MONTECARLO_SAMPLING : return QString("Create a new layer populated with a point sampling of the current mesh; samples are generated in a randomly uniform way, or with a distribution biased by the per-vertex quality values of the mesh.");
case FP_STRATIFIED_SAMPLING : return QString("Create a new layer populated with a point sampling of the current mesh; to generate multiple samples inside a triangle each triangle is subdivided according to various <i>stratified</i> strategies. Distribution is often biased by triangle shape.");
case FP_CLUSTERED_SAMPLING : return QString("Create a new layer populated with a subsampling of the vertexes of the current mesh; the subsampling is driven by a simple one-per-gridded cell strategy.");
@ -410,7 +410,7 @@ QString FilterDocSampling::filterInfo(FilterIDType filterId) const
case FP_HAUSDORFF_DISTANCE : return QString("Compute the Hausdorff Distance between two layers, sampling one of the two and finding for each sample the closest point over the other mesh.");
case FP_DISTANCE_REFERENCE : return QString("Compute the signed/unsigned (per vertex) distance between a mesh/pointcloud and a reference mesh/pointcloud. Distance is stored in vertex quality.");
case FP_TEXEL_SAMPLING : return QString("Create a new layer with a point sampling of the current mesh, a sample for each texel of the mesh is generated");
case FP_VERTEX_RESAMPLING : return QString("Transfer the choosen per-vertex attributes from one layer to another. Useful to transfer attributes to different representations of a same object.<br>"
case FP_VERTEX_RESAMPLING : return QString("Transfer the chosen per-vertex attributes from one layer to another. Useful to transfer attributes to different representations of a same object.<br>"
"For each vertex of the target mesh the closest point (not vertex!) on the source mesh is computed, and the requested interpolated attributes from that source point are copied into the target vertex.<br>"
"The algorithm assumes that the two meshes are reasonably similar and aligned.");
case FP_UNIFORM_MESH_RESAMPLING : return QString("Create a new mesh that is a resampled version of the current one.<br>"
@ -418,7 +418,7 @@ QString FilterDocSampling::filterInfo(FilterIDType filterId) const
"The resampled surface is reconstructed using the <b>marching cube</b> algorithm over this volume.");
case FP_VORONOI_COLORING : return QString("Given a Mesh <b>M</b> and a Pointset <b>P</b>, The filter project each vertex of P over M and color M according to the geodesic distance from these projected points. Projection and coloring are done on a per vertex basis.");
case FP_DISK_COLORING : return QString("Given a Mesh <b>M</b> and a Pointset <b>P</b>, The filter project each vertex of P over M and color M according to the Euclidean distance from these projected points. Projection and coloring are done on a per vertex basis.");
case FP_REGULAR_RECURSIVE_SAMPLING : return QString("The bbox is recursively partitioned in a octree style, center of bbox are considered, when the center is nearer to the surface than a given thr it is projected on it. It works also for building ofsetted samples.");
case FP_REGULAR_RECURSIVE_SAMPLING : return QString("The bbox is recursively partitioned in a octree style, center of bbox are considered, when the center is nearer to the surface than a given thr it is projected on it. It works also for building offsetted samples.");
default : assert(0); return QString("unknown filter!!!!");
}
}
@ -503,7 +503,7 @@ void FilterDocSampling::initParameterSet(QAction *action, MeshDocument & md, Ric
QStringList() << "Average" << "Closest to center",
tr("Representative Strategy:"),
tr( "<b>Average</b>: for each cell we take the average of the sample falling into. The resulting point is a new point.<br>"
"<b>Closest to center</b>: for each cell we take the sample that is closest to the center of the cell. Choosen vertices are a subset of the original ones."
"<b>Closest to center</b>: for each cell we take the sample that is closest to the center of the cell. Chosen vertices are a subset of the original ones."
)));
parlst.addParam(new RichBool ("Selected", false, "Only on Selection",
"If true only for the filter is applied only on the selected subset of the mesh."));
@ -529,7 +529,7 @@ void FilterDocSampling::initParameterSet(QAction *action, MeshDocument & md, Ric
case FP_POISSONDISK_SAMPLING :
parlst.addParam(new RichInt("SampleNum", 1000, "Number of samples", "The desired number of samples. The ray of the disk is calculated according to the sampling density."));
parlst.addParam(new RichAbsPerc("Radius", 0, 0, md.mm()->cm.bbox.Diag(), "Explicit Radius", "If not zero this parameter override the previous parameter to allow exact radius specification"));
parlst.addParam(new RichInt("MontecarloRate", 20, "MonterCarlo OverSampling", "The over-sampling rate that is used to generate the intial Montecarlo samples (e.g. if this parameter is <i>K</i> means that<i>K</i> x <i>poisson sample</i> points will be used). The generated Poisson-disk samples are a subset of these initial Montecarlo samples. Larger this number slows the process but make it a bit more accurate."));
parlst.addParam(new RichInt("MontecarloRate", 20, "MonterCarlo OverSampling", "The over-sampling rate that is used to generate the initial Montecarlo samples (e.g. if this parameter is <i>K</i> means that<i>K</i> x <i>poisson sample</i> points will be used). The generated Poisson-disk samples are a subset of these initial Montecarlo samples. Larger this number slows the process but make it a bit more accurate."));
parlst.addParam(new RichBool("SaveMontecarlo", false, "Save Montecarlo", "If true, it will generate an additional Layer with the montecarlo sampling that was pruned to build the poisson distribution."));
parlst.addParam(new RichBool("ApproximateGeodesicDistance", false, "Approximate Geodesic Distance", "If true Poisson Disc distances are computed using an approximate geodesic distance, e.g. an euclidean distance weighted by a function of the difference between the normals of the two points."));
parlst.addParam(new RichBool("Subsample", false, "Base Mesh Subsampling", "If true the original vertices of the base mesh are used as base set of points. In this case the SampleNum should be obviously much smaller than the original vertex number.<br>Note that this option is very useful in the case you want to subsample a dense point cloud."));
@ -544,7 +544,7 @@ void FilterDocSampling::initParameterSet(QAction *action, MeshDocument & md, Ric
case FP_TEXEL_SAMPLING :
parlst.addParam(new RichInt ( "TextureW", 512, "Texture Width",
"A sample for each texel is generated, so the desired texture size is need, only samples for the texels falling inside some faces are generated.\n Setting this param to 256 means that you get at most 256x256 = 65536 samples).<br>"
"If this parameter is 0 the size of the current texture is choosen."));
"If this parameter is 0 the size of the current texture is chosen."));
parlst.addParam(new RichInt ( "TextureH", 512, "Texture Height",
"A sample for each texel is generated, so the desired texture size is need, only samples for the texels falling inside some faces are generated.\n Setting this param to 256 means that you get at most 256x256 = 65536 samples)"));
parlst.addParam(new RichBool( "TextureSpace", false, "UV Space Sampling",
@ -576,7 +576,7 @@ void FilterDocSampling::initParameterSet(QAction *action, MeshDocument & md, Ric
parlst.addParam(new RichInt("SampleNum", md.mm()->cm.vn, "Number of samples",
"The desired number of samples. It can be smaller or larger than the mesh size, and according to the choosed sampling strategy it will try to adapt."));
parlst.addParam(new RichAbsPerc("MaxDist", md.mm()->cm.bbox.Diag() / 2.0, 0.0f, md.bbox().Diag(),
tr("Max Distance"), tr("Sample points for which we do not find anything whithin this distance are rejected and not considered neither for averaging nor for max.")));
tr("Max Distance"), tr("Sample points for which we do not find anything within this distance are rejected and not considered neither for averaging nor for max.")));
} break;
case FP_DISTANCE_REFERENCE:
@ -620,7 +620,7 @@ void FilterDocSampling::initParameterSet(QAction *action, MeshDocument & md, Ric
parlst.addParam(new RichBool ("QualityDistance", false, "Store dist. as quality",
"if enabled, we store the distance of the transferred value as in the vertex quality"));
parlst.addParam(new RichAbsPerc("UpperBound", md.mm()->cm.bbox.Diag()/50.0, 0.0f, md.mm()->cm.bbox.Diag(),
tr("Max Dist Search"), tr("Sample points for which we do not find anything whithin this distance are rejected and not considered for recovering attributes.")));
tr("Max Dist Search"), tr("Sample points for which we do not find anything within this distance are rejected and not considered for recovering attributes.")));
parlst.addParam(new RichBool ("onSelected", false, "Only on selection", "If checked, only transfer to selected vertices on TARGET mesh"));
} break;

View File

@ -81,7 +81,7 @@ public:
* 2] L2-norm equals 1
* <useDotRatios> specifies if dot-products of derivatives
* should be pre-divided by function integrals
* <reflectBoundary> spcifies if function space should be
* <reflectBoundary> specifies if function space should be
* forced to be reflectively symmetric across the boundary
********************************************************/
#if BOUNDARY_CONDITIONS

View File

@ -1008,7 +1008,7 @@ void OctNode< NodeData >::ConstNeighborKey< LeftRadius , RightRadius >::getNeigh
neighbors.clear();
if( !node ) return;
// [WARNING] This estimate of the required radius is somewhat conservative if the readius is odd (depending on where the node is relative to its parent)
// [WARNING] This estimate of the required radius is somewhat conservative if the radius is odd (depending on where the node is relative to its parent)
const unsigned int _PLeftRadius = (_LeftRadius+1)/2 , _PRightRadius = (_RightRadius+1)/2;
// If we are at the root of the tree, we are done
if( !node->parent ) neighbors.neighbors[_LeftRadius][_LeftRadius][_LeftRadius] = node;

View File

@ -1881,7 +1881,7 @@ Read an element from a binary file.
return (NULL);
}
/* convert line-feed and tabs into spaces */
/* (this guarentees that there will be a space before the */
/* (this guarantees that there will be a space before the */
/* null character at the end of the string) */
str[BIG_STRING-2] = ' ';

View File

@ -34,7 +34,7 @@ DAMAGE.
// SparseMatrix //
///////////////////
///////////////////////////////////////
// SparseMatrix Methods and Memebers //
// SparseMatrix Methods and Members //
///////////////////////////////////////
template< class T >

View File

@ -57,7 +57,7 @@ ACM Trans. Graphics, 32(3), 2013<br><br>
</PARAM>
<PARAM parName="iters" parType="Int" parIsImportant="false" parIsPersistent="false" parDefault="8">
<PARAM_HELP><![CDATA[This integer value specifies the number of Gauss-Seidel relaxations to be performed at each
level of the hiearchy.
level of the hierarchy.
The default value for this parameter is 8.]]></PARAM_HELP>
<EDIT_GUI guiLabel="Gauss-Seidel Relaxations"/>
</PARAM>

View File

@ -110,14 +110,14 @@ QString SdfGpuPlugin::filterInfo(FilterIDType filterId) const
case SDF_SDF : return QString("Calculate the SDF (<b>shape diameter function</b>) on the mesh, you can visualize the result colorizing the mesh. "
"The SDF is a scalar function on the mesh surface and represents the neighborhood diameter of the object at each point. "
"Given a point on the mesh surface,"
"several rays are sent inside a cone, centered around the point's inward-normal, to the other side of the mesh. The result is a weighted sum of all rays lenghts. "
"several rays are sent inside a cone, centered around the point's inward-normal, to the other side of the mesh. The result is a weighted sum of all rays lengths. "
"For further details, see the reference paper:<br>"
"<b>Shapira Shamir Cohen-Or,<br>"
"Consistent Mesh Partitioning and Skeletonisation using the shaper diamter function, Visual Comput. J. (2008)</b> ");
case SDF_DEPTH_COMPLEXITY : return QString("Calculate the depth complexity of the mesh, that is: the maximum number of layers that a ray can hit while traversing the mesh. To have a correct value, you should specify and high value in the peeling iteration paramater. "
"You can read the result in the MeshLab log window. <b>If warnings are not present, you have the exact value, otherwise try increasing the peeling iteration paramater. After having calulated the correct value,"
case SDF_DEPTH_COMPLEXITY : return QString("Calculate the depth complexity of the mesh, that is: the maximum number of layers that a ray can hit while traversing the mesh. To have a correct value, you should specify and high value in the peeling iteration parameter. "
"You can read the result in the MeshLab log window. <b>If warnings are not present, you have the exact value, otherwise try increasing the peeling iteration parameter. After having calculated the correct value,"
"you can ignore further warnings that you may get using that value.</b>. ");
case SDF_OBSCURANCE : return QString("Calculates obscurance coefficents for the mesh. Obscurance is introduced to avoid the "
case SDF_OBSCURANCE : return QString("Calculates obscurance coefficients for the mesh. Obscurance is introduced to avoid the "
"disadvantages of both classical ambient term and ambient occlusion. "
"In ambient occlusion, totally occluded parts of the mesh are black. "
"Instead obscurance, despite still based on a perfectly diffuse light coming "

View File

@ -45,7 +45,7 @@ public:
* @param name the name of the plugin.
*
* The name of the plugin is used in the Meshlab menus as well as in the source
* as a key to identify the plugin uniquely. Tipically your plugin will have to
* as a key to identify the plugin uniquely. Typically your plugin will have to
* implement a construction like the following:
* \code
* MyPlugin::MyPlugin() : SingleMeshFilterInterface( "My Mesh Filter" ){

Some files were not shown because too many files have changed in this diff Show More