/***************************************************************************
* Copyright (C) 2007 by Abderrahman Taha *
* *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a cop::y of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor,Boston, MA 02110-1301 USA *
***************************************************************************/
#include <qmainwindow.h>
#include <qtabwidget.h>
#include <qwidget.h>
#include <qgroupbox.h>
#include <qlayout.h>
#include <qfile.h>
#include <qfiledialog.h>
#include <iostream>
#include <qlineedit.h>
#include <qlabel.h>
#include <qcheckbox.h>
#include <qpushbutton.h>
#include <qlistview.h>
#include <qspinbox.h>
#include <qcombobox.h>
#include <qheader.h>
#include <qtooltip.h>
#include <qwhatsthis.h>
#include <qevent.h>
#include <qmessagebox.h>
#include <qscrollbar.h>
#include <qstatusbar.h>
#include <qcheckbox.h>
#include <qmovie.h>
#include "GlWindow.h"
#include "newwindow2.h"
#include "IsoWindow.h"
//#include "drawingoptions.h"
#include "ParisoMathObject.h"
#include "videoplayer.h"
#include "PovConfig.h"
int xyzactivated = 1;
int smooth_triangle =1, mesh_parametric =1,
continu = -1, drawvista = -1,
implicite_fct = -1, parametrique_ok = 1,
fourdimshapes = -1, fivedimshapes = -1, sixdimshapes = -1,
separatecheckogjects = -1, tria_nas = -1, inverse_condition = -1,
activate_cd = -1, activate_isocd = -1, activate_supershape = -1, add_condition = -1 , condition_mesh = 1,
draw_poly_normals = -1, activate_tools = -1, axechoice = 1, objfile_triangle = -1, isomesh =-1, activateiso = -1, inverse_isocondition = -1;
int spheric_fct = -1, cylindric_fct = -1;
int implicit_param = 1, implicit_spheric = -1, implicit_cylindric = -1;
int NbStep =30;
int paramwidgetstack = 1, isowidgetstack =1;
QString xterm="",
Width="+W400", Height="+H400",
Start_RowEdit="", End_RowEdit="",
Start_ColumnEdit="", End_ColumnEdit="",
Test_Abort_CountEdit="X50",
Pause_When_Done = "+P",
Continue ="",
Output_File_NameEdit="+Oscene", FileExtension=".tga +FT ",
Input_File_NameEdit="+Itest.pov",
OutPutBuffer="", IncludeHeaderFile="", LibraryPath="";
ParisoMathObject RootObjet;
Iso3D * IndependantIsoObjet;/// = new Iso3D();
///+++++++++++++++++++++++++++++///
void k3dsurface::Axes_center() {
//if(activateiso == 1) isoWidget->Axes_center();
if(tabsurf->currentPageIndex() == 1) isoWidget->Axes_center();
else connectWidget2->Axes_center();
}
///+++++++++++++++++++++++++++++///
void k3dsurface::Axes_draw() {
//if(activateiso == 1) isoWidget->Axes_draw();
if(tabsurf->currentPageIndex() == 1) isoWidget->Axes_draw();
else connectWidget2->Axes_draw();
}
///+++++++++++++++++++++++++++++///
void k3dsurface::Axes_width (int cl) {
//if(activateiso == 1) isoWidget->Axes_width(cl);
if(tabsurf->currentPageIndex() == 1) isoWidget->Axes_width(cl);
else connectWidget2->Axes_width(cl);
}
///+++++++++++++++++++++++++++++///
void k3dsurface::Axes_size (int cl) {
if(tabsurf->currentPageIndex() == 1) isoWidget->Axes_size(cl);
else connectWidget2->Axes_size(cl);
}
///+++++++++++++++++++++++++++++///
void k3dsurface::iso_Fct_activated(){
activateiso *= -1;
}
//====================================
void k3dsurface::iso_mesh()
{
isomesh *=-1; ///To use for deactivating some components in the interface
isoWidget->IsoObjet->IsoMesh*= -1;
IsoGlWidget->meshOk();
/// Update Iso page :
IsoPageUpdate();
}
//====================================
void k3dsurface::iso_infos()
{
isoWidget->IsoObjet->IsoInfos*= -1;
IsoGlWidget->infosOk();
/// Update Iso page :
IsoPageUpdate();
}
//====================================
void k3dsurface::trianglemesh_clicked()
{
objfile_triangle *= -1;
}
//====================================
void k3dsurface::axex_choice(){
axechoice = 0;
}
//====================================
void k3dsurface::axey_choice(){
axechoice = 1;
}
//====================================
void k3dsurface::axez_choice(){
axechoice = 2;
}
//====================================
/*
void k3dsurface::Draw_Normals(){
draw_poly_normals *= -1;
connectWidget2->objet->draw_poly_normals = draw_poly_normals;
connectWidget2->update();
}
*/
//====================================
void k3dsurface::addcondt(){
add_condition*= -1;
connectWidget2->objet->draw_hidden_poly_and_nonhidden = add_condition;
connectWidget2->update();
}
//====================================
void k3dsurface::meshcondt(){
condition_mesh *= -1;
connectWidget2->objet->draw_cond_mesh = condition_mesh;
}
//====================================
void k3dsurface::inverse_cond(){
inverse_condition *= -1;
if(inverse_condition == 1)
connectWidget2->objet->condition_expression = QString("("+condition->text()+") = 0");
else connectWidget2->objet->condition_expression = condition->text();
perform();
//connectWidget2->update();
}
//====================================
void k3dsurface::inverse_isocond(){
inverse_isocondition *= -1;
if(inverse_isocondition == 1)
isoWidget->IsoObjet->IsoCondition = QString("("+Isocondition->text()+") = 0");
else isoWidget->IsoObjet->IsoCondition = Isocondition->text();
PerformNewImplicitFunct();
}
//====================================
void k3dsurface::activate_cond(){
QMessageBox message;
if( paramwidgetstack == 1)
{
message.setText(tr(QString("Not yet supported by the OpenGL viewer\n Turn OFF OpenGL to see the result")));
message.adjustSize () ;
message.exec();
activ_cond->toggle();
return ;
}
activate_cd *= -1;
if(activate_cd == 1) {
groupBox25_2->setEnabled(TRUE);
condition->setEnabled(TRUE);
inverse_condt->setEnabled(TRUE);
connectWidget2->objet->there_is_condition *= -1;
if(inverse_condition == 1)
connectWidget2->objet->condition_expression = QString("("+condition->text()+") = 0");
else connectWidget2->objet->condition_expression = condition->text();
}
else {
groupBox25_2->setEnabled(FALSE);
//condition->setEnabled(FALSE);
//inverse_condt->setEnabled(FALSE);
connectWidget2->objet->there_is_condition *= -1;
}
perform();
//connectWidget2->update();
}
//====================================
void k3dsurface::activate_isocond(){
/* QMessageBox message;
if( isowidgetstack == 1)
{
message.setText(tr(QString("Not yet supported by the OpenGL viewer\n Turn OFF OpenGL to see the result")));
message.adjustSize () ;
message.exec();
Isoactiv_cond->toggle();
return ;
}
*/
activate_isocd *= -1;
if(activate_isocd == 1) {
IsogroupBox->setEnabled(TRUE);
Isocondition->setEnabled(TRUE); /// TO FORCE ENABLE!!!
//cndmesh_2->setEnabled(TRUE); /// TO FORCE ENABLE!!!
isoWidget->IsoObjet->IsoConditionRequired *= -1;
IsoGlWidget->conditionok();
isoWidget->IsoObjet->IsoCondition = Isocondition->text();
}
else {
//Isocondition->setEnabled(FALSE);
IsogroupBox->setEnabled(FALSE);
isoWidget->IsoObjet->IsoConditionRequired *= -1;
IsoGlWidget->conditionok();
}
PerformNewImplicitFunct();
}
//========================================
void k3dsurface::activate_frame(){
/*
QMessageBox message ;
QDir dir(Input_Dir_NameEdit->text());
if( !dir.exists()) {
message.setText(tr(QString(Input_Dir_NameEdit->text()+" Directory doesn't exists. \
Create it or chose another one. ")));
message.adjustSize () ;
message.exec();
return;
}
connectWidget2->frames_ok *= -1;
connectWidget2->counter = 0;
if(connectWidget2->frames_ok == 1) {
frames->setText("Frames :\n Stop");
}
else frames->setText("Frames :\n Start");
*/
}
//====================================
void k3dsurface::sixdimshape_activate()
{
sixdimshapes *= -1;
if(sixdimshapes == 1) {
scft_5->setEnabled(TRUE);
sfct_5->setEnabled(TRUE);
rotational6d->setEnabled(TRUE);
connectWidget2->objet->sixdimshapes = 1;
}
else {
scft_5->setEnabled(FALSE);
sfct_5->setEnabled(FALSE);
rotational6d->setEnabled(FALSE);
connectWidget2->objet->sixdimshapes = -1;
}
perform_fivedim();
}
//========================================//
//
// Handles mouse move events for the connect widget.
//
void k3dsurface::keyPressEvent ( QKeyEvent * e ) {
///std::cout << e->text();
connectWidget2->objet->keyboard = e->text();
connectWidget2->update();
}
//====================================
void k3dsurface::videorecord(){
/*
connectWidget2->video_ok *= -1;
if(connectWidget2->video_ok == 1) video->setText("Video: \n Stop");
else video->setText("Video: \n Start");
connectWidget2->videorecord();
*/
}
//======================================
void k3dsurface::videoplay(){
QImage buf;
int current_pag = tabsurf->currentPageIndex();
if(current_pag == 0) buf = ParamGlWidget->Copyscreenshot();
else if (current_pag == 1) buf = IsoGlWidget->Copyscreenshot();
videoplayer *player = new videoplayer(buf);
player->connectcontrols();
player->show();
}
//====================================
void k3dsurface::loadPov()
{
editeur *ed = new editeur();
ed->load("test.pov");
ed->show();
}
//====================================
void k3dsurface::separateCheckBoxtoggled(){
separatecheckogjects *= -1;
if(separatecheckogjects == 1) {
groupobjects->setEnabled(TRUE);
firstobj->setEnabled(TRUE) ; //don't know whay it doesn't enable automaticly...
secondobj->setEnabled(TRUE); //don't know whay it doesn't enable automaticly...
if(activate_cd == 1) {
activ_cond->toggle();
condition->setEnabled(FALSE);
inverse_condt->setEnabled(FALSE);
connectWidget2->objet->there_is_condition *= -1;
activate_cd = -1;
}
}
else groupobjects->setEnabled(FALSE);
connectWidget2->objet->two_separate_objects *= -1;
connectWidget2->valueChanged();
}
//====================================
void k3dsurface::firstobjtoggled(){
connectWidget2->objet->change_first_object *= -1;
if(connectWidget2->objet->change_first_object == 1) {
connectWidget2->objet->mat = connectWidget2->objet->mat_first_obj;
connectWidget2->objet->mat_rotation_save = connectWidget2->objet->mat_rotation_first_save;
}
else {
connectWidget2->objet->mat_first_obj = connectWidget2->objet->mat;
connectWidget2->objet->mat_rotation_first_save = connectWidget2->objet->mat_rotation_save;
}
}
//====================================
void k3dsurface::secondobjtoggled(){
connectWidget2->objet->change_second_object *= -1;
if(connectWidget2->objet->change_second_object == 1) {
connectWidget2->objet->mat = connectWidget2->objet->mat_second_obj;
connectWidget2->objet->mat_rotation_save = connectWidget2->objet->mat_rotation_second_save;
}
else {
connectWidget2->objet->mat_second_obj = connectWidget2->objet->mat;
connectWidget2->objet->mat_rotation_second_save = connectWidget2->objet->mat_rotation_save;
}
};
//====================================
void k3dsurface::resizeEvent( QResizeEvent *e ) {
///For Windows
if (connectWidget2->anim5_ok != 1 && connectWidget2->anim4_ok != 1 &&
connectWidget2->anim_ok != 1 && connectWidget2->morph_ok != 1) {
QSize qs = e->size();QSize qsold = e->oldSize();
double ancien_hauteur = (double)connectWidget2->objet->demi_hauteur;
double ancien_largeur = (double)connectWidget2->objet->demi_largeur;
if(qs.width() > 365) {
connectWidget2->width = isoWidget->width = (qs.width() - 355);
connectWidget2->height = isoWidget->height = (qs.height() - 100);
connectWidget2->setFixedSize (qs.width() - 355, qs.height() - 100);
isoWidget->setFixedSize (qs.width() - 355, qs.height() - 100);
ParamGlWidget->setFixedSize (qs.width() - 355, qs.height() - 100);
IsoGlWidget->setFixedSize (qs.width() - 355, qs.height() - 100);
ParaWidgetStack->setFixedSize (qs.width() - 355, qs.height() - 100);
IsoWidgetStack->setFixedSize (qs.width() - 355, qs.height() - 100);
delete connectWidget2->pixmap;
delete isoWidget->pixmap;
connectWidget2->pixmap = new QPixmap(qs.width()- 355, qs.height() - 100);
isoWidget->pixmap = new QPixmap(qs.width()- 355, qs.height() - 100);
connectWidget2->objet->demi_hauteur = (qs.width() -355)/2;
connectWidget2->objet->demi_largeur = (qs.height() - 100)/2;
isoWidget->IsoObjet->demi_hauteur = (qs.width() -355)/2;
isoWidget->IsoObjet->demi_largeur = (qs.height() - 100)/2;
/// Parametric Window
if(connectWidget2->objet->demi_hauteur < connectWidget2->objet->demi_largeur)
connectWidget2->objet->coefficient = connectWidget2->objet->demi_hauteur/(double)ancien_hauteur;
else connectWidget2->objet->coefficient = connectWidget2->objet->demi_largeur/(double)ancien_largeur;
connectWidget2->objet->fct_bouton_droit3();
/// Iso Window
if(isoWidget->IsoObjet->demi_hauteur < isoWidget->IsoObjet->demi_largeur)
isoWidget->IsoObjet->ScalCoeff = isoWidget->IsoObjet->demi_hauteur/(double)ancien_hauteur;
else isoWidget->IsoObjet->ScalCoeff = isoWidget->IsoObjet->demi_largeur/(double)ancien_largeur;
isoWidget->IsoObjet->ScaleIsoMap();
/// OpenGL Window
if(isoWidget->IsoObjet->demi_hauteur < isoWidget->IsoObjet->demi_largeur)
ParamGlWidget->scalcoeff(isoWidget->IsoObjet->demi_hauteur/(double)ancien_hauteur);
else ParamGlWidget->scalcoeff(isoWidget->IsoObjet->demi_largeur/(double)ancien_largeur);
if(isoWidget->IsoObjet->demi_hauteur < isoWidget->IsoObjet->demi_largeur)
IsoGlWidget->scalcoeff(isoWidget->IsoObjet->demi_hauteur/(double)ancien_hauteur);
else IsoGlWidget->scalcoeff(isoWidget->IsoObjet->demi_largeur/(double)ancien_largeur);
}
}
else {
QMessageBox message ;
message.setText(tr(QString("Stop Anim/Morph before Resizing")));
message.adjustSize () ;
message.exec();
return ;
update();
}
};
//====================================
void k3dsurface::File_Extension_Changed(int choice){
switch(choice) {
case 0 : FileExtension = ".tga +FC"; break;
case 1 : FileExtension = ".png +FN8"; break;
case 2 : FileExtension = ".ppm +FP"; break;
case 3 : FileExtension = ".ss +FS"; break;
case 4 : FileExtension = ".tga +FT"; break;
}
}
//====================================
void k3dsurface::AnimIso(){
int current_pag = tabsurf->currentPageIndex();
if(current_pag != 1) tabsurf->setCurrentPage(1);
if( isowidgetstack != 1) ParaWidgetStack->raiseWidget ( 0 );
IsoGlWidget->anim();
}
//====================================
void k3dsurface::anim_verify_rot4d(){
int current_pag = tabsurf->currentPageIndex();
if(connectWidget2->anim4_ok == 1) anim->toggle();
if(current_pag != 0) tabsurf->setCurrentPage(0);
if( paramwidgetstack == 1) ParamGlWidget->anim();
else connectWidget2->anim();
}
//====================================
void k3dsurface::morph_verify_rot4d(){
int current_pag = tabsurf->currentPageIndex();
if(connectWidget2->anim4_ok == 1) morph->toggle();
if(current_pag != 0) tabsurf->setCurrentPage(0);
if(paramwidgetstack == 1) {
connectWidget2->objet->SpecialMorph_2(ParamGlWidget->LocalScene.ArrayNorVer_localPt, ParamGlWidget->PolyIndices_local, ParamGlWidget->NbPolygnNbVertex, NbStep);
ParamGlWidget->PolyNumber = connectWidget2->objet->NbPolygn;
ParamGlWidget->InitGlMorph();
ParamGlWidget->morph();
}
else connectWidget2->morph();
}
//====================================
void k3dsurface::IsoMorph(){
int current_pag = tabsurf->currentPageIndex();
if(current_pag != 1) tabsurf->setCurrentPage(1);
if( isowidgetstack != 1) IsoWidgetStack->raiseWidget ( 0 );
if(IsoGlWidget->LocalScene.isobox == 1) {
isobox->toggle();
IsoGlWidget->isoboxOk();
UpdateActivatedWin();
}
isoWidget->IsoObjet->SpecialMorph_2(
IsoGlWidget->LocalScene.ArrayNorVer_localPt,
IsoGlWidget->PolyIndices_local,
IsoGlWidget->NbPolygnNbVertex,
IsoGlWidget->TypeIsoSurfaceTriangleListeCND,
&(IsoGlWidget->VertexNumber),
NbStep,
IsoGlWidget->LocalScene.PolyIndices_localPtMin,
&(IsoGlWidget->LocalScene.NbPolygnNbVertexPtMin));
IsoGlWidget->PolyNumber = connectWidget2->objet->NbPolygn;
IsoGlWidget->InitGlMorph();
IsoGlWidget->morph();
}
//====================================
void k3dsurface::animxy_verify_rot3d(){
if(connectWidget2->anim_ok == 1 || connectWidget2->morph_ok == 1) xybox->toggle();
}
//====================================
void k3dsurface::animxz_verify_rot3d(){
if(connectWidget2->anim_ok == 1 || connectWidget2->morph_ok == 1) xzbox->toggle();
}
//====================================
void k3dsurface::animyz_verify_rot3d(){
if(connectWidget2->anim_ok == 1 || connectWidget2->morph_ok == 1) yzbox->toggle();
}
//====================================
void k3dsurface::animxw_verify_rot3d(){
if(connectWidget2->anim_ok == 1 || connectWidget2->morph_ok == 1) xwbox->toggle();
}
//====================================
void k3dsurface::animyw_verify_rot3d(){
if(connectWidget2->anim_ok == 1 || connectWidget2->morph_ok == 1) ywbox->toggle();
}
//====================================
void k3dsurface::animzw_verify_rot3d(){
if(connectWidget2->anim_ok == 1 || connectWidget2->morph_ok == 1) zwbox->toggle();
}
//====================================
void k3dsurface::newdrawwindow(){
if(paramwidgetstack == -1) {
newwindow2 * nouvellefenetre = new newwindow2();
*(nouvellefenetre->newwindow->objet) = *(connectWidget2->objet);
nouvellefenetre->newwindow->objet->independantwindow = 1; // to show message h= help
nouvellefenetre->show();
if(connectWidget2->anim_ok == 1 || connectWidget2->morph_ok == 1){
nouvellefenetre->newwindow->anim_ok = connectWidget2->anim_ok ;
nouvellefenetre->newwindow->morph_ok = connectWidget2->morph_ok ;
nouvellefenetre->newwindow->start();
}
else if(connectWidget2->anim4_ok == 1 ) {
nouvellefenetre->newwindow->anim4_ok = 1;
nouvellefenetre->newwindow->start();
}
else if(connectWidget2->anim5_ok == 1 ) {
nouvellefenetre->newwindow->anim5_ok = 1;
nouvellefenetre->newwindow->start();
};
} /// End of if(current_pag == 0)
else {
GlWindow *NewGlWindow = new GlWindow(0, "CO", WDestructiveClose | WStyle_StaysOnTop);
NewGlWindow->glWidget->PolyNumber = ParamGlWidget->PolyNumber ;
NewGlWindow->glWidget->LocalScene = ParamGlWidget->LocalScene;
NewGlWindow->glWidget->LocalScene.infos = -1;
/// Copy in one pass :
memcpy(NewGlWindow->glWidget->LocalScene.ArrayNorVer_localPt ,
ParamGlWidget->LocalScene.ArrayNorVer_localPt ,
6*100000*sizeof(GLfloat));
memcpy(NewGlWindow->glWidget->PolyIndices_local,
ParamGlWidget->PolyIndices_local,
3*200000*sizeof(GLuint));
memcpy(NewGlWindow->glWidget->LocalScene.PolyIndices_localPtMin,
ParamGlWidget->LocalScene.PolyIndices_localPtMin,
3*200000*sizeof(GLuint));
memcpy(NewGlWindow->glWidget->NbPolygnNbVertex,
ParamGlWidget->NbPolygnNbVertex,
100*sizeof(GLuint));
NewGlWindow->show();
}
}
//====================================
void k3dsurface::isodrawwindow(){
int MaximumNumberPoints = IsoGlWidget->MaximumNumberPoints,
MaximumNumberTriangles = IsoGlWidget->MaximumNumberTriangles;
GlWindow *NewGlWindow = new GlWindow(0, "IsoWin", WDestructiveClose | WStyle_StaysOnTop);
NewGlWindow->glWidget->PolyNumber = IsoGlWidget->PolyNumber ;
//NewGlWindow->glWidget->LocalScene = IsoGlWidget->LocalScene;
NewGlWindow->glWidget->LocalScene.border = IsoGlWidget->LocalScene.border;
NewGlWindow->glWidget->LocalScene.cndmesh = IsoGlWidget->LocalScene.cndmesh;
NewGlWindow->glWidget->LocalScene.drawcnd = IsoGlWidget->LocalScene.drawcnd;
NewGlWindow->glWidget->LocalScene.mesh = IsoGlWidget->LocalScene.mesh;
NewGlWindow->glWidget->LocalScene.line = IsoGlWidget->LocalScene.line;
NewGlWindow->glWidget->LocalScene.infos = IsoGlWidget->LocalScene.infos;
NewGlWindow->glWidget->LocalScene.axe = IsoGlWidget->LocalScene.axe;
NewGlWindow->glWidget->LocalScene.box = IsoGlWidget->LocalScene.box;
NewGlWindow->glWidget->LocalScene.isobox = IsoGlWidget->LocalScene.isobox;
NewGlWindow->glWidget->LocalScene.typedrawing= IsoGlWidget->LocalScene.typedrawing;
NewGlWindow->glWidget->LocalScene.smoothpoly = IsoGlWidget->LocalScene.smoothpoly;
NewGlWindow->glWidget->LocalScene.smoothline = IsoGlWidget->LocalScene.smoothline;
NewGlWindow->glWidget->LocalScene.anim = IsoGlWidget->LocalScene.anim;
NewGlWindow->glWidget->LocalScene.morph = IsoGlWidget->LocalScene.morph;
NewGlWindow->glWidget->LocalScene.norm = IsoGlWidget->LocalScene.norm;
NewGlWindow->glWidget->LocalScene.plan = IsoGlWidget->LocalScene.plan;
NewGlWindow->glWidget->LocalScene.front = IsoGlWidget->LocalScene.front;
NewGlWindow->glWidget->LocalScene.back = IsoGlWidget->LocalScene.back;
NewGlWindow->glWidget->LocalScene.condition = IsoGlWidget->LocalScene.condition;
memcpy(NewGlWindow->glWidget->LocalScene.frontcol,
IsoGlWidget->LocalScene.frontcol,
4*sizeof(GLfloat));
memcpy(NewGlWindow->glWidget->LocalScene.backcol,
IsoGlWidget->LocalScene.backcol,
4*sizeof(GLfloat));
memcpy(NewGlWindow->glWidget->LocalScene.gridcol,
IsoGlWidget->LocalScene.gridcol,
4*sizeof(GLfloat));
memcpy(NewGlWindow->glWidget->LocalScene.groundcol,
IsoGlWidget->LocalScene.groundcol,
4*sizeof(GLfloat));
memcpy(NewGlWindow->glWidget->LocalScene.condcol,
IsoGlWidget->LocalScene.condcol,
4*sizeof(GLfloat));
//NewGlWindow->glWidget->LocalScene = IsoGlWidget->LocalScene;
NewGlWindow->glWidget->LocalScene.NbPolygnNbVertexPtMin = IsoGlWidget->LocalScene.NbPolygnNbVertexPtMin;
NewGlWindow->glWidget->LocalScene.infos = -1;
delete (NewGlWindow->glWidget->LocalScene.ArrayNorVer_localPt);
delete (NewGlWindow->glWidget->PolyIndices_local);
delete (NewGlWindow->glWidget->LocalScene.PolyIndices_localPtMin);
delete (NewGlWindow->glWidget->TypeIsoSurfaceTriangleListeCND);
NewGlWindow->glWidget->LocalScene.ArrayNorVer_localPt = new GLfloat[6*MaximumNumberPoints];
NewGlWindow->glWidget->LocalScene.PolyIndices_localPt =
NewGlWindow->glWidget->PolyIndices_local = new GLuint [3*MaximumNumberTriangles];
NewGlWindow->glWidget->LocalScene.PolyIndices_localPtMin = new GLuint [3*MaximumNumberTriangles];
NewGlWindow->glWidget->TypeIsoSurfaceTriangleListeCND = new int [MaximumNumberTriangles];
/// Copy in one pass :
memcpy(NewGlWindow->glWidget->LocalScene.ArrayNorVer_localPt,
IsoGlWidget->LocalScene.ArrayNorVer_localPt,
6*MaximumNumberPoints*sizeof(GLfloat));
memcpy(NewGlWindow->glWidget->LocalScene.PolyIndices_localPt,
IsoGlWidget->LocalScene.PolyIndices_localPt,
3*MaximumNumberTriangles*sizeof(GLuint));
memcpy(NewGlWindow->glWidget->LocalScene.PolyIndices_localPtMin,
IsoGlWidget->LocalScene.PolyIndices_localPtMin,
3*MaximumNumberTriangles*sizeof(GLuint));
memcpy(NewGlWindow->glWidget->TypeIsoSurfaceTriangleListeCND,
IsoGlWidget->TypeIsoSurfaceTriangleListeCND,
MaximumNumberTriangles*sizeof(int));
memcpy(NewGlWindow->glWidget->NbPolygnNbVertex,
IsoGlWidget->NbPolygnNbVertex,
100*sizeof(GLuint));
if(IsoGlWidget->LocalScene.condition == 1){
int border,verifycnd;
border = NewGlWindow->glWidget->LocalScene.PolyNumberBorderCND = IsoGlWidget->LocalScene.PolyNumberBorderCND;
verifycnd = NewGlWindow->glWidget->LocalScene.PolyNumberVerifyCND = IsoGlWidget->LocalScene.PolyNumberVerifyCND;
NewGlWindow->glWidget->LocalScene.PolyNumberNotVerifyCND = IsoGlWidget->LocalScene.PolyNumberNotVerifyCND;
NewGlWindow->glWidget->LocalScene.PolyIndices_localBorderCND = &NewGlWindow->glWidget->LocalScene.PolyIndices_localPt[0];
NewGlWindow->glWidget->LocalScene.PolyIndices_localVerifyCND = &NewGlWindow->glWidget->LocalScene.PolyIndices_localPt[border];
NewGlWindow->glWidget->LocalScene.PolyIndices_localNotVerifyCND = &NewGlWindow->glWidget->LocalScene.PolyIndices_localPt[border+verifycnd];
}
NewGlWindow->show();
}
///====================================
void k3dsurface::NewIsoDrawWindow(){
IsoWindow * newisowin = new IsoWindow();
*(newisowin->isoWidget->IsoObjet) = *(isoWidget->IsoObjet);
newisowin->show();
/*
if(connectWidget2->anim_ok == 1 || connectWidget2->morph_ok == 1){
nouvellefenetre->newwindow->anim_ok = connectWidget2->anim_ok ;
nouvellefenetre->newwindow->morph_ok = connectWidget2->morph_ok ;
nouvellefenetre->newwindow->start();
}
else if(connectWidget2->anim4_ok == 1 ) {
nouvellefenetre->newwindow->anim4_ok = 1;
nouvellefenetre->newwindow->start();
}
else if(connectWidget2->anim5_ok == 1 ) {
nouvellefenetre->newwindow->anim5_ok = 1;
nouvellefenetre->newwindow->start();
};
*/
}
//====================================
void k3dsurface::newgldrawwindow(){
//newglwindow::newglwindow * glfenetre = new newglwindow::newglwindow();
//glfenetre->gldrawWidget->objet = new Model3D();//connectWidget2->objet;
//glfenetre->show();
}
//====================================
void k3dsurface::param_toggled(){
/*
parametrique_ok *= -1;
if(parametrique_ok == 1) toolBox2->setItemEnabled(0,TRUE);
else toolBox2->setItemEnabled(0,FALSE);
*/
}
//====================================
void k3dsurface::cylindric_Fct_activated(){
QMessageBox message ;
if(activate_tools == 1) {
message.setText(tr(QString("Deactivate Tools")));
message.adjustSize () ;
message.exec();
sfactivate->toggle();
return ;
}
if(fourdimshapes == 1 )
{
message.setText(tr(QString("Deactivate 4D shapes")));
message.adjustSize () ;
message.exec();
cylindrical->toggle();
return ;
}
if(implicite_fct == 1 )
{
message.setText(tr(QString("Deactivate Implicit Function")));
message.adjustSize () ;
message.exec();
cylindrical->toggle();
return ;
}
if(spheric_fct == 1 )
{
message.setText(tr(QString("Deactivate Spheric Function")));
message.adjustSize () ;
message.exec();
cylindrical->toggle();
return ;
}
// Deactivate condition
if(activate_cd == 1) {
activ_cond->toggle();
condition->setEnabled(FALSE);
inverse_condt->setEnabled(FALSE);
connectWidget2->objet->there_is_condition *= -1;
activate_cd = -1;
}
cylindric_fct *= -1;
if(cylindric_fct == 1) {
connectWidget2->objet->cylindricaldef = 1;
cylindreBox->setEnabled(TRUE);
inverse_condt->setEnabled(FALSE);
page1->setEnabled(FALSE);
page2->setEnabled(FALSE);
perform_cylindre();
}
else {
connectWidget2->objet->cylindricaldef = -1;
cylindreBox->setEnabled(FALSE);
inverse_condt->setEnabled(TRUE);
page1->setEnabled(TRUE);
page2->setEnabled(TRUE);
}
}
//====================================
void k3dsurface::perform_cylindre()
{ double vals=0;//[1] = {0};
QMessageBox message ;
FunctionParser f1, fp, fp2;
fp.AddConstant("pi", 3.14159265);
int ret;
ret = fp2.Parse(puissance_c_val->text(), "youpi");
if(fmod(fp2.Eval(&vals), 2) == 0) {
message.setText(tr("n mod 2 = 0 !!!!"));
message.adjustSize () ;
message.exec();
return ;
};
ret = fp.Parse(fctdefc->text(), "u,z,t");
if(ret >= 0)
{
message.setText(tr(QString("Implicit equation : F(u,z,t)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
connectWidget2->objet->cylindricaldef = 1;
connectWidget2->objet->cylindrical_expression = fctdefc->text();
connectWidget2->objet->coefficient_n = puissance_c_val->text();
connectWidget2->objet->inf_u = umin_3_2_2_2->text();
connectWidget2->objet->sup_u = umax_3_2_2_2->text();
connectWidget2->objet->inf_v = vmin_3_2_2_2->text();
connectWidget2->objet->sup_v = vmax_3_2_2_2->text();
//Process the new surface :
ParametricSurfaceProcess();
}
//====================================
void k3dsurface::cylindre_fct_changed( const QString & choix )
{
if(choix == QString("Star_1")) {
puissance_c_val->setText("1") ;
fctdefc->setText("(1-0.25*z*z)*(1+0.5*sin(1.5*pi*z) +0.3*cos(5*u))") ;
umin_3_2_2_2->setText("-pi") ;
umax_3_2_2_2->setText("pi") ;
vmin_3_2_2_2->setText("-2") ;
vmax_3_2_2_2->setText("2") ;
perform_cylindre(); // process the new surface
return;
}
if(choix == QString("Cup")) {
puissance_c_val->setText("1") ;
fctdefc->setText("sin(z*pi)*sin(z*pi) +cos(z*pi+0.9)");
umin_3_2_2_2->setText("-pi") ;
umax_3_2_2_2->setText("pi") ;
vmin_3_2_2_2->setText("0.08") ;
vmax_3_2_2_2->setText("0.71") ;
perform_cylindre(); // process the new surface
return;
}
if(choix == QString("Star_2")) {
puissance_c_val->setText("1") ;
fctdefc->setText("sin(z^2)*(1+0.5*sin(1.5*pi*z) +0.3*cos(5*u))") ;
umin_3_2_2_2->setText("-pi") ;
umax_3_2_2_2->setText("pi") ;
vmin_3_2_2_2->setText("0") ;
vmax_3_2_2_2->setText("1.773") ;
perform_cylindre(); // process the new surface
return;
}
if(choix == QString("Height")) {
puissance_c_val->setText("1") ;
fctdefc->setText("sin(sin(z*pi))") ;
umin_3_2_2_2->setText("-pi") ;
umax_3_2_2_2->setText("pi") ;
vmin_3_2_2_2->setText("-1") ;
vmax_3_2_2_2->setText("1") ;
perform_cylindre(); // process the new surface
return;
}
}
//====================================
void k3dsurface::spheric_Fct_activated(){
QMessageBox message ;
if(activate_tools == 1) {
message.setText(tr(QString("Deactivate Tools")));
message.adjustSize () ;
message.exec();
sfactivate->toggle();
return ;
}
if(fourdimshapes == 1 )
{
message.setText(tr(QString("Deactivate 4D shapes")));
message.adjustSize () ;
message.exec();
fct_spherical->toggle();
return ;
}
if(implicite_fct == 1 )
{
message.setText(tr(QString("Deactivate Implicit Function")));
message.adjustSize () ;
message.exec();
fct_spherical->toggle();
return ;
}
if(cylindric_fct == 1 )
{
message.setText(tr(QString("Deactivate Cylindric Function")));
message.adjustSize () ;
message.exec();
fct_spherical->toggle();
return ;
}
// Deactivate condition
if(activate_cd == 1) {
activ_cond->toggle();
condition->setEnabled(FALSE);
inverse_condt->setEnabled(FALSE);
connectWidget2->objet->there_is_condition *= -1;
activate_cd = -1;
}
spheric_fct *= -1;
if(spheric_fct == 1) {
connectWidget2->objet->sphericaldef = 1;
groupBox22->setEnabled(TRUE);
groupBox22->setEnabled(TRUE);
inverse_condt->setEnabled(FALSE);
page1->setEnabled(FALSE);
page2->setEnabled(FALSE);
/*
umin_3_2_2->setText("-pi/2");
umax_3_2_2->setText("pi/2");
vmin_3_2_2->setText("-pi");
vmax_3_2_2->setText("pi");
*/
perform_sphere();
}
else {
connectWidget2->objet->sphericaldef = -1;
groupBox22->setEnabled(FALSE);
inverse_condt->setEnabled(TRUE);
page1->setEnabled(TRUE);
page2->setEnabled(TRUE);
}
}
//====================================
void k3dsurface::perform_sphere()
{ double vals=0;//[1] = {0};
QMessageBox message ;
FunctionParser f1, fp, fp2;
fp.AddConstant("pi", 3.14159265);
int ret;
ret = fp2.Parse(puissance_r_val->text(), "youpi");
if(fmod(fp2.Eval(&vals), 2) == 0) {
message.setText(tr("n mod 2 = 0 !!!!"));
message.adjustSize () ;
message.exec();
return ;
};
ret = fp.Parse(fctdefr->text(), "u,v,t");
if(ret >= 0)
{
message.setText(tr(QString("Implicit equation : f(u,v,t)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
connectWidget2->objet->sphericaldef = 1;
connectWidget2->objet->spherical_expression = fctdefr->text();
connectWidget2->objet->coefficient_n = puissance_r_val->text();
connectWidget2->objet->inf_u = umin_3_2_2->text();
connectWidget2->objet->sup_u = umax_3_2_2->text();
connectWidget2->objet->inf_v = vmin_3_2_2->text();
connectWidget2->objet->sup_v = vmax_3_2_2->text();
//Process the new surface :
ParametricSurfaceProcess();
}
//====================================
void k3dsurface::explicit_Fct_activated(){
QMessageBox message ;
if(activate_tools == 1) {
message.setText(tr(QString("Deactivate Tools")));
message.adjustSize () ;
message.exec();
sfactivate->toggle();
return ;
}
if(fourdimshapes == 1 )
{
message.setText(tr(QString("Deactivate 4D shapes")));
message.adjustSize () ;
message.exec();
fct_explicit->toggle();
return ;
}
if(cylindric_fct == 1 )
{
message.setText(tr(QString("Deactivate Cylindric Function")));
message.adjustSize () ;
message.exec();
fct_explicit->toggle();
return ;
}
if(spheric_fct == 1 )
{
message.setText(tr(QString("Deactivate Spheric Function")));
message.adjustSize () ;
message.exec();
fct_explicit->toggle();
return ;
}
// Deactivate condition
if(activate_cd == 1) {
activ_cond->toggle();
condition->setEnabled(FALSE);
inverse_condt->setEnabled(FALSE);
connectWidget2->objet->there_is_condition *= -1;
activate_cd = -1;
}
implicite_fct *= -1;
if(implicite_fct == 1) {
connectWidget2->objet->implicitdef = 1;
parametric_box->setEnabled(TRUE);
inverse_condt->setEnabled(FALSE);
//fourdims_box->setEnabled(FALSE);
page1->setEnabled(FALSE);
page2->setEnabled(FALSE);
umin_3_2->setText("-pi");
umax_3_2->setText("pi");
vmin_3_2->setText("-pi");
vmax_3_2->setText("pi");
perform2();
}
else {
connectWidget2->objet->implicitdef = -1;
parametric_box->setEnabled(FALSE);
inverse_condt->setEnabled(TRUE);
//fourdims_box->setEnabled(TRUE);
page1->setEnabled(TRUE);
page2->setEnabled(TRUE);
}
}
//====================================
void k3dsurface::supershape_Fct_activated(){
QMessageBox message ;
if(activate_tools == 1) {
message.setText(tr(QString("Deactivate Tools")));
message.adjustSize () ;
message.exec();
sfactivate->toggle();
return ;
}
if(fivedimshapes == 1 )
{
message.setText(tr(QString("Deactivate ND shapes")));
message.adjustSize () ;
message.exec();
sfactivate->toggle();
return ;
}
if(fourdimshapes == 1 )
{
message.setText(tr(QString("Deactivate 4D shapes")));
message.adjustSize () ;
message.exec();
sfactivate->toggle();
return ;
}
if(cylindric_fct == 1 )
{
message.setText(tr(QString("Deactivate Cylindric Function")));
message.adjustSize () ;
message.exec();
sfactivate->toggle();
return ;
}
if(spheric_fct == 1 )
{
message.setText(tr(QString("Deactivate Spheric Function")));
message.adjustSize () ;
message.exec();
sfactivate->toggle();
return ;
}
if(implicite_fct == 1 )
{
message.setText(tr(QString("Deactivate Implicit Function")));
message.adjustSize () ;
message.exec();
sfactivate->toggle();
return ;
}
/// Set the right Window for drawing :
tabsurf->setCurrentPage(0);
activate_supershape *= -1;
if(activate_supershape == 1) {
connectWidget2->objet->supershape = 1;
//sftoolpage->setEnabled(TRUE);
sfgroupBox->setEnabled(TRUE);
toolBox2->setEnabled(FALSE);
inverse_condt->setEnabled(FALSE);
perform_supershape();
}
else {
connectWidget2->objet->supershape = -1;
//sftoolpage->setEnabled(FALSE);
sfgroupBox->setEnabled(FALSE);
toolBox2->setEnabled(TRUE);
inverse_condt->setEnabled(TRUE);
}
}
//====================================
void k3dsurface::Fourdim_Shapes(){
QMessageBox message ;
if(activate_tools == 1) {
message.setText(tr(QString("Deactivate Tools")));
message.adjustSize () ;
message.exec();
sfactivate->toggle();
return ;
}
if(implicite_fct == 1 )
{
message.setText(tr(QString("Deactivate Implicite function Z^n = F(x,y,t)")));
message.adjustSize () ;
message.exec();
activate_fourdim->toggle();
return ;
}
if(spheric_fct == 1 )
{
message.setText(tr(QString("Deactivate Spheric function ")));
message.adjustSize () ;
message.exec();
activate_fourdim->toggle();
return ;
}
if(cylindric_fct == 1 )
{
message.setText(tr(QString("Deactivate Cylindric function ")));
message.adjustSize () ;
message.exec();
activate_fourdim->toggle();
return ;
}
// Deactivate condition
if(activate_cd == 1) {
activ_cond->toggle();
condition->setEnabled(FALSE);
inverse_condt->setEnabled(FALSE);
connectWidget2->objet->there_is_condition *= -1;
activate_cd = -1;
}
fourdimshapes *= -1;
if( fourdimshapes == 1) {
connectWidget2->objet->fourdimshapes = 1;
fourdims_box->setEnabled(TRUE);
rotational4d->setEnabled(TRUE);
inverse_condt->setEnabled(FALSE);
//parametric_box->setEnabled(FALSE);
page1->setEnabled(FALSE);
page2->setEnabled(FALSE);
perform2();
}
else {
connectWidget2->objet->fourdimshapes = -1;
fourdims_box->setEnabled(FALSE);
rotational4d->setEnabled(FALSE);
inverse_condt->setEnabled(TRUE);
//parametric_box->setEnabled(TRUE);
page1->setEnabled(TRUE);
page2->setEnabled(TRUE);
}
}
//====================================
void k3dsurface::Fivedim_Shapes(){
QMessageBox message;
if(activate_tools == 1) {
message.setText(tr(QString("Deactivate Tools")));
message.adjustSize () ;
message.exec();
sfactivate->toggle();
return ;
}
if(connectWidget2->anim_ok == 1 ||
connectWidget2->morph_ok == 1 ||
connectWidget2->anim4_ok == 1) {
message.setText(tr(QString("Deactivate 3D/4D Rotation/Morph")));
message.adjustSize () ;
message.exec();
activate5d->toggle();
return ;
}
if( connectWidget2->anim5_ok == 1) {
message.setText(tr(QString("Deactivate 5D Rotation")));
message.adjustSize () ;
message.exec();
activate5d->toggle();
return ;
}
if(activate_supershape == 1 )
{
message.setText(tr(QString("Deactivate Hall")));
message.adjustSize () ;
message.exec();
activate5d->toggle();
return ;
}
if(fourdimshapes == 1 )
{
message.setText(tr(QString("Deactivate 4D shapes")));
message.adjustSize () ;
message.exec();
activate5d->toggle();
return ;
}
if(implicite_fct == 1 )
{
message.setText(tr(QString("Deactivate Implicit Function")));
message.adjustSize () ;
message.exec();
activate5d->toggle();
return ;
}
if(spheric_fct == 1 )
{
message.setText(tr(QString("Deactivate Spheric Function")));
message.adjustSize () ;
message.exec();
activate5d->toggle();
return ;
}
if(cylindric_fct == 1 )
{
message.setText(tr(QString("Deactivate Cylindric Function")));
message.adjustSize () ;
message.exec();
activate5d->toggle();
return ;
}
// Set the right window for drawing:
tabsurf->setCurrentPage(0);
if(paramwidgetstack == 1) glboxclicked();
// Deactivate condition
if(activate_cd == 1) {
activ_cond->toggle();
condition->setEnabled(FALSE);
inverse_condt->setEnabled(FALSE);
connectWidget2->objet->there_is_condition *= -1;
activate_cd = -1;
}
fivedimshapes *= -1;
if( fivedimshapes == 1) {
connectWidget2->objet->fivedimshapes = 1;
//sometimes I'm stuck with 4D!!! Must be changed
connectWidget2->objet->fourdimshapes = fourdimshapes;
fivedim_frame->setEnabled(TRUE);
rotational5d->setEnabled(TRUE);
toolBox2->setEnabled(FALSE);
groupBox15->setEnabled(FALSE);
inverse_condt->setEnabled(FALSE);
perform_fivedim();
}
else {
connectWidget2->objet->fivedimshapes = -1;
//sometimes I'm stuck with 4D!!! Must be changed
if(connectWidget2->objet->sixdimshapes == 1) {
//connectWidget2->objet->fivedimshapes = -1;
sixdimactivate->toggle();
sixdimshape_activate();
inverse_condt->setEnabled(TRUE);
};
connectWidget2->objet->fourdimshapes = fourdimshapes;
fivedim_frame->setEnabled(FALSE);
rotational5d->setEnabled(FALSE);
toolBox2->setEnabled(TRUE);
groupBox15->setEnabled(TRUE);
}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++//
//++++++++++++++++++++++++++++++++++++++++++++++++++++//
//++++++++++++++++++++++++++++++++++++++++++++++++++++//
//++++++++++++++++++++++++++++++++++++++++++++++++++++//
//++++++++++++++++++++++++++++++++++++++++++++++++++++//
//====================================
//static int ToolActivatedpage = 1; //Parametric == 1
void k3dsurface::activatetools(){
QMessageBox message;
if(connectWidget2->anim_ok == 1 ||
connectWidget2->morph_ok == 1 ||
connectWidget2->anim4_ok == 1) {
message.setText(tr(QString("Deactivate 3D/4D Rotation/Morph")));
message.adjustSize () ;
message.exec();
toolcheckBox->toggle();
return ;
}
if( connectWidget2->anim5_ok == 1) {
message.setText(tr(QString("Deactivate 5D Rotation")));
message.adjustSize () ;
message.exec();
toolcheckBox->toggle();
return ;
}
if(activate_supershape == 1 )
{
message.setText(tr(QString("Deactivate Hall")));
message.adjustSize () ;
message.exec();
toolcheckBox->toggle();
return ;
}
if(fourdimshapes == 1 )
{
message.setText(tr(QString("Deactivate 4D shapes")));
message.adjustSize () ;
message.exec();
toolcheckBox->toggle();
return ;
}
if(implicite_fct == 1 )
{
message.setText(tr(QString("Deactivate Implicit Function")));
message.adjustSize () ;
message.exec();
toolcheckBox->toggle();
return ;
}
if(spheric_fct == 1 )
{
message.setText(tr(QString("Deactivate Spheric Function")));
message.adjustSize () ;
message.exec();
toolcheckBox->toggle();
return ;
}
if(cylindric_fct == 1 )
{
message.setText(tr(QString("Deactivate Cylindric Function")));
message.adjustSize () ;
message.exec();
toolcheckBox->toggle();
return ;
}
if( fivedimshapes == 1 )
{
message.setText(tr(QString("Deactivate ND")));
message.adjustSize () ;
message.exec();
toolcheckBox->toggle();
return ;
}
int current_pag = tabWidget7->currentPageIndex();
if(current_pag == 0) { tabsurf->setCurrentPage(0);
// if(paramwidgetstack == 1) glboxclicked();
}
else { tabsurf->setCurrentPage(1);
// if(isowidgetstack == 1) isogl_clicked();
}
// Deactivate condition
if(activate_cd == 1) {
activ_cond->toggle();
condition->setEnabled(FALSE);
inverse_condt->setEnabled(FALSE);
connectWidget2->objet->there_is_condition *= -1;
activate_cd = -1;
}
activate_tools *= -1;
if(activate_tools == 1) {
grouptools->setEnabled(TRUE);
groupBox41->setEnabled(TRUE);
// deformerstab->setEnabled(TRUE);
//toolBox4->setEnabled(TRUE);
toolBox2->setEnabled(FALSE);
//groupBox15->setEnabled(FALSE);
inverse_condt->setEnabled(FALSE);
connectWidget2->objet->two_system = -1; //just in case...
perform_tools();
//(connectWidget2->objet->Tre2_save) * = (connectWidget2->objet->Tre2) *
}
else {
grouptools->setEnabled(FALSE);
groupBox41->setEnabled(FALSE);
inverse_condt->setEnabled(TRUE);
toolBox2->setEnabled(TRUE);
//groupBox15->setEnabled(TRUE);
// deformerstab->setEnabled(FALSE);
// toolBox4->setEnabled(FALSE);
}
}
//====================================
void k3dsurface::perform_tools()
{
FunctionParser fp,f1;
QMessageBox message ;
fp.AddConstant("pi", 3.14159265);
int ret;
/*
if(connectWidget2->objet->DefineNewFct ==1)
{
ret = fp.Parse(fctdef->text(), "u,v,t,x,y");
if(ret >= 0)
{
message.setText(tr(QString("k(u,v,t,x,y)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
f1.Parse(fctdef->text(), "u,v,t");
fp.AddFunction("k", f1);
}
*/
ret = fp.Parse(xtool->text(), "u,v,t");
if(ret >= 0)
{
message.setText(tr(QString("X=g(u,v)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(ytool->text(), "u,v,t");
if(ret >= 0)
{
message.setText(tr(QString("Y=g(u,v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(ztool->text(), "u,v,t");
if(ret >= 0)
{
message.setText(tr(QString("Z=h(u,v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
connectWidget2->objet->expression_X =
connectWidget2->objet->expression_X_save =
xtool->text();
connectWidget2->objet->expression_Y =
connectWidget2->objet->expression_Y_save =
ytool->text();
connectWidget2->objet->expression_Z =
connectWidget2->objet->expression_Z_save =
ztool->text();
connectWidget2->objet->inf_u = umin_tools->text();
connectWidget2->objet->sup_u = umax_tools->text();
connectWidget2->objet->inf_v = vmin_tools->text();
connectWidget2->objet->sup_v = vmax_tools->text();
/*
// process the new surface
connectWidget2->valueChanged();
*/
// process the new surface
ParametricSurfaceProcess();
connectWidget2->objet->MINX_save = connectWidget2->objet->MINX_tmp;
connectWidget2->objet->DIFX_save = connectWidget2->objet->DIFX_tmp;
connectWidget2->objet->MINY_save = connectWidget2->objet->MINY_tmp;
connectWidget2->objet->DIFY_save = connectWidget2->objet->DIFY_tmp;
connectWidget2->objet->MINZ_save = connectWidget2->objet->MINZ_tmp;
connectWidget2->objet->DIFZ_save = connectWidget2->objet->DIFZ_tmp;
//initialise the controls widgets
scalexvalue->setValue(10) ;
scaleyvalue->setValue(10) ;
scalezvalue->setValue(10) ;
scrollBar81->setValue(0) ;
scrollBar20->setValue(10) ;
scrollBar81_2->setValue(0) ;
scrollBar20_2->setValue(10) ;
scrollBar81_3->setValue(0) ;
scrollBar20_3->setValue(10) ;
connectWidget2->oldcoeff_rayonz = 10;
connectWidget2->oldnb_twistez = 0;
connectWidget2->oldcoeff_rayony = 10;
connectWidget2->oldnb_twistey = 0;
connectWidget2->oldcoeff_rayonx = 10;
connectWidget2->oldnb_twistex = 0;
connectWidget2->objet->initialisecoeffscale();
}
//========================================//
void k3dsurface::reset_changes()
{
perform_tools();
perform_tools(); //!!!! Must be change
}
//========================================//
void k3dsurface::save_changes()
{
/*
connectWidget2->objet->expression_X_save = connectWidget2->objet->expression_X;
connectWidget2->objet->expression_Y_save = connectWidget2->objet->expression_Y;
connectWidget2->objet->expression_Z_save = connectWidget2->objet->expression_Z;
xtool->setText(connectWidget2->objet->expression_X_save);
ytool->setText(connectWidget2->objet->expression_Y_save);
ztool->setText(connectWidget2->objet->expression_Z_save);
//initialise the controls widgets
scalexvalue->setValue(10) ;
scaleyvalue->setValue(10) ;
scalezvalue->setValue(10) ;
scrollBar81->setValue(0) ;
scrollBar20->setValue(10) ;
// process the new surface
connectWidget2->valueChanged();
connectWidget2->objet->MINX_save = connectWidget2->objet->MINX_tmp;
connectWidget2->objet->DIFX_save = connectWidget2->objet->DIFX_tmp;
connectWidget2->objet->MINY_save = connectWidget2->objet->MINY_tmp;
connectWidget2->objet->DIFY_save = connectWidget2->objet->DIFY_tmp;
connectWidget2->objet->MINZ_save = connectWidget2->objet->MINZ_tmp;
connectWidget2->objet->DIFZ_save = connectWidget2->objet->DIFZ_tmp;
connectWidget2->objet->initialisecoeffscale();
*/
xtool->setText(connectWidget2->objet->expression_X);
ytool->setText(connectWidget2->objet->expression_Y);
ztool->setText(connectWidget2->objet->expression_Z);
perform_tools();
perform_tools(); //!!!! Must be change
}
//========================================//
void k3dsurface::save_isochanges()
{
implicitfunct_2->setText(isoWidget->IsoObjet->ImplicitFunction);
minxlimit_2->setText(isoWidget->IsoObjet->XlimitInf);
minylimit_2->setText(isoWidget->IsoObjet->YlimitInf);
minzlimit_2->setText(isoWidget->IsoObjet->ZlimitInf);
maxxlimit_2->setText(isoWidget->IsoObjet->XlimitSup);
maxylimit_2->setText(isoWidget->IsoObjet->YlimitSup);
maxzlimit_2->setText(isoWidget->IsoObjet->ZlimitSup);
///
isoWidget->IsoObjet->ImplicitFunction_save = isoWidget->IsoObjet->ImplicitFunction;
isoWidget->IsoObjet->XlimitInf_save = isoWidget->IsoObjet->XlimitInf;
isoWidget->IsoObjet->YlimitInf_save = isoWidget->IsoObjet->YlimitInf;
isoWidget->IsoObjet->ZlimitInf_save = isoWidget->IsoObjet->ZlimitInf;
isoWidget->IsoObjet->XlimitSup_save = isoWidget->IsoObjet->XlimitSup;
isoWidget->IsoObjet->YlimitSup_save = isoWidget->IsoObjet->YlimitSup;
isoWidget->IsoObjet->ZlimitSup_save = isoWidget->IsoObjet->ZlimitSup;
/// Scale Controls :
scalexvalue_2->setValue(10) ;
scaleyvalue_2->setValue(10) ;
scalezvalue_2->setValue(10) ;
/// Twist controls :
//scrollBar20_3_2->setValue(10) ;
//scrollBar20_2_2->setValue(10) ;
//scrollBar20_4->setValue(10) ;
scrollBar81_3_2->setValue(0) ;
scrollBar81_2_2->setValue(0) ;
scrollBar81_4->setValue(0) ;
isoWidget->initcontrols();
}
//==========================================
void k3dsurface::reset_isochanges()
{
isoWidget->IsoObjet->ImplicitFunction = isoWidget->IsoObjet->ImplicitFunction_save;
isoWidget->IsoObjet->XlimitInf = isoWidget->IsoObjet->XlimitInf_save;
isoWidget->IsoObjet->YlimitInf = isoWidget->IsoObjet->YlimitInf_save;
isoWidget->IsoObjet->ZlimitInf = isoWidget->IsoObjet->ZlimitInf_save;
isoWidget->IsoObjet->XlimitSup = isoWidget->IsoObjet->XlimitSup_save;
isoWidget->IsoObjet->YlimitSup = isoWidget->IsoObjet->YlimitSup_save;
isoWidget->IsoObjet->ZlimitSup = isoWidget->IsoObjet->ZlimitSup_save;
/// Scale Controls :
scalexvalue_2->setValue(10) ;
scaleyvalue_2->setValue(10) ;
scalezvalue_2->setValue(10) ;
/// Twist controls :
//scrollBar20_3_2->setValue(10) ;
//scrollBar20_2_2->setValue(10) ;
//scrollBar20_4->setValue(10) ;
scrollBar81_3_2->setValue(0) ;
scrollBar81_2_2->setValue(0) ;
scrollBar81_4->setValue(0) ;
//isoWidget->IsoMorphCompute();
ProcessNewIsoSurface( );
}
//====================================
void k3dsurface::ImplicitFunChanged( const QString & choix )
{
RootObjet.LookForIsosurfaceEquation(choix);
implicitfunct->setText(RootObjet.Isosurface[0]);
minxlimit->setText(RootObjet.Isosurface[1]);
minylimit->setText(RootObjet.Isosurface[2]);
minzlimit->setText(RootObjet.Isosurface[3]);
maxxlimit->setText(RootObjet.Isosurface[4]);
maxylimit->setText(RootObjet.Isosurface[5]);
maxzlimit->setText(RootObjet.Isosurface[6]);
///Process New Surface :
PerformNewImplicitFunct();
}
//====================================
void k3dsurface::ToolsImplicitFunChanged( const QString & choix )
{
RootObjet.LookForIsosurfaceEquation(choix);
implicitfunct_2->setText(RootObjet.Isosurface[0]);
minxlimit_2->setText(RootObjet.Isosurface[1]);
minylimit_2->setText(RootObjet.Isosurface[2]);
minzlimit_2->setText(RootObjet.Isosurface[3]);
maxxlimit_2->setText(RootObjet.Isosurface[4]);
maxylimit_2->setText(RootObjet.Isosurface[5]);
maxzlimit_2->setText(RootObjet.Isosurface[6]);
PerformNewToolsImplicitFunct_2();
}
//====================================
void k3dsurface::PerformNewToolsImplicitFunct()
{
FunctionParser fp,f1;
QMessageBox message ;
fp.AddConstant("pi", 3.14159265);
int ret;
ret = fp.Parse(implicitfunct_2->text(), "x,y,z,t");
if(ret >= 0)
{
message.setText(tr(QString("F(x,y,z) = --> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
///Activaste IsoDrawing Area...
tabsurf->setCurrentPage(1);
isoWidget->IsoObjet->ImplicitFunction = implicitfunct_2->text();
isoWidget->IsoObjet->XlimitSup = maxxlimit_2->text();
isoWidget->IsoObjet->YlimitSup = maxylimit_2->text();
isoWidget->IsoObjet->ZlimitSup = maxzlimit_2->text();
isoWidget->IsoObjet->XlimitInf = minxlimit_2->text();
isoWidget->IsoObjet->YlimitInf = minylimit_2->text();
isoWidget->IsoObjet->ZlimitInf = minzlimit_2->text();
/*
// process the new curve
isoWidget->IsoMorphCompute();
*/
///Process New Surface :
PerformNewImplicitFunct();
}
//====================================
void k3dsurface::PerformNewToolsImplicitFunct_2()
{
FunctionParser fp,f1;
QMessageBox message ;
fp.AddConstant("pi", 3.14159265);
int ret;
ret = fp.Parse(implicitfunct_2->text(), "x,y,z,t");
if(ret >= 0)
{
message.setText(tr(QString("F(x,y,z) = --> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
///Activaste IsoDrawing Area...
tabsurf->setCurrentPage(1);
isoWidget->IsoObjet->ImplicitFunction = implicitfunct_2->text();
isoWidget->IsoObjet->XlimitSup = maxxlimit_2->text();
isoWidget->IsoObjet->YlimitSup = maxylimit_2->text();
isoWidget->IsoObjet->ZlimitSup = maxzlimit_2->text();
isoWidget->IsoObjet->XlimitInf = minxlimit_2->text();
isoWidget->IsoObjet->YlimitInf = minylimit_2->text();
isoWidget->IsoObjet->ZlimitInf = minzlimit_2->text();
///Save theses equations :
isoWidget->IsoObjet->ImplicitFunction_save = implicitfunct_2->text();
isoWidget->IsoObjet->XlimitSup_save = maxxlimit_2->text();
isoWidget->IsoObjet->YlimitSup_save = maxylimit_2->text();
isoWidget->IsoObjet->ZlimitSup_save = maxzlimit_2->text();
isoWidget->IsoObjet->XlimitInf_save = minxlimit_2->text();
isoWidget->IsoObjet->YlimitInf_save = minylimit_2->text();
isoWidget->IsoObjet->ZlimitInf_save = minzlimit_2->text();
///Update the Tools controls
/// Scale Controls :
scalexvalue_2->setValue(10) ;
scaleyvalue_2->setValue(10) ;
scalezvalue_2->setValue(10) ;
/// Twist controls :
scrollBar81_3_2->setValue(0) ;
scrollBar81_2_2->setValue(0) ;
scrollBar81_4->setValue(0) ;
// process the new surface
ProcessNewIsoSurface( );
}
int startcompute = -1;
//====================================
void k3dsurface::PerformNewImplicitFunct()
{
FunctionParser fp;
QMessageBox message ;
QString resultequation;
int ret;
resultequation = RootObjet.ChangeScript(implicitfunct->text());
//resultequation = implicitfunct->text();
//if(implicit_param == 1) {
ret = isoWidget->IsoObjet->Parse(resultequation);
if(ret >= 0)
{
message.setText(tr(QString("F(x,y,z) = "+resultequation+"--> At col:")+
QString::number(ret)+ QString("--> \n")+ isoWidget->IsoObjet->ImplicitFunctionParser.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
if(activate_isocd ==1 ) {
ret = fp.Parse(Isocondition->text(), "x,y,z,t");
if(ret >= 0)
{
message.setText(tr(QString("CND(x,y,z,t) = --> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
else {
if(inverse_isocondition == 1)
isoWidget->IsoObjet->IsoCondition = QString("("+Isocondition->text()+") = 0");
else isoWidget->IsoObjet->IsoCondition = Isocondition->text();
}
}
/// Acivate the Iso Drawing Area...
// tabsurf->setCurrentPage(1);
isoWidget->IsoObjet->ImplicitFunction = resultequation;
isoWidget->IsoObjet->XlimitSup = maxxlimit->text();
isoWidget->IsoObjet->YlimitSup = maxylimit->text();
isoWidget->IsoObjet->ZlimitSup = maxzlimit->text();
isoWidget->IsoObjet->XlimitInf = minxlimit->text();
isoWidget->IsoObjet->YlimitInf = minylimit->text();
isoWidget->IsoObjet->ZlimitInf = minzlimit->text();
// process the new surface
ProcessNewIsoSurface( );
}
//====================================
void k3dsurface::ProcessNewIsoSurface( )
{
// process the new surface
int current_pag = tabsurf->currentPageIndex();
if(current_pag != 1) tabsurf->setCurrentPage(1);
if(isowidgetstack == 1) {
isoWidget->IsoObjet->SpecialMorph_2(
IsoGlWidget->LocalScene.ArrayNorVer_localPt,
IsoGlWidget->PolyIndices_local,
IsoGlWidget->NbPolygnNbVertex,
IsoGlWidget->TypeIsoSurfaceTriangleListeCND,
&(IsoGlWidget->VertexNumber),
1,
IsoGlWidget->LocalScene.PolyIndices_localPtMin,
&(IsoGlWidget->LocalScene.NbPolygnNbVertexPtMin));
IsoGlWidget->initializeGL();
IsoGlWidget->PolyNumber = 3*isoWidget->IsoObjet->NbTriangleIsoSurface;
IsoGlWidget->LocalScene.typedrawing = 1;
IsoGlWidget->updateGL();
/// Make button available for another process:
//computeIso->setText("Compute");
//startcompute = -1;
}
else isoWidget->IsoMorphCompute();
}
//====================================
void k3dsurface::tools_extrude1_changed( const QString & choix )
{
if(choix == QString("Cosinus")) {
xtool_2_2->setText("cos(u)");
ytool_2_2->setText("u");
ztool_2_2->setText("1");
umin_2_2->setText("0") ;
umax_2_2->setText("2*pi") ;
}
if(choix == QString("Sinus")) {
xtool_2_2->setText("sin(u)");
ytool_2_2->setText("u");
ztool_2_2->setText("1");
umin_2_2->setText("0") ;
umax_2_2->setText("2*pi") ;
}
if(choix == QString("Helix")) {
xtool_2_2->setText("u*sin(u)");
ytool_2_2->setText("u*cos(u)");
ztool_2_2->setText("1");
umin_2_2->setText("0") ;
umax_2_2->setText("4*pi") ;
}
perform_extrude1_tools();
}
//====================================
void k3dsurface::perform_extrude1_tools()
{
FunctionParser fp,f1;
QMessageBox message ;
fp.AddConstant("pi", 3.14159265);
int ret;
ret = fp.Parse(xtool_2_2->text(), "u,t");
if(ret >= 0)
{
message.setText(tr(QString("X=f(u)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(ytool_2_2->text(), "u,t");
if(ret >= 0)
{
message.setText(tr(QString("Y=g(u)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(ztool_2_2->text(), "u,t");
if(ret >= 0)
{
message.setText(tr(QString("Z=h(u)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
connectWidget2->objet->expression_X = xtool_2_2->text();
connectWidget2->objet->expression_Y = ytool_2_2->text();
connectWidget2->objet->expression_Z = ztool_2_2->text();
connectWidget2->objet->inf_u = umin_2_2->text();
connectWidget2->objet->sup_u = umax_2_2->text();
connectWidget2->objet->inf_v = "0";
connectWidget2->objet->sup_v = "2*pi";
/*
// process the new curve
connectWidget2->valueChanged();
*/
// process the new surface
ParametricSurfaceProcess();
}
//====================================
void k3dsurface::tools_extrude2_changed( const QString & choix )
{
if(choix == QString("Cosinus")) {
xtool_2_3->setText("cos(v)");
ytool_2_3->setText("1");
ztool_2_3->setText("v");
umin_2_3->setText("0") ;
umax_2_3->setText("2*pi") ;
}
if(choix == QString("Sinus")) {
xtool_2_3->setText("sin(v)");
ytool_2_3->setText("1");
ztool_2_3->setText("v");
umin_2_3->setText("0") ;
umax_2_3->setText("2*pi") ;
}
if(choix == QString("Helix")) {
xtool_2_3->setText("v*sin(v)");
ytool_2_3->setText("1");
ztool_2_3->setText("v*cos(v)");
umin_2_3->setText("0") ;
umax_2_3->setText("4*pi") ;
}
perform_extrude2_tools();
}
//====================================
void k3dsurface::perform_extrude2_tools()
{
FunctionParser fp,f1;
QMessageBox message ;
fp.AddConstant("pi", 3.14159265);
int ret;
ret = fp.Parse(xtool_2_3->text(), "v,t");
if(ret >= 0)
{
message.setText(tr(QString("X=f(v)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(ytool_2_3->text(), "v,t");
if(ret >= 0)
{
message.setText(tr(QString("Y=g(v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(ztool_2_3->text(), "v,t");
if(ret >= 0)
{
message.setText(tr(QString("Z=h(v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
connectWidget2->objet->expression_X = xtool_2_3->text();
connectWidget2->objet->expression_Y = ytool_2_3->text();
connectWidget2->objet->expression_Z = ztool_2_3->text();
connectWidget2->objet->inf_u = "0";
connectWidget2->objet->sup_u = "2*pi";
connectWidget2->objet->inf_v = umin_2_3->text();
connectWidget2->objet->sup_v = umax_2_3->text();
/*
// process the new curve
connectWidget2->valueChanged();
*/
// process the new surface
ParametricSurfaceProcess();
}
//====================================
void k3dsurface::perform_3Dextrude_tools()
{
FunctionParser fp,f1;
QMessageBox message ;
fp.AddConstant("pi", 3.14159265);
int ret;
ret = fp.Parse(xtool_2_2->text(), "u,t");
if(ret >= 0)
{message.setText(tr(QString("X=f(u)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize ();
message.exec();
return ;
}
ret = fp.Parse(ytool_2_2->text(), "u,t");
if(ret >= 0)
{message.setText(tr(QString("Y=g(u)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(ztool_2_2->text(), "u,t");
if(ret >= 0)
{message.setText(tr(QString("Z=h(u)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(xtool_2_3->text(), "v,t");
if(ret >= 0)
{message.setText(tr(QString("X=f(v)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(ytool_2_3->text(), "v,t");
if(ret >= 0)
{message.setText(tr(QString("Y=g(v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(ztool_2_3->text(), "v,t");
if(ret >= 0)
{message.setText(tr(QString("Z=h(v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
connectWidget2->objet->expression_X = xtool_2_2->text()+" + "+xtool_2_3->text();
connectWidget2->objet->expression_Y = ytool_2_2->text()+" + "+ytool_2_3->text();
connectWidget2->objet->expression_Z = ztool_2_2->text()+" + "+ztool_2_3->text();
connectWidget2->objet->inf_u = umin_2_2->text();
connectWidget2->objet->sup_u = umax_2_2->text();
connectWidget2->objet->inf_v = umin_2_3->text();
connectWidget2->objet->sup_v = umax_2_3->text();
// Show equations
connectWidget2->objet->two_system = -1;
xtool->setText(connectWidget2->objet->expression_X);
ytool->setText(connectWidget2->objet->expression_Y);
ztool->setText(connectWidget2->objet->expression_Z);
umin_tools->setText(connectWidget2->objet->inf_u);
umax_tools->setText(connectWidget2->objet->sup_u);
vmin_tools->setText(connectWidget2->objet->inf_v);
vmax_tools->setText(connectWidget2->objet->sup_v);
perform_tools();
}
//====================================
void k3dsurface::tools_loft1_changed( const QString & choix )
{
if(choix == QString("Cosinus")) {
xtool_2_4->setText("cos(u)");
ytool_2_4->setText("u");
ztool_2_4->setText("1");
umin_2_4->setText("0") ;
umax_2_4->setText("2*pi") ;
}
if(choix == QString("Sinus")) {
xtool_2_4->setText("sin(u)");
ytool_2_4->setText("u");
ztool_2_4->setText("1");
umin_2_4->setText("0") ;
umax_2_4->setText("2*pi") ;
}
if(choix == QString("Helix")) {
xtool_2_4->setText("u*sin(u)");
ytool_2_4->setText("u*cos(u)");
ztool_2_4->setText("1");
umin_2_4->setText("0") ;
umax_2_4->setText("4*pi") ;
}
perform_loft1_tools();
}
//====================================
void k3dsurface::perform_loft1_tools()
{
FunctionParser fp,f1;
QMessageBox message ;
fp.AddConstant("pi", 3.14159265);
int ret;
ret = fp.Parse(xtool_2_4->text(), "u,t");
if(ret >= 0)
{
message.setText(tr(QString("X=f(u)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize();
message.exec();
return ;
}
ret = fp.Parse(ytool_2_4->text(), "u,t");
if(ret >= 0)
{
message.setText(tr(QString("Y=g(u)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(ztool_2_4->text(), "u,t");
if(ret >= 0)
{
message.setText(tr(QString("Z=h(u)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
connectWidget2->objet->expression_X = xtool_2_4->text();
connectWidget2->objet->expression_Y = ytool_2_4->text();
connectWidget2->objet->expression_Z = ztool_2_4->text();
connectWidget2->objet->inf_u = umin_2_4->text();
connectWidget2->objet->sup_u = umax_2_4->text();
connectWidget2->objet->inf_v = "0";
connectWidget2->objet->sup_v = "2*pi";
// process the new surface
ParametricSurfaceProcess();
}
//====================================
void k3dsurface::tools_loft2_changed( const QString & choix )
{
if(choix == QString("Cosinus")) {
xtool_2_5->setText("cos(v)");
ytool_2_5->setText("1");
ztool_2_5->setText("v");
umin_2_5->setText("0") ;
umax_2_5->setText("2*pi") ;
}
if(choix == QString("Sinus")) {
xtool_2_5->setText("sin(v)");
ytool_2_5->setText("1");
ztool_2_5->setText("v");
umin_2_5->setText("0") ;
umax_2_5->setText("2*pi") ;
}
if(choix == QString("Helix")) {
xtool_2_5->setText("v*sin(v)");
ytool_2_5->setText("1");
ztool_2_5->setText("v*cos(v)");
umin_2_5->setText("0") ;
umax_2_5->setText("4*pi") ;
}
perform_loft2_tools();
}
//====================================
void k3dsurface::perform_loft2_tools()
{
FunctionParser fp,f1;
QMessageBox message ;
fp.AddConstant("pi", 3.14159265);
int ret;
ret = fp.Parse(xtool_2_5->text(), "v,t");
if(ret >= 0)
{
message.setText(tr(QString("X=f(v)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(ytool_2_5->text(), "v,t");
if(ret >= 0)
{
message.setText(tr(QString("Y=g(v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(ztool_2_5->text(), "v,t");
if(ret >= 0)
{
message.setText(tr(QString("Z=h(v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize ();
message.exec();
return ;
}
connectWidget2->objet->expression_X = xtool_2_5->text();
connectWidget2->objet->expression_Y = ytool_2_5->text();
connectWidget2->objet->expression_Z = ztool_2_5->text();
connectWidget2->objet->inf_u = "0";
connectWidget2->objet->sup_u = "2*pi";
connectWidget2->objet->inf_v = umin_2_5->text();
connectWidget2->objet->sup_v = umax_2_5->text();
// process the new surface
ParametricSurfaceProcess();
}
//====================================
void k3dsurface::perform_3Dloft_tools()
{
FunctionParser fp,f1;
QMessageBox message ;
fp.AddConstant("pi", 3.14159265);
int ret;
ret = fp.Parse(xtool_2_4->text(), "u,t");
if(ret >= 0)
{message.setText(tr(QString("X=f(u)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(ytool_2_4->text(), "u,t");
if(ret >= 0)
{message.setText(tr(QString("Y=g(u)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(ztool_2_4->text(), "u,t");
if(ret >= 0)
{message.setText(tr(QString("Z=h(u)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(xtool_2_5->text(), "v,t");
if(ret >= 0)
{message.setText(tr(QString("X=f(v)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(ytool_2_5->text(), "v,t");
if(ret >= 0)
{message.setText(tr(QString("Y=g(v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(ztool_2_5->text(), "v,t");
if(ret >= 0)
{message.setText(tr(QString("Z=h(v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
QString alfa1 = "("+umax_2_5->text()+" - v)/("+
umax_2_5->text()+" - "+umin_2_5->text()+") * ";
QString alfa2 = "(u - "+umin_2_4->text()+")/("+
umax_2_4->text()+" - "+umin_2_4->text()+") * ";
connectWidget2->objet->expression_X =
alfa1+xtool_2_4->text()+" + "+alfa2+xtool_2_5->text();
connectWidget2->objet->expression_Y =
alfa1+ytool_2_4->text()+" + "+alfa2+ytool_2_5->text();
connectWidget2->objet->expression_Z =
alfa1+ztool_2_4->text()+" + "+alfa2+ztool_2_5->text();
connectWidget2->objet->inf_u = umin_2_4->text();
connectWidget2->objet->sup_u = umax_2_4->text();
connectWidget2->objet->inf_v = umin_2_5->text();
connectWidget2->objet->sup_v = umax_2_5->text();
// Show equations
connectWidget2->objet->two_system = -1;
xtool->setText(connectWidget2->objet->expression_X);
ytool->setText(connectWidget2->objet->expression_Y);
ztool->setText(connectWidget2->objet->expression_Z);
umin_tools->setText(connectWidget2->objet->inf_u);
umax_tools->setText(connectWidget2->objet->sup_u);
vmin_tools->setText(connectWidget2->objet->inf_v);
vmax_tools->setText(connectWidget2->objet->sup_v);
perform_tools();
}
//====================================
void k3dsurface::tools_curve_changed( const QString & choix )
{
if(choix == QString("Cosinus")) {
rotcurvex->setText("cos(u)");
rotcurvey->setText("u");
rotcurvez->setText("1");
umin_tools_2->setText("0") ;
umax_tools_2->setText("2*pi") ;
}
if(choix == QString("Sinus")) {
rotcurvex->setText("sin(u)");
rotcurvey->setText("u");
rotcurvez->setText("1");
umin_tools_2->setText("0") ;
umax_tools_2->setText("2*pi") ;
}
if(choix == QString("Helix")) {
rotcurvex->setText("u*sin(u)");
rotcurvey->setText("u*cos(u)");
rotcurvez->setText("1");
umin_tools_2->setText("0") ;
umax_tools_2->setText("4*pi") ;
}
perform_curve_tools();
}
//====================================
void k3dsurface::perform_curve_tools()
{
FunctionParser fp,f1;
QMessageBox message ;
fp.AddConstant("pi", 3.14159265);
int ret;
ret = fp.Parse(rotcurvex->text(), "u,t");
if(ret >= 0)
{
message.setText(tr(QString("X=f(u)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(rotcurvey->text(), "u,t");
if(ret >= 0)
{
message.setText(tr(QString("Y=g(u)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(rotcurvez->text(), "u,t");
if(ret >= 0)
{
message.setText(tr(QString("Z=h(u)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
connectWidget2->objet->expression_X = rotcurvex->text();
connectWidget2->objet->expression_Y = rotcurvey->text();
connectWidget2->objet->expression_Z = rotcurvez->text();
connectWidget2->objet->inf_u = umin_tools_2->text();
connectWidget2->objet->sup_u = umax_tools_2->text();
connectWidget2->objet->inf_v = "0";
connectWidget2->objet->sup_v = "2*pi";
/*
// process the new curve
connectWidget2->valueChanged();
*/
// process the new surface
ParametricSurfaceProcess();
}
//====================================
void k3dsurface::perform_3Dcurve_tools()
{
FunctionParser fp,f1;
QMessageBox message ;
fp.AddConstant("pi", 3.14159265);
int ret;
ret = fp.Parse(rotcurvex->text(), "u,t");
if(ret >= 0)
{message.setText(tr(QString("X=f(u)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(rotcurvey->text(), "u,t");
if(ret >= 0)
{message.setText(tr(QString("Y=g(u)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(rotcurvez->text(), "u,t");
if(ret >= 0)
{message.setText(tr(QString("Z=h(u)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
if(axechoice == 0) {
QString Axe_distance = "sqrt(("+rotcurvey->text()+
")^2 + ("+rotcurvez->text()+")^2)";
connectWidget2->objet->expression_X = rotcurvex->text();
connectWidget2->objet->expression_Y = Axe_distance+"*sin(v)";
connectWidget2->objet->expression_Z = Axe_distance+"*cos(v)";
}
else if(axechoice == 1) {
QString Axe_distance = "sqrt(("+rotcurvex->text()+
")^2 + ("+rotcurvez->text()+")^2)";
connectWidget2->objet->expression_X = Axe_distance+"*sin(v)";
connectWidget2->objet->expression_Y = rotcurvey->text();
connectWidget2->objet->expression_Z = Axe_distance+"*cos(v)";
}
else {
QString Axe_distance = "sqrt(("+rotcurvex->text()+
")^2 + ("+rotcurvey->text()+")^2)";
connectWidget2->objet->expression_X = Axe_distance+"*sin(v)";
connectWidget2->objet->expression_Y = Axe_distance+"*cos(v)";
connectWidget2->objet->expression_Z = rotcurvez->text();
}
connectWidget2->objet->inf_u = umin_tools_2->text();
connectWidget2->objet->sup_u = umax_tools_2->text();
connectWidget2->objet->inf_v = "0";
connectWidget2->objet->sup_v = "2*pi";
// process the new curve
//connectWidget2->valueChanged(); // was replaced by "perform_tools()"
// Show equations
connectWidget2->objet->two_system = -1;
xtool->setText(connectWidget2->objet->expression_X);
ytool->setText(connectWidget2->objet->expression_Y);
ztool->setText(connectWidget2->objet->expression_Z);
umin_tools->setText(connectWidget2->objet->inf_u);
umax_tools->setText(connectWidget2->objet->sup_u);
vmin_tools->setText(connectWidget2->objet->inf_v);
vmax_tools->setText(connectWidget2->objet->sup_v);
perform_tools();
}
//====================================
void k3dsurface::tools_changed( const QString & choix )
{
connectWidget2->objet->two_system = -1;
RootObjet.LookForParametricEquation(choix);
xtool->setText(RootObjet.Parametric[0]);
ytool->setText(RootObjet.Parametric[1]);
ztool->setText(RootObjet.Parametric[2]);
umin_tools->setText(RootObjet.Parametric[3]);
umax_tools->setText(RootObjet.Parametric[4]);
vmin_tools->setText(RootObjet.Parametric[5]);
vmax_tools->setText(RootObjet.Parametric[6]);
// process the new surface
perform_tools() ;
}
//====================================
void k3dsurface::perform_fivedim()
{
FunctionParser fp,f1;
QMessageBox message ;
fp.AddConstant("pi", 3.14159265);
int ret;
/*
if(connectWidget2->objet->DefineNewFct ==1)
{
ret = fp.Parse(fctdef->text(), "u,v,t,x,y");
if(ret >= 0)
{
message.setText(tr(QString("k(u,v,t,x,y)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
f1.Parse(fctdef->text(), "u,v,t");
fp.AddFunction("k", f1);
}
*/
ret = fp.Parse(xcft_5->text(), "u,v,t");
if(ret >= 0)
{
message.setText(tr(QString("X=g(u,v)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize();
message.exec();
return ;
}
ret = fp.Parse(ycft_5->text(), "u,v,t");
if(ret >= 0)
{
message.setText(tr(QString("Y=g(u,v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(zcft_5->text(), "u,v,t");
if(ret >= 0)
{
message.setText(tr(QString("Z=h(u,v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(wcft_5->text(), "u,v,t");
if(ret >= 0)
{
message.setText(tr(QString("W=h(u,v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(tcft_5->text(), "u,v,t");
if(ret >= 0)
{
message.setText(tr(QString("T=h(u,v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
//connectWidget2->objet->fivedimshapes = 1;
connectWidget2->objet->expression_X = ycft_5->text(); ///ToReverse Axes
connectWidget2->objet->expression_Y = xcft_5->text(); ///ToReverse Axes
connectWidget2->objet->expression_Z = zcft_5->text();
connectWidget2->objet->expression_W = wcft_5->text();
connectWidget2->objet->expression_T = tcft_5->text();
connectWidget2->objet->inf_u = umin_5->text();
connectWidget2->objet->sup_u = umax_5->text();
connectWidget2->objet->inf_v = vmin_5->text();
connectWidget2->objet->sup_v = vmax_5->text();
if(sixdimshapes == 1 ) connectWidget2->objet->expression_S = scft_5->text();
/// Set the right Window for drawing :
tabsurf->setCurrentPage(0);
if(paramwidgetstack == 1) glboxclicked();
//Process the new surface :
ParametricSurfaceProcess();
}
//====================================
void k3dsurface::FivedimShapes(){
}
//====================================
void k3dsurface::IconBox()
{
QMessageBox message ;
//message.setIconPixmap(QPixmap("agoujime.jpg"));
message.setText(tr(" K3DSurf 0.6 \
\nBy: Abderrahman Taha\
\n taha_ab@yahoo.fr "));
message.adjustSize () ;
message.exec();
}
//====================================
void k3dsurface::loadMesh()
{
editeur *ed = new editeur();
ed->load("Mesh.inc");
ed->show();
}
//====================================
void k3dsurface::loadVrml()
{
}
//====================================
//====================================
void k3dsurface::loadObj()
{
int i,cl, nb1,nb2,nb3,nb4;
Model3D * lien_objet;
//Iso3D *iso_objet;
int nb_ligne, nb_colone, coupure_ligne, coupure_colone;
//int nbisopt, nbisotriangle, index;
QString text1;
nb_ligne = connectWidget2->objet->nb_ligne ,
nb_colone = connectWidget2->objet->nb_colone,
coupure_ligne = connectWidget2->objet->coupure_ligne,
coupure_colone = connectWidget2->objet->coupure_col;
lien_objet = connectWidget2->objet;
connectWidget2->valueChanged(); // Not always necessery but for we don't generate .obj file all the time...
for(i=0;i<nb_ligne - coupure_ligne; i++)
for(cl=0; cl<nb_colone - coupure_colone; cl++)
text1 += "v "+QString::number(lien_objet->Tre[i*3][cl])+" \
"+QString::number(lien_objet->Tre[i*3+1][cl])+" \
"+QString::number(lien_objet->Tre[i*3+2][cl])+"\n" ;
// Begining to define faces:
for(i=0;i<nb_ligne -1 -coupure_ligne; i++)
for(cl=0; cl<nb_colone -1 -coupure_colone; cl++) {
nb1 = i*(nb_colone- coupure_colone)+ cl +1;
nb2 = (i+1)*(nb_colone- coupure_colone)+ cl +1;
nb3 = (i+1)*(nb_colone- coupure_colone)+ (cl+1) +1;
nb4 = i*(nb_colone- coupure_colone)+ (cl+1) +1;
if( objfile_triangle == 1){
text1 += "f "+QString::number(nb1)+" "+QString::number(nb2)+" "+QString::number(nb3)+"\n"; text1 += "f "+QString::number(nb3)+" "+QString::number(nb4)+" "+QString::number(nb1)+"\n";
}
else text1 += "f "+QString::number(nb1)+" "+QString::number(nb2)+" "+QString::number(nb3)+" "+QString::number(nb4)+"\n";
}
saveScript(text1, "test.obj");
editeur *ed = new editeur();
ed->load("test.obj");
ed->show();
}
//====================================
void k3dsurface::activate_tria_nas(){
tria_nas *= -1 ;
}
//====================================
void k3dsurface::loadNas()
{
}
//====================================
void k3dsurface::saveScript(QString &text, QString name)
{
QFile f( name );
if ( !f.open( IO_WriteOnly ) ) {
statusBar()->message( tr("Could not write to %1").arg(name),
2000 );
return;
}
QTextStream t( &f );
t << text;
f.close();
}
//====================================
void k3dsurface::smooth_ok()
{
smooth_triangle=1;
}
//====================================
void k3dsurface::triangle_ok()
{
smooth_triangle=-1;
}
//====================================
void k3dsurface::mesh_ok()
{
mesh_parametric = 1;
}
//====================================
void k3dsurface::parameter_ok()
{
mesh_parametric = -1;
}
//====================================
void k3dsurface::NewIsoScript()
{
}
//====================================
void k3dsurface::newScriptRun()
{
}
//====================================
void k3dsurface::newDocIso()
{
editeur *ed = new editeur();
ed->setCaption(tr("Qt Example - Application"));
QString text, conditiontext, Limits[6],DefinedVar[6];
Limits[0] = minxlimit->text();
Limits[1] = maxxlimit->text();
Limits[2] = minylimit->text();
Limits[3] = maxylimit->text();
Limits[4] = minzlimit->text();
Limits[5] = maxzlimit->text();
// User Defined Variables:
if(isoWidget->IsoObjet->ActivateHeightSpeedCalculations == 1) {
(isoWidget->IsoObjet->U1 == 1) ? DefinedVar[0]=unaryfct_1->text() : DefinedVar[0]="";
(isoWidget->IsoObjet->U2 == 1) ? DefinedVar[1]=unaryfct_2->text() : DefinedVar[1]="";
(isoWidget->IsoObjet->U3 == 1) ? DefinedVar[2]=unaryfct_3->text() : DefinedVar[2]="";
(isoWidget->IsoObjet->B1 == 1) ? DefinedVar[3]=binaryfct_1->text() : DefinedVar[3]="";
(isoWidget->IsoObjet->B2 == 1) ? DefinedVar[4]=binaryfct_2->text() : DefinedVar[4]="";
(isoWidget->IsoObjet->B3 == 1) ? DefinedVar[5]=binaryfct_3->text() : DefinedVar[5]="";
}
// Condition:
(activate_isocd == 1) ? conditiontext=Isocondition->text() : conditiontext=QString("");
// Final text:
text = RootObjet.ChangeScript(
implicitfunct->text(),
IsoImplicitBox->currentText(),
conditiontext,
Limits,
DefinedVar
);
ed->settext(text);
ed->show();
}
//====================================
void k3dsurface::newDocToolsIso()
{ editeur *ed = new editeur();
ed->setCaption(tr("Isosurface : "+IsoImplicitBox->currentText()));
QString text;
text = "Name: "+IsoImplicitBox->currentText();
text += "\nF():";
text += implicitfunct_2->text();
text += "\n[x]:";
text += minxlimit_2->text();
text += ", ";
text += maxxlimit_2->text();
text += "\n[y]:";
text += minylimit_2->text();
text += ", ";
text += maxylimit_2->text();
text += "\n[z]:";
text += minzlimit_2->text();
text += ", ";
text += maxzlimit_2->text();
text += "\n ;";
ed->settext(text);
ed->show();
}
//==============================
void k3dsurface::newDoc()
{
editeur *ed = new editeur();
ed->setCaption(tr("Qt Example - Application"));
QString text;
if(activate_tools == 1) {
text = "X(): ";
text += xtool->text();
text += "\nY(): ";
text += ytool->text();
text += "\nZ(): ";
text += ztool->text();
text += "\n[u]: ";
text += umin_tools->text();
text += ", ";
text += umax_tools->text();
text += "\n[v]: ";
text += vmin_tools->text();
text += ", ";
text += vmax_tools->text();
text += "\n\n";
}
else
if(cylindric_fct == 1) {
text = "R^";
text += puissance_c_val->text();
text += " = ";
text += fctdefc->text();
text += "\n With U[ ";
text += umin_3_2_2_2->text();
text += ", ";
text += umax_3_2_2_2->text();
text += "] And V[ ";
text += vmin_3_2_2_2->text();
text += ", ";
text += vmax_3_2_2_2->text();
text += "] \n";
}
else if(spheric_fct == 1) {
text = "R^";
text += puissance_r_val->text();
text += " = ";
text += fctdefr->text();
text += "\n With U[ ";
text += umin_3_2_2->text();
text += ", ";
text += umax_3_2_2->text();
text += "] And V[ ";
text += vmin_3_2_2->text();
text += ", ";
text += vmax_3_2_2->text();
text += "] \n";
}
else
if(sixdimshapes == 1) {
text = "X = ";
text += xcft_5->text();
text += "\nY = ";
text += ycft_5->text();
text += "\nZ = ";
text += zcft_5->text();
text += "\nW = ";
text += wcft_5->text();
text += "\nT = ";
text += tcft_5->text();
text += "\nS = ";
text += scft_5->text();
text += "\n With U[ ";
text += umin_5->text();
text += ", ";
text += umax_5->text();
text += "] And V[ ";
text += vmin_5->text();
text += ", ";
text += vmax_5->text();
text += "] \n\n";
}
else
if(fivedimshapes == 1) {
text = "X = ";
text += xcft_5->text();
text += "\nY = ";
text += ycft_5->text();
text += "\nZ = ";
text += zcft_5->text();
text += "\nW = ";
text += wcft_5->text();
text += "\nT = ";
text += tcft_5->text();
text += "\n With U[ ";
text += umin_5->text();
text += ", ";
text += umax_5->text();
text += "] And V[ ";
text += vmin_5->text();
text += ", ";
text += vmax_5->text();
text += "] \n\n";
}
else
if(fourdimshapes == 1) {
text = "X = ";
text += xcft_2->text();
text += "\nY = ";
text += ycft_2->text();
text += "\nZ = ";
text += zcft_2->text();
text += "\nW = ";
text += wcft_2->text();
text += "\n With U[ ";
text += umin_2->text();
text += ", ";
text += umax_2->text();
text += "] And V[ ";
text += vmin_2->text();
text += ", ";
text += vmax_2->text();
text += "] \n\n";
}
else
if( connectWidget2->objet->implicitdef == -1) {
text = "X():";
text += xcft->text();
text += "\nY():";
text += ycft->text();
text += "\nZ():";
text += zcft->text();
text += "\n[u]:";
text += umin->text();
text += ", ";
text += umax->text();
text += "\n[v]:";
text += vmin->text();
text += ", ";
text += vmax->text();
text += "\n\n";
if(connectWidget2->objet->two_system == 1) {
text += "X_2 = ";
text += xcft_3->text();
text += "\nY_2 = ";
text += ycft_3->text();
text += "\nZ_2 = ";
text += zcft_3->text();
text += "\n With U[ ";
text += umin_3->text();
text += ", ";
text += umax_3->text();
text += "] And V[ ";
text += vmin_3->text();
text += ", ";
text += vmax_3->text();
text += "] \n\n";
}
}
else {
text = "Z^";
text += puissance_val_2->text();
text += " = ";
text += fctdefz_val_2->text();
text += "\n With U[ ";
text += umin_3_2->text();
text += ", ";
text += umax_3_2->text();
text += "] And V[ ";
text += vmin_3_2->text();
text += ", ";
text += vmax_3_2->text();
text += "] \n";
}
ed->settext(text);
ed->show();
}
//====================================
void k3dsurface::newfct_ok( )
{
////+++++++++++++++++++++
QString Intermediate;/// To reverse the Axes
// Intermediate = fctdef->text();/// To reverse the Axes
Intermediate.replace(QChar('x'), "W");/// To reverse the Axes
Intermediate.replace(QChar('y'), "x");/// To reverse the Axes
Intermediate.replace(QChar('W'), "y"); /// To reverse the Axes
connectWidget2->objet->newfct = Intermediate;
connectWidget2->objet->DefineNewFct *=-1;
}
//====================================
void k3dsurface::spheric_fct_changed( const QString & choix )
{
if(choix == QString("Blob_1")) {
puissance_r_val->setText("1") ;
fctdefr->setText("3*cos(u)*cos(v)*sin(u)*sin(u+v)+0.8") ;
umin_3_2_2->setText("-pi/2") ;
umax_3_2_2->setText("pi/2") ;
vmin_3_2_2->setText("-pi") ;
vmax_3_2_2->setText("pi") ;
perform_sphere(); // process the new surface
return;
}
else
if(choix == QString("Blob_2")) {
puissance_r_val->setText("1") ;
fctdefr->setText("3*sin(u)*sin(u)+0.8") ;
umin_3_2_2->setText("-pi/2") ;
umax_3_2_2->setText("pi/2") ;
vmin_3_2_2->setText("-pi") ;
vmax_3_2_2->setText("pi") ;
perform_sphere(); // process the new surface
return;
}
if(choix == QString("Blob_3")) {
puissance_r_val->setText("1") ;
fctdefr->setText("3*cos(u)*cos(v)*sin(u)+0.8") ;
umin_3_2_2->setText("-pi/2") ;
umax_3_2_2->setText("pi/2") ;
vmin_3_2_2->setText("-pi") ;
vmax_3_2_2->setText("pi") ;
perform_sphere(); // process the new surface
return;
}
if(choix == QString("Blob_4")) {
puissance_r_val->setText("1") ;
fctdefr->setText("3*sin(u)*cos(u)+0.8") ;
umin_3_2_2->setText("-pi/2") ;
umax_3_2_2->setText("pi/2") ;
vmin_3_2_2->setText("-pi") ;
vmax_3_2_2->setText("pi") ;
perform_sphere(); // process the new surface
return;
}
if(choix == QString("Blob_5")) {
puissance_r_val->setText("1") ;
fctdefr->setText("3*cos(u)*sin(v)*sin(v)+0.8") ;
umin_3_2_2->setText("-pi/2") ;
umax_3_2_2->setText("pi/2") ;
vmin_3_2_2->setText("-pi") ;
vmax_3_2_2->setText("pi") ;
perform_sphere(); // process the new surface
return;
}
if(choix == QString("Blob_6")) {
puissance_r_val->setText("1") ;
fctdefr->setText("sin(v)*cos(v)") ;
umin_3_2_2->setText("-pi/2") ;
umax_3_2_2->setText("pi/2") ;
vmin_3_2_2->setText("-pi") ;
vmax_3_2_2->setText("pi") ;
perform_sphere(); // process the new surface
return;
}
if(choix == QString("Blob_7")) {
puissance_r_val->setText("1") ;
fctdefr->setText("cos(u)*cos(u)") ;
umin_3_2_2->setText("-pi/2") ;
umax_3_2_2->setText("pi/2") ;
vmin_3_2_2->setText("-pi") ;
vmax_3_2_2->setText("pi") ;
perform_sphere(); // process the new surface
return;
}
if(choix == QString("Blob_8")) {
puissance_r_val->setText("1") ;
fctdefr->setText("cos(u)+cos(u)*cos(v) +0.8") ;
umin_3_2_2->setText("-pi/2") ;
umax_3_2_2->setText("pi/2") ;
vmin_3_2_2->setText("-pi") ;
vmax_3_2_2->setText("pi") ;
perform_sphere(); // process the new surface
return;
}
if(choix == QString("Blob_9")) {
puissance_r_val->setText("1") ;
fctdefr->setText("(abs(cos(7*u/4))^1.7 + abs(sin(7*u/4))^1.7)^(-1/0.2)") ;
umin_3_2_2->setText("-pi/2") ;
umax_3_2_2->setText("pi/2") ;
vmin_3_2_2->setText("-pi") ;
vmax_3_2_2->setText("pi") ;
perform_sphere(); // process the new surface
return;
}
if(choix == QString("Blob_10")) {
puissance_r_val->setText("1") ;
fctdefr->setText("abs(3*x)*cos(u)*sin(v)*sin(u)*sin(u+v)+0.8") ;
umin_3_2_2->setText("-pi/2") ;
umax_3_2_2->setText("pi/2") ;
vmin_3_2_2->setText("-pi") ;
vmax_3_2_2->setText("pi") ;
perform_sphere(); // process the new surface
return;
}
}
//====================================
void k3dsurface::implicit_fct_changed( const QString & choix )
{
if(choix == QString("Wave")) {
puissance_val_2->setText("1") ;
fctdefz_val_2->setText("2*cos(x)*sin(y)") ;
umin_3_2->setText("-pi") ;
umax_3_2->setText("pi") ;
vmin_3_2->setText("-pi");
vmax_3_2->setText("pi");
// return;
}
if(choix == QString("Selle")) {
puissance_val_2->setText("1") ;
fctdefz_val_2->setText("cos(x)*y") ;
umin_3_2->setText("-pi");
umax_3_2->setText("pi");
vmin_3_2->setText("-pi");
vmax_3_2->setText("pi");
// return;
}
if(choix == QString("Cone")) {
puissance_val_2->setText("1") ;
fctdefz_val_2->setText("1 - (x^2 + y^2)") ;
umin_3_2->setText("-1");
umax_3_2->setText("1");
vmin_3_2->setText("-1");
vmax_3_2->setText("1");
}
if(choix == QString("x*exp(-x^2-y^2)")) {
puissance_val_2->setText("1") ;
fctdefz_val_2->setText("4*x*exp(-x^2-y^2)") ;
umin_3_2->setText("-2");
umax_3_2->setText("2");
vmin_3_2->setText("-2");
vmax_3_2->setText("2");
}
if(choix == QString("cos(x*y)")) {
puissance_val_2->setText("1") ;
fctdefz_val_2->setText("cos(x*y)") ;
umin_3_2->setText("-pi");
umax_3_2->setText("pi");
vmin_3_2->setText("-pi");
vmax_3_2->setText("pi");
}
if(choix == QString("cos(x*x-y*y)")) {
puissance_val_2->setText("1") ;
fctdefz_val_2->setText("cos(x*x - y*y)/2") ;
umin_3_2->setText("-pi");
umax_3_2->setText("pi");
vmin_3_2->setText("-pi");
vmax_3_2->setText("pi");
}
// process the new surface
perform2();
}
//====================================
void k3dsurface::choice4D_changed( const QString & choix )
{
RootObjet.Look4DParametricEquation(choix);
connectWidget2->objet->two_system = -1;
connectWidget2->objet->fourdimshapes = 1;
xcft_2->setText(RootObjet.Parametric[0]);
ycft_2->setText(RootObjet.Parametric[1]);
zcft_2->setText(RootObjet.Parametric[2]);
wcft_2->setText(RootObjet.Parametric[3]);
umin_2->setText(RootObjet.Parametric[4]);
umax_2->setText(RootObjet.Parametric[5]);
vmin_2->setText(RootObjet.Parametric[6]);
vmax_2->setText(RootObjet.Parametric[7]);
// copy the first system
connectWidget2->objet->expression_X = xcft_2->text();
connectWidget2->objet->expression_Y = ycft_2->text();
connectWidget2->objet->expression_Z = zcft_2->text();
connectWidget2->objet->expression_W = wcft_2->text();
connectWidget2->objet->inf_u = umin_2->text();
connectWidget2->objet->sup_u = umax_2->text();
connectWidget2->objet->inf_v = vmin_2->text();
connectWidget2->objet->sup_v = vmax_2->text();
//Process the new surface :
ParametricSurfaceProcess();
}
//====================================
void k3dsurface::choice_changed( const QString & choix )
{
RootObjet.LookForParametricEquation(choix);
connectWidget2->objet->two_system = -1;
xcft->setText(RootObjet.Parametric[0]);
zcft->setText(RootObjet.Parametric[1]);
ycft->setText(RootObjet.Parametric[2]);
umin->setText(RootObjet.Parametric[3]);
umax->setText(RootObjet.Parametric[4]);
vmin->setText(RootObjet.Parametric[5]);
vmax->setText(RootObjet.Parametric[6]);
xcft_3->setText("");
zcft_3->setText("");
ycft_3->setText("");
umin_3->setText("");
umax_3->setText("");
vmin_3->setText("");
vmax_3->setText("");
connectWidget2->objet->expression_X = RootObjet.Parametric[0];
connectWidget2->objet->expression_Y = RootObjet.Parametric[1];
connectWidget2->objet->expression_Z = RootObjet.Parametric[2];
connectWidget2->objet->inf_u = RootObjet.Parametric[3];
connectWidget2->objet->sup_u = RootObjet.Parametric[4];
connectWidget2->objet->inf_v = RootObjet.Parametric[5];
connectWidget2->objet->sup_v = RootObjet.Parametric[6];
// copy the second system
if(connectWidget2->objet->two_system == 1) {
connectWidget2->objet->expression_X_2 = xcft_3->text();
connectWidget2->objet->expression_Y_2 = ycft_3->text();
connectWidget2->objet->expression_Z_2 = zcft_3->text();
connectWidget2->objet->inf_u_2 = umin_3->text();
connectWidget2->objet->sup_u_2 = umax_3->text();
connectWidget2->objet->inf_v_2 = vmin_3->text();
connectWidget2->objet->sup_v_2 = vmax_3->text();
}
else {
// for more security...
connectWidget2->objet->expression_X_2 = "";
connectWidget2->objet->expression_Y_2 = "";
connectWidget2->objet->expression_Z_2 = "";
connectWidget2->objet->inf_u_2 = "";
connectWidget2->objet->sup_u_2 = "";
connectWidget2->objet->inf_v_2 = "";
connectWidget2->objet->sup_v_2 = "";
}
// process the new surface
ParametricSurfaceProcess();
}
//====================================
void k3dsurface::deffct_desactiver() {
}
//====================================
void k3dsurface::secondsys_desactiver() {
// if(connectWidget2->objet->two_system ==1) secondsystem->toggle();
// connectWidget2->objet->two_system = -1;
}
//====================================
void k3dsurface::perform_supershape()
{
FunctionParser fp;
QMessageBox message ;
fp.AddConstant("pi", 3.14159265);
int ret;
ret = fp.Parse(m1->text(), "t");
if(ret >= 0)
{
message.setText(tr(QString("M(u)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(m2->text(), "t");
if(ret >= 0)
{
message.setText(tr(QString("M(v)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(a_1->text(), "t");
if(ret >= 0)
{
message.setText(tr(QString("a(u)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(a_2->text(), "t");
if(ret >= 0)
{
message.setText(tr(QString("a(v)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(b_1->text(), "t");
if(ret >= 0)
{
message.setText(tr(QString("b(u)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(b_2->text(), "t");
if(ret >= 0)
{
message.setText(tr(QString("b(v)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(n1_1->text(), "t");
if(ret >= 0)
{
message.setText(tr(QString("N1(u)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(n1_2->text(), "t");
if(ret >= 0)
{
message.setText(tr(QString("N1(v)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(n2_1->text(), "t");
if(ret >= 0)
{
message.setText(tr(QString("N2(u)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(n2_2->text(), "t");
if(ret >= 0)
{
message.setText(tr(QString("N2(v)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(n3_1->text(), "t");
if(ret >= 0)
{
message.setText(tr(QString("N3(u)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(n3_2->text(), "t");
if(ret >= 0)
{
message.setText(tr(QString("N3(v)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(sfumin->text(), "t");
if(ret >= 0)
{
message.setText(tr(QString("Umin--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(sfumax->text(), "t");
if(ret >= 0)
{
message.setText(tr(QString("Umax--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(sfvmin->text(), "t");
if(ret >= 0)
{
message.setText(tr(QString("Vmin--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(sfvmax->text(), "t");
if(ret >= 0)
{
message.setText(tr(QString("Vmax--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
connectWidget2->objet->sm1 = m1->text();
connectWidget2->objet->sa_1 = a_1->text();
connectWidget2->objet->sb_1 = b_1->text();
connectWidget2->objet->sn1_1 = n1_1->text();
connectWidget2->objet->sn2_1 = n2_1->text();
connectWidget2->objet->sn3_1 = n3_1->text();
connectWidget2->objet->sm2 = m2->text();
connectWidget2->objet->sa_2 = a_2->text();
connectWidget2->objet->sb_2 = b_2->text();
connectWidget2->objet->sn1_2 = n1_2->text();
connectWidget2->objet->sn2_2 = n2_2->text();
connectWidget2->objet->sn3_2 = n3_2->text();
connectWidget2->objet->inf_u = sfumin->text();
connectWidget2->objet->sup_u = sfumax->text();
connectWidget2->objet->inf_v = sfvmin->text();
connectWidget2->objet->sup_v = sfvmax->text();
/// Set the right Window for drawing :
tabsurf->setCurrentPage(0);
//Process the new surface :
ParametricSurfaceProcess();
}
//====================================
void k3dsurface::choicesf_changed( const QString & choix )
{
if(choix == QString("SuperShape_1")) {
m1->setText("0"); a_1->setText("1"); b_1->setText("1");
n1_1->setText("0.48"); n2_1->setText("30.25"); n3_1->setText("0.35");
m2->setText("5"); a_2->setText("1"); b_2->setText("1");
n1_2->setText("15.44"); n2_2->setText("-0.45"); n3_2->setText("87");
sfumin->setText("-pi"); sfumax->setText("pi");
sfvmin->setText("-pi/2"); sfvmax->setText("pi/2");
}
if(choix == QString("SuperShape_2")) {
m1->setText("0.2"); a_1->setText("1"); b_1->setText("1");
n1_1->setText("0.1"); n2_1->setText("1.7"); n3_1->setText("1.7");
m2->setText("0.2"); a_2->setText("1"); b_2->setText("1");
n1_2->setText("0.5"); n2_2->setText("0.2"); n3_2->setText("0.2");
sfumin->setText("-pi"); sfumax->setText("pi");
sfvmin->setText("-pi/2"); sfvmax->setText("pi/2");
}
if(choix == QString("SuperShape_3")) {
m1->setText("2"); a_1->setText("1"); b_1->setText("1");
n1_1->setText("1"); n2_1->setText("1"); n3_1->setText("1");
m2->setText("4"); a_2->setText("1"); b_2->setText("1");
n1_2->setText("1"); n2_2->setText("1"); n3_2->setText("1");
sfumin->setText("-pi"); sfumax->setText("pi");
sfvmin->setText("-pi/2"); sfvmax->setText("pi/2");
}
if(choix == QString("SuperShape_4")) {
m1->setText("5.7"); a_1->setText("1"); b_1->setText("1");
n1_1->setText("0.5"); n2_1->setText("1"); n3_1->setText("2.5");
m2->setText("10"); a_2->setText("1"); b_2->setText("1");
n1_2->setText("3"); n2_2->setText("0.2"); n3_2->setText("1");
sfumin->setText("-pi"); sfumax->setText("pi");
sfvmin->setText("-pi/2"); sfvmax->setText("pi/2");
}
if(choix == QString("SuperShape_5")) {
m1->setText("6"); a_1->setText("1"); b_1->setText("1");
n1_1->setText("60"); n2_1->setText("55"); n3_1->setText("1000");
m2->setText("6"); a_2->setText("1"); b_2->setText("1");
n1_2->setText("250"); n2_2->setText("100"); n3_2->setText("100");
sfumin->setText("-pi"); sfumax->setText("pi");
sfvmin->setText("-pi/2"); sfvmax->setText("pi/2");
}
if(choix == QString("SuperShape_6")) {
m1->setText("2"); a_1->setText("1"); b_1->setText("1");
n1_1->setText("0.99"); n2_1->setText("97.67"); n3_1->setText("-0.439");
m2->setText("7"); a_2->setText("1"); b_2->setText("1");
n1_2->setText("-8.11"); n2_2->setText("-0.0807"); n3_2->setText("93");
sfumin->setText("-pi"); sfumax->setText("pi");
sfvmin->setText("-pi/2"); sfvmax->setText("pi/2");
}
if(choix == QString("SuperShape_7")) {
m1->setText("6"); a_1->setText("1"); b_1->setText("1");
n1_1->setText("0.709889"); n2_1->setText("46.82"); n3_1->setText("-0.80");
m2->setText("7"); a_2->setText("1"); b_2->setText("1");
n1_2->setText("-31.9083"); n2_2->setText("-0.19"); n3_2->setText("97");
sfumin->setText("-pi"); sfumax->setText("pi");
sfvmin->setText("-pi/2"); sfvmax->setText("pi/2");
}
if(choix == QString("SuperShape_8")) {
m1->setText("7"); a_1->setText("1"); b_1->setText("1");
n1_1->setText("0.2"); n2_1->setText("1.7"); n3_1->setText("1.7");
m2->setText("7"); a_2->setText("1"); b_2->setText("1");
n1_2->setText("0.2"); n2_2->setText("1.7"); n3_2->setText("1.7");
sfumin->setText("-pi"); sfumax->setText("pi");
sfvmin->setText("-pi/2"); sfvmax->setText("pi/2");
}
if(choix == QString("SuperShape_9")) {
m1->setText("3"); a_1->setText("1"); b_1->setText("1");
n1_1->setText("1"); n2_1->setText("1"); n3_1->setText("1");
m2->setText("6"); a_2->setText("2"); b_2->setText("1");
n1_2->setText("2"); n2_2->setText("1"); n3_2->setText("1");
sfumin->setText("-pi"); sfumax->setText("pi");
sfvmin->setText("-pi/2"); sfvmax->setText("pi/2");
}
if(choix == QString("SuperShape_10")) {
m1->setText("6"); a_1->setText("1"); b_1->setText("1");
n1_1->setText("3000"); n2_1->setText("1000"); n3_1->setText("1000");
m2->setText("6"); a_2->setText("1"); b_2->setText("1");
n1_2->setText("250"); n2_2->setText("100"); n3_2->setText("100");
sfumin->setText("-pi"); sfumax->setText("pi");
sfvmin->setText("-pi/2"); sfvmax->setText("pi/2");
}
// process the new surface
connectWidget2->objet->sm1 = m1->text();
connectWidget2->objet->sa_1 = a_1->text();
connectWidget2->objet->sb_1 = b_1->text();
connectWidget2->objet->sn1_1 = n1_1->text();
connectWidget2->objet->sn2_1 = n2_1->text();
connectWidget2->objet->sn3_1 = n3_1->text();
connectWidget2->objet->sm2 = m2->text();
connectWidget2->objet->sa_2 = a_2->text();
connectWidget2->objet->sb_2 = b_2->text();
connectWidget2->objet->sn1_2 = n1_2->text();
connectWidget2->objet->sn2_2 = n2_2->text();
connectWidget2->objet->sn3_2 = n3_2->text();
connectWidget2->objet->inf_u = sfumin->text();
connectWidget2->objet->sup_u = sfumax->text();
connectWidget2->objet->inf_v = sfvmin->text();
connectWidget2->objet->sup_v = sfvmax->text();
/// Set the right Window for drawing :
tabsurf->setCurrentPage(0);
//Process the new surface :
ParametricSurfaceProcess();
}
//====================================
void k3dsurface::perform()
{
FunctionParser fp,f1;
QMessageBox message ;
fp.AddConstant("pi", 3.14159265);
int ret;
/*
if(connectWidget2->objet->DefineNewFct ==1)
{
ret = fp.Parse(fctdef->text(), "u,v,t,x,y");
if(ret >= 0)
{
message.setText(tr(QString("k(u,v,t,x,y)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
f1.Parse(fctdef->text(), "u,v,t,x,y");
fp.AddFunction("k", f1);
}
*/
ret = fp.Parse(xcft->text(), "u,v,t");
if(ret >= 0)
{
message.setText(tr(QString("X=g(u,v)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(ycft->text(), "u,v,t,x");
if(ret >= 0)
{
message.setText(tr(QString("Y=g(u,v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(zcft->text(), "u,v,t,x,y");
if(ret >= 0)
{
message.setText(tr(QString("Z=h(u,v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
// verifiy that a condition exists
if(activate_cd == 1) {
ret = fp.Parse(condition->text(), "u,v,t,x,y,z");
if(ret >= 0)
{
message.setText(tr(QString("CND --> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
if(inverse_condition == 1)
connectWidget2->objet->condition_expression = QString("("+condition->text()+") = 0");
else connectWidget2->objet->condition_expression = condition->text();
} // End if(activate_cd == 1)
connectWidget2->objet->expression_X = xcft->text(); ///Reverse the Axes
connectWidget2->objet->expression_Y = ycft->text(); ///Reverse the Axes
connectWidget2->objet->expression_Z = zcft->text();
connectWidget2->objet->inf_u = umin->text();
connectWidget2->objet->sup_u = umax->text();
connectWidget2->objet->inf_v = vmin->text();
connectWidget2->objet->sup_v = vmax->text();
// Now we look in the second system if something wrong with it...
if (
(xcft_3->text() != "") &&
(ycft_3->text() != "") &&
(zcft_3->text() != "") &&
(umin_3->text() != "") &&
(umax_3->text() != "") &&
(vmin_3->text() != "") &&
(vmax_3->text() != "") )
{
connectWidget2->objet->expression_X_2 = xcft_3->text(); ///Reverse the Axes
connectWidget2->objet->expression_Y_2 = ycft_3->text(); ///Reverse the Axes
connectWidget2->objet->expression_Z_2 = zcft_3->text();
connectWidget2->objet->inf_u_2 = umin_3->text();
connectWidget2->objet->sup_u_2 = umax_3->text();
connectWidget2->objet->sup_v_2 = vmax_3->text();
connectWidget2->objet->inf_v_2 = vmin_3->text();
ret = fp.Parse(xcft_3->text(), "u,v,t");
if(ret >= 0)
{
message.setText(tr(QString("Second System : X=l(u,v)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
connectWidget2->objet->two_system = -1 ;
return ;
}
ret = fp.Parse(ycft_3->text(), "u,v,t");
if(ret >= 0)
{
message.setText(tr(QString("Second System : Y=r(u,v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
connectWidget2->objet->two_system = -1;
return ;
}
ret = fp.Parse(zcft_3->text(), "u,v,t");
if(ret >= 0)
{
message.setText(tr(QString("Second System : Z=s(u,v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
connectWidget2->objet->two_system = -1 ;
return ;
}
// Now we give the authorisation to use two systems...
connectWidget2->objet->two_system = 1 ;
}
// process the new surface
ParametricSurfaceProcess();
}
//====================================
void k3dsurface::ParametricSurfaceProcess()
{
// process the new surface
int current_pag = tabsurf->currentPageIndex();
if( paramwidgetstack == 1) {
connectWidget2->objet->SpecialMorph_2(ParamGlWidget->LocalScene.ArrayNorVer_localPt, ParamGlWidget->PolyIndices_local, ParamGlWidget->NbPolygnNbVertex, 1);
ParamGlWidget->PolyNumber = connectWidget2->objet->NbPolygn;
ParamGlWidget->initializeGL();
ParamGlWidget->updateGL();
}
else connectWidget2->valueChanged();
if(current_pag != 0) tabsurf->setCurrentPage(0);
}
//====================================
void k3dsurface::Initparametricpage(){
ParamGlWidget->LocalScene.typedrawing = -1;
ParamGlWidget->LocalScene.line = 1;
}
//====================================
void k3dsurface::Initisopage(){
IsoGlWidget->LocalScene.typedrawing = 1;
IsoGlWidget->LocalScene.line = -1;
IsoGlWidget->LocalScene.box = -1;
}
//====================================
void k3dsurface::perform2()
{ //double vals=0;//[1] = {0};
QMessageBox message ;
FunctionParser f1, fp, fp2;
if(fourdimshapes == -1) {
fp.AddConstant("pi", 3.14159265);
int ret;
/*
ret = fp2.Parse(puissance_val_2->text(), "youpi");
if(fmod(fp2.Eval(&vals), 2) == 0) {
message.setText(tr("n mod 2 = 0 !!!!"));
message.adjustSize () ;
message.exec();
return ;
};
*/
ret = fp.Parse(fctdefz_val_2->text(), "x,y,t");
if(ret >= 0)
{
message.setText(tr(QString("Implicit equation : f(x,y,t)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
connectWidget2->objet->implicitdef = 1;
connectWidget2->objet->expression_implicite = fctdefz_val_2->text();
connectWidget2->objet->coefficient_n = puissance_val_2->text();
connectWidget2->objet->inf_u = umin_3_2->text();
connectWidget2->objet->sup_u = umax_3_2->text();
connectWidget2->objet->inf_v = vmin_3_2->text();
connectWidget2->objet->sup_v = vmax_3_2->text();
// process the new surface
ParametricSurfaceProcess();
}
else {
fp.AddConstant("pi", 3.14159265);
int ret;
/*
if(connectWidget2->objet->DefineNewFct ==1)
{
ret = fp.Parse(fctdef->text(), "u,v,t,x,y");
if(ret >= 0)
{
message.setText(tr(QString("k(u,v,t,x,y)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
f1.Parse(fctdef->text(), "u,v,t,x,y");
fp.AddFunction("k", f1);
}
*/
ret = fp.Parse(xcft_2->text(), "u,v,t");
if(ret >= 0)
{
message.setText(tr(QString("X=g(u,v)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(ycft_2->text(), "u,v,t");
if(ret >= 0)
{
message.setText(tr(QString("Y=g(u,v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(zcft_2->text(), "u,v,t");
if(ret >= 0)
{message.setText(tr(QString("Z=h(u,v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
ret = fp.Parse(wcft_2->text(), "u,v,t");
if(ret >= 0)
{message.setText(tr(QString("W=l(u,v)--> At col:")+
QString::number(ret)+ QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
return ;
}
connectWidget2->objet->fourdimshapes = 1;
connectWidget2->objet->expression_X = xcft_2->text(); /// To reverse the Axes
connectWidget2->objet->expression_Y = ycft_2->text(); /// To reverse the Axes
connectWidget2->objet->expression_Z = zcft_2->text();
connectWidget2->objet->expression_W = wcft_2->text();
connectWidget2->objet->inf_u = umin_2->text();
connectWidget2->objet->sup_u = umax_2->text();
connectWidget2->objet->inf_v = vmin_2->text();
connectWidget2->objet->sup_v = vmax_2->text();
// process the new surface
ParametricSurfaceProcess();
}
}
//====================================
void k3dsurface::choice5D_changed( const QString & choix )
{
if(choix == QString("Flower")) {
xcft_5->setText("v *cos(u) -0.5*v^2*cos(2*u)");
ycft_5->setText("-v*sin(u) -0.5*v^2*sin(2*u)");
zcft_5->setText("4* v^1.5 *cos(3* u / 2) / 3") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("0") ;
umax_5->setText("4*pi") ;
vmin_5->setText("0") ;
vmax_5->setText("1") ;
}
else if(choix == QString("Cosinus")) {
xcft_5->setText("u");
ycft_5->setText("v");
zcft_5->setText("sin(pi*((u)^2+(v)^2))/2") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("-1") ;
umax_5->setText("1") ;
vmin_5->setText("-1") ;
vmax_5->setText("1") ;
}
else if(choix == QString("Shell")) {
xcft_5->setText("1.2^v*(sin(u)^2 *sin(v))");
ycft_5->setText("1.2^v*(sin(u)^2 *cos(v))");
zcft_5->setText("1.2^v*(sin(u)*cos(u))") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("0") ;
umax_5->setText("pi") ;
vmin_5->setText("-pi/4") ;
vmax_5->setText("5*pi/2") ;
}
else if(choix == QString("Sphere")) {
xcft_5->setText("cos(u)*cos(v)");
ycft_5->setText("cos(u)*sin(v)");
zcft_5->setText("sin(u)") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("-pi/2") ;
umax_5->setText("pi/2") ;
vmin_5->setText("0") ;
vmax_5->setText("2*pi") ;
}
else if(choix == QString("Steiner")) {
xcft_5->setText("(sin(2 * u) * cos(v) * cos(v))");
ycft_5->setText("(sin(u) * sin(2 * v))");
zcft_5->setText("(cos(u) * sin(2 * v))") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("-pi/2") ;
umax_5->setText("pi/2") ;
vmin_5->setText("-pi/2") ;
vmax_5->setText("pi/2") ;
}
else if(choix == QString("Cross_cap")) {
xcft_5->setText("(sin(u) * sin(2 * v) / 2)");
ycft_5->setText("(sin(2 * u) * cos(v) * cos(v))");
zcft_5->setText("(cos(2 * u) * cos(v) * cos(v))") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("-pi/2") ;
umax_5->setText("pi/2") ;
vmin_5->setText("-pi/2") ;
vmax_5->setText("pi/2") ;
}
else if(choix == QString("Boys")) {
xcft_5->setText("(2/3)*(cos(u)*cos(2*v)+sqrt(2)*sin(u)*cos(v))*cos(u) /(sqrt(2) - sin(2*u)*sin(3*v))");
ycft_5->setText("(2/3)*(cos(u)*sin(2*v)-sqrt(2)*sin(u)*sin(v))*cos(u) /(sqrt(2)-sin(2*u)*sin(3*v))");
zcft_5->setText("sqrt(2)*cos(u)^2 / (sqrt(2) - sin(2*u)*sin(2*v))") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("-pi/2") ;
umax_5->setText("pi/2") ;
vmin_5->setText("-pi/2") ;
vmax_5->setText("pi/2") ;
}
else if(choix == QString("Torus")) {
xcft_5->setText("(1+ 0.5*cos(u))*cos(v)");
ycft_5->setText("(1+ 0.5*cos(u))*sin(v)");
zcft_5->setText("0.5*sin(u)") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("0") ;
umax_5->setText("2*pi");
vmin_5->setText("0") ;
vmax_5->setText("2*pi") ;
}
else if(choix == QString("Klein")) {
connectWidget2->objet->two_system = -1;
connectWidget2->objet->fourdimshapes = 1;
xcft_5->setText("(3*(1+sin(v)) + 2*(1-cos(v)/2)*cos(u))*cos(v)") ;
ycft_5->setText("(4+2*(1-cos(v)/2)*cos(u))*sin(v)");
zcft_5->setText("-2*(1-cos(v)/2) * sin(u)");
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("0") ;
umax_5->setText("2*pi") ;
vmin_5->setText("0") ;
vmax_5->setText("2*pi") ;
}
else if(choix == QString("Moebius")) {
xcft_5->setText("cos(v)+u*cos(v/2)*cos(v)");
ycft_5->setText("sin(v)+u*cos(v/2)*sin(v)");
zcft_5->setText("u*sin(v/2)") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("-0.4") ;
umax_5->setText("0.4") ;
vmin_5->setText("0") ;
vmax_5->setText("2*pi") ;
}
else if(choix == QString("Riemann")) {
xcft_5->setText("u*v");
ycft_5->setText("v^2 - u^2");
zcft_5->setText("30*u") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("-6") ;
umax_5->setText("6") ;
vmin_5->setText("-25") ;
vmax_5->setText("25") ;
}
else if(choix == QString("Klein_2")) {
xcft_5->setText("(2 + cos(v/2)* sin(u) - sin(v/2)* sin(2 *u))* cos(v)");
ycft_5->setText("(2 + cos(v/2)* sin(u) - sin(v/2)* sin(2 *u))* sin(v)");
zcft_5->setText("sin(v/2)* sin(u) + cos(v/2) *sin(2* u)") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("0") ;
umax_5->setText("2*pi") ;
vmin_5->setText("0") ;
vmax_5->setText("2*pi") ;
}
else if(choix == QString("Henneberg")) {
xcft_5->setText("2*sinh(u)*cos(v) -(2/3)*sinh(3*u)*cos(3*v)");
ycft_5->setText("2*sinh(u)*sin(v) +(2/3)*sinh(3*u)*sin(3*v)");
zcft_5->setText("2*cosh(2*u)*cos(2*v)") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("-1") ;
umax_5->setText("1") ;
vmin_5->setText("-pi/2") ;
vmax_5->setText("pi/2") ;
}
else if(choix == QString("Enneper")) {
xcft_5->setText("u -u^3/3 + u*v^2");
ycft_5->setText("v -v^3/3 + v*u^2");
zcft_5->setText("u^2 - v^2") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("-2") ;
umax_5->setText("2") ;
vmin_5->setText("-2") ;
vmax_5->setText("2") ;
}
else if(choix == QString("Helix")) {
xcft_5->setText("(1-0.1*cos(v))*cos(u)");
ycft_5->setText("(1-0.1*cos(v))*sin(u)");
zcft_5->setText("0.1*(sin(v) + u/1.7 -10)");
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("0") ;
umax_5->setText("4*pi") ;
vmin_5->setText("0") ;
vmax_5->setText("2*pi") ;
}
else if(choix == QString("Hexaedron")) {
xcft_5->setText("cos(v)^3*cos(u)^3");
ycft_5->setText("sin(v)^3*cos(u)^3");
zcft_5->setText("sin(u)^3") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("-1.3") ;
umax_5->setText("1.3") ;
vmin_5->setText("0") ;
vmax_5->setText("2*pi") ;
}
else if(choix == QString("Sphere_1")) {
xcft_5->setText("cos(u)*cos(v)");
ycft_5->setText("cos(u)*sin(v)");
zcft_5->setText("sin(u)") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("-pi/2") ;
umax_5->setText("pi/2") ;
vmin_5->setText("0") ;
vmax_5->setText("2*pi") ;
}
else if(choix == QString("Catalan")) {
xcft_5->setText("u-sin(u)*cosh(v)");
ycft_5->setText("1-cos(u)*cosh(v)");
zcft_5->setText("4*sin(1/2*u)*sinh(v/2)") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("-pi") ;
umax_5->setText("3*pi") ;
vmin_5->setText("-2") ;
vmax_5->setText("2") ;
}
else if(choix == QString("Toupie")) {
xcft_5->setText("(abs(u)-1)^2 * cos(v)");
ycft_5->setText("(abs(u)-1)^2 * sin(v)");
zcft_5->setText("u") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("-1") ;
umax_5->setText("1") ;
vmin_5->setText("0") ;
vmax_5->setText("2*pi") ;
}
else if(choix == QString("Bonbon")) {
xcft_5->setText("u");
ycft_5->setText("cos (u)*cos (v)");
zcft_5->setText("cos (u)*sin (v)") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("0") ;
umax_5->setText("2*pi") ;
vmin_5->setText("0") ;
vmax_5->setText("2*pi") ;
}
else if(choix == QString("Curve")) {
xcft_5->setText("cos(2*u)");
ycft_5->setText("sin(3*u)");
zcft_5->setText("cos(u)") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("0") ;
umax_5->setText("2*pi") ;
vmin_5->setText("0") ;
vmax_5->setText("0") ;
}
else if(choix == QString("Trumpet")) {
xcft_5->setText("cos(u)*sin(v)");
ycft_5->setText("sin(u)*sin(v)");
zcft_5->setText("(cos(v)+log(tan(1/2*v)))") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("0") ;
umax_5->setText("2*pi") ;
vmin_5->setText("0.03") ;
vmax_5->setText("2") ;
}
else if(choix == QString("Helice_Curve")) {
xcft_5->setText("sin(u)");
ycft_5->setText("cos(u)");
zcft_5->setText("(u^2)/100") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("0") ;
umax_5->setText("6*pi") ;
vmin_5->setText("0") ;
vmax_5->setText("0") ;
}
else if(choix == QString("Cresent")) {
xcft_5->setText("(2 + sin(2* pi* u) *sin(2 *pi* v)) *sin(3* pi *v)");
ycft_5->setText("(2 + sin(2* pi *u) *sin(2 *pi *v)) *cos(3* pi *v)");
zcft_5->setText("cos(2* pi *u) *sin(2* pi* v) + 4 *v - 2") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("0") ;
umax_5->setText("1") ;
vmin_5->setText("0") ;
vmax_5->setText("1") ;
}
else if(choix == QString("Shoe")) {
xcft_5->setText("u");
ycft_5->setText("v");
zcft_5->setText("1/3*u^3 - 1/2*v^2") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("-2") ;
umax_5->setText("2") ;
vmin_5->setText("-2") ;
vmax_5->setText("2") ;
}
else if(choix == QString("Snake")) {
xcft_5->setText("1.2*(1 -v/(2*pi))*cos(3*v)*(1 + cos(u)) + 3*cos(3*v)");
ycft_5->setText("1.2*(1 -v/(2*pi))*sin(3*v)*(1 + cos(u)) + 3*sin(3*v)");
zcft_5->setText("9*v/(2*pi) + 1.2*(1 - v/(2*pi))*sin(u)") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("0") ;
umax_5->setText("2*pi") ;
vmin_5->setText("0") ;
vmax_5->setText("2*pi") ;
}
else if(choix == QString("Roman")) {
xcft_5->setText("1/2*sin(2*u)*sin(v)^2");
ycft_5->setText("1/2*sin(u)*cos(2*v)");
zcft_5->setText("1/2*cos(u)*sin(2*v)") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("0") ;
umax_5->setText("pi") ;
vmin_5->setText("-pi/2") ;
vmax_5->setText("pi/2") ;
}
else if(choix == QString("Hyperhelicoidal")) {
xcft_5->setText("(sinh(v)*cos(3*u))/(1+cosh(u)*cosh(v))");
ycft_5->setText("(sinh(v)*sin(3*u))/(1+cosh(u)*cosh(v))");
zcft_5->setText("(cosh(v)*sinh(u))/(1+cosh(u)*cosh(v))") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("-pi") ;
umax_5->setText("pi") ;
vmin_5->setText("-pi") ;
vmax_5->setText("pi") ;
}
else if(choix == QString("Horn")) {
xcft_5->setText("(2 + u*cos(v))*sin(2*pi*u)");
ycft_5->setText("(2 + u*cos(v))*cos(2*pi*u) + 2*u");
zcft_5->setText("u *sin(v)") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("0") ;
umax_5->setText("1") ;
vmin_5->setText("0") ;
vmax_5->setText("2*pi") ;
}
else if(choix == QString("Helicoidal")) {
xcft_5->setText("sinh(v)*sin(u)");
ycft_5->setText("-sinh(v)*cos(u)");
zcft_5->setText("3*u") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("-pi") ;
umax_5->setText("pi") ;
vmin_5->setText("-pi") ;
vmax_5->setText("pi") ;
}
else if(choix == QString("Catenoid")) {
xcft_5->setText("2*cosh(v/2)*cos(u)");
ycft_5->setText("2*cosh(v/2)*sin(u)");
zcft_5->setText("v") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("-pi") ;
umax_5->setText("pi") ;
vmin_5->setText("-pi") ;
vmax_5->setText("pi") ;
}
else if(choix == QString("Kuen")) {
xcft_5->setText("(2*(cos(u) + u*sin(u))*sin(v))/(1+ u^2*sin(v)^2)");
ycft_5->setText("(2*(sin(u) - u*cos(u))*sin(v))/(1+ u^2*sin(v)^2)");
zcft_5->setText("log(tan(1/2 *v)) + (2*cos(v))/(1+ u^2*sin(v)^2)") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("0") ;
umax_5->setText("2*pi") ;
vmin_5->setText("0.01") ;
vmax_5->setText("pi-0.01") ;
}
else if(choix == QString("Hellipticparaboloid")) {
xcft_5->setText("v*2*cos(u)");
ycft_5->setText("v*sin(u)");
zcft_5->setText("v^2") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("0") ;
umax_5->setText("2*pi") ;
vmin_5->setText("0") ;
vmax_5->setText("2") ;
}
else if(choix == QString("Enneper_2")) {
xcft_5->setText("u*cos(v)-u^3/3*cos(3*v)");
ycft_5->setText("-u*sin(v)-u^(3)/3*sin(3*v)");
zcft_5->setText("u^2*cos(2*v)") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("0") ;
umax_5->setText("1.2") ;
vmin_5->setText("-pi") ;
vmax_5->setText("pi") ;
}
else if(choix == QString("Stereosphere")) {
xcft_5->setText("2.*u/(u*u+v*v+1.)");
ycft_5->setText("2.*v/(u*u+v*v+1.)");
zcft_5->setText("(u*u+v*v-1.)/(u*u+v*v+1.)") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("-2") ;
umax_5->setText("2") ;
vmin_5->setText("-2") ;
vmax_5->setText("2") ;
}
else if(choix == QString("Cliffordtorus")) {
xcft_5->setText("cos(u+v)/(sqrt(2.)+cos(v-u))");
ycft_5->setText("sin(u+v)/(sqrt(2.)+cos(v-u))");
zcft_5->setText("sin(v-u)/(sqrt(2.)+cos(v-u))");
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("0") ;
umax_5->setText("pi") ;
vmin_5->setText("0") ;
vmax_5->setText("2*pi") ;
}
else if(choix == QString("Fresnel_1")) {
xcft_5->setText("cos(u)*cos(v)/(-2.*sqrt(0.965/3.-0.935/3.*((cos(u)^4+sin(u)^4)*cos(v)^4+sin(v)^4))*cos((acos(-(-0.941/6.+0.374*((cos(u)^4+sin(u)^4)*cos(v)^4+sin(v)^4)-1.309/6.*((cos(u)^6+sin(u)^6)*cos(v)^6+sin(v)^6)-1.221*cos(u)^2*cos(v)^4*sin(u)^2*sin(v)^2)/sqrt(0.965/3.-0.935/3.*((cos(u)^4+sin(u)^4)*cos(v)^4+sin(v)^4))^3)+pi)/3.)+0.8)");
ycft_5->setText("sin(u)*cos(v)/(-2.*sqrt(0.965/3.-0.935/3.*((cos(u)^4+sin(u)^4)*cos(v)^4+sin(v)^4))*cos((acos(-(-0.941/6.+0.374*((cos(u)^4+sin(u)^4)*cos(v)^4+sin(v)^4)-1.309/6.*((cos(u)^6+sin(u)^6)*cos(v)^6+sin(v)^6)-1.221*cos(u)^2*cos(v)^4*sin(u)^2*sin(v)^2)/sqrt(0.965/3.-0.935/3.*((cos(u)^4+sin(u)^4)*cos(v)^4+sin(v)^4))^3)+pi)/3.)+0.8)");
zcft_5->setText("sin(v)/(-2.*sqrt(0.965/3.-0.935/3.*((cos(u)^4+sin(u)^4)*cos(v)^4+sin(v)^4))*cos((acos(-(-0.941/6.+0.374*((cos(u)^4+sin(u)^4)*cos(v)^4+sin(v)^4)-1.309/6.*((cos(u)^6+sin(u)^6)*cos(v)^6+sin(v)^6)-1.221*cos(u)^2*cos(v)^4*sin(u)^2*sin(v)^2)/sqrt(0.965/3.-0.935/3.*((cos(u)^4+sin(u)^4)*cos(v)^4+sin(v)^4))^3)+pi)/3.)+0.8)") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("0") ;
umax_5->setText("2*pi") ;
vmin_5->setText("-pi/2") ;
vmax_5->setText("pi/2") ;
}
else if(choix == QString("Fresnel_2")) {
xcft_5->setText("cos(u)*cos(v)/(-2.*sqrt(0.965/3.-0.935/3.*((cos(u)^4+sin(u)^4)*cos(v)^4+sin(v)^4))*cos((acos(-(-0.941/6.+0.374*((cos(u)^4+sin(u)^4)*cos(v)^4+sin(v)^4)-1.309/6.*((cos(u)^6+sin(u)^6)*cos(v)^6+sin(v)^6)-1.221*cos(u)^2*cos(v)^4*sin(u)^2*sin(v)^2)/sqrt(0.965/3.-0.935/3.*((cos(u)^4+sin(u)^4)*cos(v)^4+sin(v)^4))^3)-pi)/3.)+0.8)");
ycft_5->setText("sin(u)*cos(v)/(-2.*sqrt(0.965/3.-0.935/3.*((cos(u)^4+sin(u)^4)*cos(v)^4+sin(v)^4))*cos((acos(-(-0.941/6.+0.374*((cos(u)^4+sin(u)^4)*cos(v)^4+sin(v)^4)-1.309/6.*((cos(u)^6+sin(u)^6)*cos(v)^6+sin(v)^6)-1.221*cos(u)^2*cos(v)^4*sin(u)^2*sin(v)^2)/sqrt(0.965/3.-0.935/3.*((cos(u)^4+sin(u)^4)*cos(v)^4+sin(v)^4))^3)-pi)/3.)+0.8)");
zcft_5->setText("sin(v)/(-2.*sqrt(0.965/3.-0.935/3.*((cos(u)^4+sin(u)^4)*cos(v)^4+sin(v)^4))*cos((acos(-(-0.941/6.+0.374*((cos(u)^4+sin(u)^4)*cos(v)^4+sin(v)^4)-1.309/6.*((cos(u)^6+sin(u)^6)*cos(v)^6+sin(v)^6)-1.221*cos(u)^2*cos(v)^4*sin(u)^2*sin(v)^2)/sqrt(0.965/3.-0.935/3.*((cos(u)^4+sin(u)^4)*cos(v)^4+sin(v)^4))^3)-pi)/3.)+0.8)") ;
wcft_5->setText("cos(u)") ;
tcft_5->setText("cos(u)") ;
umin_5->setText("0") ;
umax_5->setText("2*pi") ;
vmin_5->setText("-pi/2") ;
vmax_5->setText("pi/2") ;
}
connectWidget2->objet->fivedimshapes = 1;
connectWidget2->objet->expression_X = xcft_5->text();
connectWidget2->objet->expression_Y = ycft_5->text();
connectWidget2->objet->expression_Z = zcft_5->text();
connectWidget2->objet->expression_W = wcft_5->text();
connectWidget2->objet->expression_T = tcft_5->text();
connectWidget2->objet->inf_u = umin_5->text();
connectWidget2->objet->sup_u = umax_5->text();
connectWidget2->objet->inf_v = vmin_5->text();
connectWidget2->objet->sup_v = vmax_5->text();
/// Set the right Window for drawing :
tabsurf->setCurrentPage(0);
if(paramwidgetstack == 1) glboxclicked();
//Process the new surface :
ParametricSurfaceProcess();
}
//====================================
void k3dsurface::isopage_selected( const QString & choice )
{
int current_pag = tabsurf->currentPageIndex();
if (choice =="Parametric") {
if(tabsurf->currentPageIndex() == 1) {
ParametricSurfaceProcess();
ParametricSurfaceProcess(); }} //that's a bug...
else if (choice =="IsoSurface") {
if(tabsurf->currentPageIndex() != 1) {
ProcessNewIsoSurface( );
ProcessNewIsoSurface( ); }} //that's a bug...
else if(choice =="ND") {
if(current_pag != 0) tabsurf->setCurrentPage(0);
if(paramwidgetstack == 1) glboxclicked();
}
/*
else if(choice == "Options") {
typecolor(color->currentItem ());
}*/
}
//====================================
void k3dsurface::tabWidget7_selected( const QString & )
{ int current_pag = tabWidget7->currentPageIndex();
if(current_pag == 0) { tabsurf->setCurrentPage(0);
if(paramwidgetstack != 1) glboxclicked();
}
else { tabsurf->setCurrentPage(1);
if(isowidgetstack != 1) isogl_clicked();
}
}
//====================================
void k3dsurface::add_condt_clicked()
{
isoWidget->IsoObjet->CNDDraw*= -1;
IsoGlWidget->cnd();
IsoPageUpdate();
}
//====================================
void k3dsurface::cndmesh_clicked()
{
isoWidget->IsoObjet->CNDMesh*= -1;
IsoGlWidget->cndmesh();
IsoPageUpdate();
}
//====================================
void k3dsurface::border_clicked()
{
isoWidget->IsoObjet->BorderDraw*= -1;
IsoGlWidget->drawborder();
IsoPageUpdate();
}
//====================================
void k3dsurface::parametrics_clicked()
{
implicit_param = 1; implicit_spheric = -1; implicit_cylindric = -1;
//implicit->setText("F(x,y,z,t) =");
}
//====================================
void k3dsurface::spherics_clicked()
{
implicit_param = -1; implicit_spheric = 1; implicit_cylindric = -1;
//implicit->setText("F(R,u,v,t) =");
}
///====================================///
void k3dsurface::sylindrics_clicked()
{
implicit_param = -1; implicit_spheric = -1; implicit_cylindric = 1;
//implicit->setText("F(R,Z,u,t) =");
}
///====================================///
void k3dsurface::tabsurf_selected( const QString & )
{
}
///====================================///
int nb_lig=24, nb_col=24, old_nb_lig=0,
old_nb_col=0, coupure_lig=0, coupure_col=0,
old_coupure_lig=0, old_coupure_col=0;
///====================================///
void k3dsurface::MakeACopy() {
int i, j, k, l;
nb_lig = ParamGlWidget->nb_ligne = connectWidget2->objet->nb_ligne;
nb_col = ParamGlWidget->nb_colone = connectWidget2->objet->nb_colone;
coupure_col = ParamGlWidget->coupure_col = connectWidget2->objet->coupure_col;
coupure_lig = ParamGlWidget->coupure_ligne = connectWidget2->objet->coupure_ligne;
ParamGlWidget->PolyNumber = 4*(nb_lig - coupure_lig -1)*(nb_col -coupure_col -1);
ParamGlWidget->VertexNumber = 6*nb_col*nb_lig;
/// generation of the Normals-Vertex Array :
l=0;
for (i=0; i< nb_lig; i++)
for (j=0; j< nb_col; j++) {
ParamGlWidget->LocalScene.ArrayNorVer_localPt[l ] = connectWidget2->objet->Nor2[3*i ][j];
ParamGlWidget->LocalScene.ArrayNorVer_localPt[l+1] = connectWidget2->objet->Nor2[3*i+1][j];
ParamGlWidget->LocalScene.ArrayNorVer_localPt[l+2] = connectWidget2->objet->Nor2[3*i+2][j];
ParamGlWidget->LocalScene.ArrayNorVer_localPt[l+3] = connectWidget2->objet->Tre2[3*i ][j];
ParamGlWidget->LocalScene.ArrayNorVer_localPt[l+4] = connectWidget2->objet->Tre2[3*i+1][j];
ParamGlWidget->LocalScene.ArrayNorVer_localPt[l+5] = connectWidget2->objet->Tre2[3*i+2][j];
l+=6;
}
/// generation of the Index Array :
k=0;
for (i=0; i< nb_lig - coupure_lig -1; i++)
for (j=0; j< nb_col - coupure_col -1; j++) {
ParamGlWidget->PolyIndices_local[k ] = i*nb_col+ j;
ParamGlWidget->PolyIndices_local[k+1] = (i+1)*nb_col + j;
ParamGlWidget->PolyIndices_local[k+2] = (i+1)*nb_col + (j+1);
ParamGlWidget->PolyIndices_local[k+3] = i*nb_col + (j+1);
k+=4;
}
}
///====================================///
void k3dsurface::tabsurf_currentChanged( QWidget * /*glw*/ )
{/*
static int previousWindow = 0; //Parametric Window
QString name = glw->name();
if(name == QString("GLPage")) {
if(previousWindow == 0){
connectWidget2->objet->SpecialMorph_2(ParamGlWidget->ArrayNorVer_local, ParamGlWidget->PolyIndices_local, ParamGlWidget->NbPolygnNbVertex, 1);
ParamGlWidget->PolyNumber = connectWidget2->objet->NbPolygn;
ParamGlWidget->initializeGL();
ParamGlWidget->TypeTriangle = -1;
}
else if(previousWindow ==1){
isoWidget->IsoObjet->SpecialMorph_2(ParamGlWidget->ArrayNorVer_local, ParamGlWidget->PolyIndices_local, ParamGlWidget->NbPolygnNbVertex, 1);
ParamGlWidget->initializeGL();
ParamGlWidget->PolyNumber = 3*isoWidget->IsoObjet->NbTriangleIsoSurface;
ParamGlWidget->TypeTriangle = 1;
}
ParamGlWidget->updateGL();}
else if(name == QString("IsoPage")) {previousWindow =1; isoWidget->IsoMorphCompute();}
else if(name == QString("ParaPage")) {previousWindow =0; connectWidget2->valueChanged();}*/
}
///====================================///
void k3dsurface::DrawInOpenGlArea() {
MakeACopy();
ParamGlWidget->initializeGL();
ParamGlWidget->updateGL();
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::UpdateActivatedWin()
{
if( paramwidgetstack == 1) ParamGlWidget->updateGL();
else connectWidget2->update();
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::cutline_valueChanged(int ctline )
{
connectWidget2->objet->coupure_ligne = ParamGlWidget->coupure_ligne = ctline;
ParamGlWidget->CutLineIndex(ctline);
UpdateActivatedWin();
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::cutcolumn_valueChanged( int ctcl)
{
connectWidget2->objet->coupure_col = ParamGlWidget->coupure_col = ctcl;
ParamGlWidget->CutColIndex(ctcl);
UpdateActivatedWin();
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::mesh_clicked()
{
connectWidget2->objet->mesh *= -1;
ParamGlWidget->meshOk();
UpdateActivatedWin();
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::box_clicked()
{
connectWidget2->objet->box *= -1;
ParamGlWidget->boxOk();
UpdateActivatedWin();
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::infos_clicked()
{
connectWidget2->objet->infos *= -1;
ParamGlWidget->infosOk();
UpdateActivatedWin();
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::inter_clicked()
{
connectWidget2->objet->interior_surface *= -1;
ParamGlWidget->backSurf();
UpdateActivatedWin();
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::exter_clicked()
{
connectWidget2->objet->exterior_surface *= -1;
ParamGlWidget->frontSurf();
UpdateActivatedWin();
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::Axes_ok_clicked()
{
connectWidget2->objet->drawaxes_ok *= -1;
ParamGlWidget->axeOk();
UpdateActivatedWin();
int current_pag = tabsurf->currentPageIndex();
if(current_pag != 0) tabsurf->setCurrentPage(0);
if( paramwidgetstack == 1) ParamGlWidget->updateGL();
else connectWidget2->valueChanged();
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::draw_norm_clicked()
{
connectWidget2->objet->draw_poly_normals *= -1;
ParamGlWidget->normOk();
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::linecolumn_valueChanged( int cl)
{
connectWidget2->objet->nb_licol = cl;
connectWidget2->objet->nb_colone = ParamGlWidget->nb_colone = cl;
connectWidget2->objet->nb_ligne = ParamGlWidget->nb_ligne = cl;
/// process the new surface only if Gl window is active
ParametricSurfaceProcess();
/*
if(current_pag ==2){
connectWidget2->objet->SpecialMorph_2(ParamGlWidget->ArrayNorVer_local, ParamGlWidget->PolyIndices_local, ParamGlWidget->NbPolygnNbVertex, 1);
ParamGlWidget->initializeGL();
ParamGlWidget->TypeTriangle = -1;
ParamGlWidget->updateGL();
}
else if(current_pag == 0) {
connectWidget2->objet->fct_bouton_Morph3();
connectWidget2->update();
}
*/
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::latency2_valueChanged( int lat)
{
connectWidget2->objet->latence = connectWidget2->latence = lat;
ParamGlWidget->restarttimer(lat);
IsoGlWidget->restarttimer(lat);
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::xg_valueChanged( int cl)
{
isoWidget->IsoObjet->nb_ligne = cl;
IsoGlWidget->isoline = cl;
// process the new surface
ProcessNewIsoSurface( );
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::yg_valueChanged( int cl)
{
isoWidget->IsoObjet->nb_colon = cl;
IsoGlWidget->isocolumn = cl;
// process the new surface
ProcessNewIsoSurface( );
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::zg_valueChanged( int cl)
{
isoWidget->IsoObjet->nb_depth = cl;
IsoGlWidget->isodepth = cl;
// process the new surface
ProcessNewIsoSurface( );
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::DrawIso( )
{ int current_pag = tabsurf->currentPageIndex();
if(current_pag == 2) {
isoWidget->IsoObjet->SpecialMorph_2(
IsoGlWidget->LocalScene.ArrayNorVer_localPt,
IsoGlWidget->PolyIndices_local,
IsoGlWidget->NbPolygnNbVertex,
IsoGlWidget->TypeIsoSurfaceTriangleListeCND,
&(IsoGlWidget->VertexNumber),
1,
IsoGlWidget->LocalScene.PolyIndices_localPtMin,
&(IsoGlWidget->LocalScene.NbPolygnNbVertexPtMin));
ParamGlWidget->initializeGL();
ParamGlWidget->PolyNumber = 3*isoWidget->IsoObjet->NbTriangleIsoSurface;
ParamGlWidget->updateGL();
}
else if(current_pag == 1) {
isoWidget->IsoMorphCompute();
isoWidget->update();
}
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::isogl_clicked(){
isowidgetstack *=-1;
isowidgetstack == 1 ? IsoWidgetStack->raiseWidget ( 0 ) : IsoWidgetStack->raiseWidget ( 1 );
if(isowidgetstack == 1 ) {
//glisobutton->setText("OpenGL \n (ON)") ;
tabsurf->setTabLabel (IsoPage, "IsoSurface (OpenGL ON)");
morphanimgroupBox->setEnabled(TRUE); }
else {
//glisobutton->setText("OpenGL \n (OFF)");
tabsurf->setTabLabel (IsoPage, "IsoSurface (OpenGL OFF)");
morphanimgroupBox->setEnabled(FALSE);
if (isoWidget->IsoObjet->nb_depth >29 ||
isoWidget->IsoObjet->nb_colon >29 ||
isoWidget->IsoObjet->nb_ligne >29 )
isoWidget->IsoObjet->nb_depth = isoWidget->IsoObjet->nb_colon = isoWidget->IsoObjet->nb_ligne = 26;
xyzg->setValue(26);
}
// process the new surface:
//ProcessNewIsoSurface( );
//ProcessNewIsoSurface( ); // That's a bug...
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::IsoPageUpdate()
{ int current_pag = tabsurf->currentPageIndex();
if(current_pag !=1) tabsurf->setCurrentPage(1);
if(isowidgetstack == 1) IsoGlWidget->updateGL();
else isoWidget->update();
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::IsoLine_clicked()
{
IsoGlWidget->lineOk();
isoWidget->lineOk();
/// Update Iso page :
IsoPageUpdate();
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::isoaxe_clicked()
{
IsoGlWidget->axeOk();
isoWidget->Axes_draw();
/// Update Iso page :
IsoPageUpdate();
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::glboxclicked()
{ paramwidgetstack *= -1;
paramwidgetstack == 1 ? ParaWidgetStack->raiseWidget ( 0 ) : ParaWidgetStack->raiseWidget ( 1 );
if(paramwidgetstack == 1) {
glparbutton->setText("OpenGL\n(ON)") ;
ParaPage->setCaption("Parametric (OpenGL ON)") ;
tabsurf->setTabLabel (ParaPage, "Parametric (OpenGL ON)");
}
else {
glparbutton->setText("OpenGL\n(OFF)");
tabsurf->setTabLabel (ParaPage, "Parametric (OpenGL OFF)");
}
// process the new surface
ParametricSurfaceProcess();
ParametricSurfaceProcess(); // That's a bug...
}
//========================================//
void k3dsurface::step_morph(int cl)
{
/*
QMessageBox message ;
if(ParamGlWidget->timeractif()) {
message.setText("Stop Parametric OpenGl Animation");
message.adjustSize () ;
message.exec();
tstep->setValue(NbStep);
return;
}
if(IsoGlWidget->timeractif()) {
message.setText("Stop Isosurface OpenGl Animation");
message.adjustSize () ;
message.exec();
tstep->setValue(NbStep);
return;
}
*/
NbStep =cl;
connectWidget2->step_morph(cl);
}
//========================================/
void k3dsurface::secondsystativation_clicked()
{
connectWidget2->objet->two_system *= -1;
}
//========================================/
void k3dsurface::checkBox240_clicked()
{
int current_pag = tabsurf->currentPageIndex();
if(current_pag == 0) ParamGlWidget->smoothpoly();
else if (current_pag == 1) IsoGlWidget->smoothpoly();
}
//========================================/
void k3dsurface::checkBox241_clicked()
{
int current_pag = tabsurf->currentPageIndex();
if(current_pag == 0) ParamGlWidget->smoothline();
else if (current_pag == 1) IsoGlWidget->smoothline();
}
//========================================/
void k3dsurface::FogBox_clicked()
{
int current_pag = tabsurf->currentPageIndex();
if(current_pag == 0) ParamGlWidget->fog();
else if (current_pag == 1) IsoGlWidget->fog();
}
//========================================/
void k3dsurface::PlanBox_clicked()
{
int current_pag = tabsurf->currentPageIndex();
if(current_pag == 0) ParamGlWidget->plan();
else if (current_pag == 1) IsoGlWidget->plan();
}
//========================================/
void k3dsurface::comboBox18_activated( int ch )
{
if ( ch ==0) checkBox240_clicked();
else if (ch == 1) checkBox241_clicked();
else if (ch == 2) PlanBox_clicked();
else if (ch == 3) FogBox_clicked();
}
//========================================/
void k3dsurface::screenshot_clicked()
{ int current_pag = tabsurf->currentPageIndex();
if(current_pag == 0)
paramwidgetstack == 1 ? ParamGlWidget->screenshot() : connectWidget2->screenshot();
else if(current_pag == 1)
isowidgetstack == 1 ? IsoGlWidget->screenshot() : isoWidget->screenshot();
}
//========================================/
void k3dsurface::quality_valueChanged( int cl)
{
IsoGlWidget->quality(cl);
ParamGlWidget->quality(cl);
isoWidget->quality(cl);
connectWidget2->quality(cl);
}
//========================================/
void k3dsurface::png_clicked()
{
IsoGlWidget->png();
ParamGlWidget->png();
isoWidget->png();
connectWidget2->png();
}
//========================================/
void k3dsurface::bmp_clicked()
{
IsoGlWidget->bmp();
ParamGlWidget->bmp();
isoWidget->bmp();
connectWidget2->bmp();
}
//========================================/
void k3dsurface::jpg_clicked()
{
IsoGlWidget->jpg();
ParamGlWidget->jpg();
isoWidget->jpg();
connectWidget2->jpg();
}
///++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::UpdateIsoWin()
{
if( isowidgetstack == 1) IsoGlWidget->updateGL();
else isoWidget->update();
}
//========================================/
void k3dsurface::xyzg_valueChanged( int cl)
{
if(isowidgetstack == -1) {
if( cl < 30) {
isoWidget->IsoObjet->nb_depth = isoWidget->IsoObjet->nb_colon = isoWidget->IsoObjet->nb_ligne = cl;
IsoGlWidget->isoline = IsoGlWidget->isocolumn = IsoGlWidget->isodepth = cl;
// process the new surface
if(xyzactivated == 1) ProcessNewIsoSurface( );
}
}
else {
isoWidget->IsoObjet->nb_depth = isoWidget->IsoObjet->nb_colon = isoWidget->IsoObjet->nb_ligne = cl;
IsoGlWidget->isoline = IsoGlWidget->isocolumn = IsoGlWidget->isodepth = cl;
// process the new surface
if(xyzactivated == 1) ProcessNewIsoSurface( );
else IsoGlWidget->updateGL();
}
}
//========================================/
void k3dsurface::xyzg_2_valueChanged( int cl)
{
isoWidget->IsoObjet->CutDepth = isoWidget->IsoObjet->CutColon = isoWidget->IsoObjet->CutLigne = cl;
IsoGlWidget->cpisoline = IsoGlWidget->cpisocolumn = IsoGlWidget->cpisodepth = cl;
// process the new surface
ProcessNewIsoSurface( );
}
//========================================/
void k3dsurface::xg_2_valueChanged( int cl)
{
isoWidget->IsoObjet->CutLigne = cl;
IsoGlWidget->cpisoline = cl;
// process the new surface
ProcessNewIsoSurface( );
}
//========================================/
void k3dsurface::yg_2_valueChanged( int cl)
{
isoWidget->IsoObjet->CutColon = cl;
IsoGlWidget->cpisocolumn = cl;
// process the new surface
ProcessNewIsoSurface( );
}
//========================================/
void k3dsurface::zg_2_valueChanged( int cl)
{
isoWidget->IsoObjet->CutDepth = cl;
IsoGlWidget->cpisodepth = cl;
// process the new surface
ProcessNewIsoSurface( );
}
//========================================/
void k3dsurface::scalexvalue_valueChanged( int n)
{
connectWidget2->objet->scalex(n);
//UpdateActivatedWin();
ParametricSurfaceProcess();
}
//========================================/
void k3dsurface::scaleyvalue_valueChanged( int n)
{
connectWidget2->objet->scaley(n);
//UpdateActivatedWin();
ParametricSurfaceProcess();
}
//========================================/
void k3dsurface::scalezvalue_valueChanged( int n)
{
connectWidget2->objet->scalez(n);
//UpdateActivatedWin();
ParametricSurfaceProcess();
}
//========================================/
void k3dsurface::scrollBar81_3_valueChanged( int n)
{
connectWidget2->nbtwistex_changed(n);
//UpdateActivatedWin();
ParametricSurfaceProcess();
}
//========================================/
void k3dsurface::scrollBar20_3_valueChanged( int n)
{
connectWidget2->coeffrayonx_changed(n);
//UpdateActivatedWin();
ParametricSurfaceProcess();
}
//========================================/
void k3dsurface::scrollBar81_2_valueChanged( int n)
{
connectWidget2->nbtwistey_changed(n);
//UpdateActivatedWin();
ParametricSurfaceProcess();
}
//========================================/
void k3dsurface::scrollBar20_2_valueChanged( int n)
{
connectWidget2->coeffrayony_changed(n);
//UpdateActivatedWin();
ParametricSurfaceProcess();
}
//========================================/
void k3dsurface::scrollBar81_valueChanged( int n)
{
connectWidget2->nbtwistez_changed(n);
//UpdateActivatedWin();
ParametricSurfaceProcess();
}
//========================================/
void k3dsurface::scrollBar20_valueChanged( int n)
{
connectWidget2->coeffrayonz_changed(n);
//UpdateActivatedWin();
ParametricSurfaceProcess();
}
//========================================/
void k3dsurface::scalexvalue_2_valueChanged( int n)
{
isoWidget->IsoObjet->scalex(n);
//IsoPageUpdate();
ProcessNewIsoSurface( );
}
//========================================/
void k3dsurface::scaleyvalue_2_valueChanged( int n)
{
isoWidget->IsoObjet->scaley(n);
//IsoPageUpdate();
ProcessNewIsoSurface( );
}
//========================================/
void k3dsurface::scalezvalue_2_valueChanged( int n)
{
isoWidget->IsoObjet->scalez(n);
//IsoPageUpdate();
ProcessNewIsoSurface( );
}
//========================================/
void k3dsurface::scrollBar81_3_2_valueChanged( int n)
{
isoWidget->nbtwistex_changed(n);
ProcessNewIsoSurface( );
}
//========================================/
void k3dsurface::scrollBar81_2_2_valueChanged( int n)
{
isoWidget->nbtwistey_changed(n);
ProcessNewIsoSurface( );
}
//========================================/
void k3dsurface::scrollBar81_4_valueChanged( int n)
{
isoWidget->nbtwistez_changed(n);
ProcessNewIsoSurface( );
}
//========================================/
void k3dsurface::scrollBar81_4_valueChanged2( )
{
ProcessNewIsoSurface( );
}
//========================================/
void k3dsurface::anim_2_toggle()
{
anim_2->toggle();
}
void k3dsurface::morph_2_toggle(){morph_2->toggle();};
void k3dsurface::Isomesh_toggle(){Isomesh->toggle();};
void k3dsurface::IsoLine_toggle(){IsoLine->toggle();};
void k3dsurface::isoinfos_toggle(){isoinfos->toggle();};
void k3dsurface::isoaxe_toggle(){isoaxe->toggle();};
void k3dsurface::mesh_toggle(){mesh->toggle();};
void k3dsurface::Axes_ok_toggle(){Axes_ok->toggle();};
void k3dsurface::box_toggle(){box->toggle();};
void k3dsurface::infos_toggle(){infos->toggle();};
void k3dsurface::draw_norm_toggle(){draw_norm->toggle();};
void k3dsurface::anim_toggle(){anim->toggle();};
void k3dsurface::morph_toggle(){morph->toggle();};
void k3dsurface::exter_toggle(){exter->toggle();};
///++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++///
void k3dsurface::pushButton69_clicked()
{
/*
/// IsoSurface Page :
drawingoptions *newpanl = new drawingoptions();
connect( newpanl->xyzg, SIGNAL( valueChanged(int) ), this, SLOT(xyzg_valueChanged(int)));
connect( newpanl->xg, SIGNAL( valueChanged(int) ), this, SLOT(xg_valueChanged(int)));
connect( newpanl->yg, SIGNAL( valueChanged(int) ), this, SLOT(yg_valueChanged(int)));
connect( newpanl->zg, SIGNAL( valueChanged(int) ), this, SLOT(zg_valueChanged(int)));
connect( newpanl->xyzg_2, SIGNAL( valueChanged(int) ), this, SLOT(xyzg_2_valueChanged(int)));
connect( newpanl->xg_2, SIGNAL( valueChanged(int) ), this, SLOT(xg_2_valueChanged(int)));
connect( newpanl->yg_2, SIGNAL( valueChanged(int) ), this, SLOT(yg_2_valueChanged(int)));
connect( newpanl->zg_2, SIGNAL( valueChanged(int) ), this, SLOT(zg_2_valueChanged(int)));
connect( newpanl->comboBox18_3, SIGNAL(activated(int) ), this, SLOT(comboBox18_3_activated(int)));
/// Parametric Page :
connect( newpanl->cutline, SIGNAL( valueChanged(int) ), this, SLOT(cutline_valueChanged(int)));
connect( newpanl->cutcolumn, SIGNAL( valueChanged(int) ), this, SLOT(cutcolumn_valueChanged(int)));
connect( newpanl->linecolumn, SIGNAL( valueChanged(int) ), this, SLOT(linecolumn_valueChanged(int)));
connect( newpanl->comboBox18_2, SIGNAL(activated(int) ), this, SLOT(comboBox18_2_activated(int)));
/// Color/OpenGL :
connect( newpanl->color, SIGNAL( activated(int) ), this, SLOT(typecolor(int)));
connect( newpanl->red, SIGNAL( valueChanged(int) ), this, SLOT(redcl(int)));
connect( newpanl->green, SIGNAL( valueChanged(int) ), this, SLOT(greencl(int)));
connect( newpanl->blue, SIGNAL( valueChanged(int) ), this, SLOT(bluecl(int)));
connect( newpanl->transparence, SIGNAL( clicked() ), this, SLOT(transparencecl()));
connect( newpanl->transparence, SIGNAL( clicked() ), this, SLOT(transparence->toggle()));
connect( newpanl->comboBox18, SIGNAL( activated(int) ), this, SLOT(comboBox18_activated(int)));
/// Lunch the Panel :
newpanl->show();
*/
}
//==================================================/
void k3dsurface::comboBox18_2_activated( int ch )
{
if (ch == 0) {mesh_clicked(); mesh->toggle();}
else if (ch == 1) {Axes_ok_clicked(); Axes_ok->toggle();}
else if (ch == 2) {box_clicked(); box->toggle();}
else if (ch == 3) {infos_clicked(); infos->toggle();}
else if (ch == 4) {draw_norm_clicked(); draw_norm->toggle();}
else if (ch == 5) {exter_clicked(); exter->toggle();}
else if (ch == 6) {anim_verify_rot4d(); anim->toggle();}
else if (ch == 7) {morph_verify_rot4d(); morph->toggle();}
}
//==================================================/
void k3dsurface::comboBox18_3_activated( int ch )
{
if (ch == 0) {iso_mesh(); Isomesh->toggle();}
else if (ch == 1) {IsoLine_clicked(); IsoLine->toggle();}
else if (ch == 2) {iso_infos(); isoinfos->toggle();}
else if (ch == 3) {isoaxe_clicked(); isoaxe->toggle();}
else if (ch == 4) {AnimIso(); anim_2->toggle();}
else if (ch == 5) {IsoMorph(); morph_2->toggle();}
}
//==================================================/
void k3dsurface::checkBox73_pressed()
{
xyzactivated *= -1;
if(xyzactivated == 1) ProcessNewIsoSurface( );
}
//==================================================/
void k3dsurface::Drawiso( ) {
int nb_equations = RootObjet.pariso.EquationsNumber, i;
QStringList listeEquations;
static int start_equations = 0;
for(i =start_equations; i<nb_equations; i++) listeEquations << RootObjet.pariso.FunctionsNames[i];
IsoImplicitBox->insertStringList(listeEquations, IsoImplicitBox->currentItem());
implicitfunct->setText(RootObjet.pariso.FunctionsEquations[start_equations]);
if(RootObjet.pariso.FunctionsConditions[start_equations] != "") Isocondition->setText(RootObjet.pariso.FunctionsConditions[start_equations]);
minxlimit->setText(RootObjet.pariso.xlimitinfsup[0][start_equations]);
minylimit->setText(RootObjet.pariso.ylimitinfsup[0][start_equations]);
minzlimit->setText(RootObjet.pariso.zlimitinfsup[0][start_equations]);
maxxlimit->setText(RootObjet.pariso.xlimitinfsup[1][start_equations]);
maxylimit->setText(RootObjet.pariso.ylimitinfsup[1][start_equations]);
maxzlimit->setText(RootObjet.pariso.zlimitinfsup[1][start_equations]);
start_equations = nb_equations;
textLabel1_14_4->setText("Examples ("+QString::number(IsoImplicitBox->count() + 1)+")");
///Process New Surface :
PerformNewImplicitFunct();
}
//==================================================/
void k3dsurface::DrawisoTool( ) {
implicitfunct_2->setText(RootObjet.pariso.FunctionsEquations[0]);
minxlimit_2->setText(RootObjet.pariso.xlimitinfsup[0][0]);
minylimit_2->setText(RootObjet.pariso.ylimitinfsup[0][0]);
minzlimit_2->setText(RootObjet.pariso.zlimitinfsup[0][0]);
maxxlimit_2->setText(RootObjet.pariso.xlimitinfsup[1][0]);
maxylimit_2->setText(RootObjet.pariso.ylimitinfsup[1][0]);
maxzlimit_2->setText(RootObjet.pariso.zlimitinfsup[1][0]);
///Process New Surface :
PerformNewToolsImplicitFunct_2();
}
//==================================================/
void k3dsurface::isoloadbutton_clicked()
{
QString filename = QFileDialog::getOpenFileName(
"",
tr("k3dsurf files (*.k3ds)"),
this,
"open file dialog",
tr("Please choose the k3dsurf script") );
if (filename.length()){
RootObjet.LoadScript(filename, 1);
Drawiso();
}
}
//==================================================/
void k3dsurface::LoadIso_clicked()
{
QString filename = QFileDialog::getOpenFileName(
"",
tr("k3dsurf files (*.k3ds)"),
this,
"open file dialog",
tr("Please choose the k3dsurf script") );
if (filename.length()){
RootObjet.LoadScript(filename, 1);
DrawisoTool();
}
}
//==================================================/
void k3dsurface::cleanbutton_clicked()
{
xcft->setText("");
ycft->setText("");
zcft->setText("");
umin->setText("");
vmin->setText("");
umax->setText("");
vmax->setText("");
}
//==================================================/
void k3dsurface::Drawparam ( ) {
xcft->setText(RootObjet.pariso.XFunctionsEquations[0]);
ycft->setText(RootObjet.pariso.YFunctionsEquations[0]);
zcft->setText(RootObjet.pariso.ZFunctionsEquations[0]);
umin->setText(RootObjet.pariso.ulimitinfsup[0][0]);
vmin->setText(RootObjet.pariso.vlimitinfsup[0][0]);
umax->setText(RootObjet.pariso.ulimitinfsup[1][0]);
vmax->setText(RootObjet.pariso.vlimitinfsup[1][0]);
// process the new surface
perform();
}
//==================================================/
void k3dsurface::Drawtoolparam( ) {
xtool->setText(RootObjet.pariso.XFunctionsEquations[0]);
ytool->setText(RootObjet.pariso.YFunctionsEquations[0]);
ztool->setText(RootObjet.pariso.ZFunctionsEquations[0]);
umin_tools->setText(RootObjet.pariso.ulimitinfsup[0][0]);
vmin_tools->setText(RootObjet.pariso.vlimitinfsup[0][0]);
umax_tools->setText(RootObjet.pariso.ulimitinfsup[1][0]);
vmax_tools->setText(RootObjet.pariso.vlimitinfsup[1][0]);
///Process New Surface :
reset_changes();
}
//==================================================/
void k3dsurface::cleanpara_clicked()
{
xtool->setText("");
ytool->setText("");
ztool->setText("");
umin_tools->setText("");
vmin_tools->setText("");
umax_tools->setText("");
vmax_tools->setText("");
}
//==================================================/
void k3dsurface::paraloadbutton_clicked()
{
QString filename = QFileDialog::getOpenFileName(
"",
tr("k3dsurf files (*.k3ds)"),
this,
"open file dialog",
tr("Please choose the k3dsurf script") );
if (filename.length()){
RootObjet.LoadScript(filename, 2);
Drawparam();
}
}
//==================================================/
void k3dsurface::loadpara_clicked()
{
QString filename = QFileDialog::getOpenFileName(
"",
tr("k3dsurf files (*.k3ds)"),
this,
"open file dialog",
tr("Please choose the k3dsurf script") );
if (filename.length()){
RootObjet.LoadScript(filename, 2);
Drawtoolparam();
}
}
//==================================================/
int IsoMeshOption = 0;
void k3dsurface::checkBox74_clicked()
{
isoWidget->IsoObjet->SetMiniMmeshStructStream(isomeshgridname->text(), IsoMeshOption);
}
//==================================================/
void k3dsurface::checkBox75_clicked()
{ /* double maxgr = (isomaxgrid_2->text()).toDouble();
isoWidget->IsoObjet->SetMinimuMmeshSize(maxgr);*/
}
//==================================================/
void k3dsurface::radioButton8_clicked()
{
IsoMeshOption = 0;
}
//==================================================/
void k3dsurface::radioButton9_clicked()
{
IsoMeshOption = 1;
}
//==================================================/
void k3dsurface::radioButton10_clicked()
{
IsoMeshOption = 2;
}
//==================================================/
void k3dsurface::radioButton11_clicked()
{
IsoMeshOption = 3;
}
//==================================================/
void k3dsurface::isobox_clicked()
{
IsoGlWidget->isoboxOk();
UpdateActivatedWin();
}
//==================================================/
void k3dsurface::activate_heightspeed_clicked()
{
isoWidget->IsoObjet->ActivateHeightSpeedCalculations *= -1;
if(isoWidget->IsoObjet->ActivateHeightSpeedCalculations == 1)
groupBox47->setEnabled(TRUE);
else groupBox47->setEnabled(FALSE);
}
//==================================================/
void k3dsurface::pushButton71_clicked()
{ QMessageBox message ;
int maxgr = (isomaxgrid->text()).toInt();
if( maxgr > 500 || maxgr <4) {
message.setText(tr(QString("Resolution should be 4 < R < 500")));
message.adjustSize ();
message.exec();
}
else {
isoWidget->IsoObjet->setmaxgridto(maxgr);
xyzg->setMaxValue(maxgr);
isoWidget->IsoObjet->SpecialMorph_3(
IsoGlWidget->LocalScene.ArrayNorVer_localPt,
IsoGlWidget->PolyIndices_local,
IsoGlWidget->NbPolygnNbVertex,
IsoGlWidget->TypeIsoSurfaceTriangleListeCND,
&(IsoGlWidget->VertexNumber),
1);
IsoGlWidget->initializeGL();
IsoGlWidget->PolyNumber = 3*isoWidget->IsoObjet->NbTriangleIsoSurface;
IsoGlWidget->LocalScene.typedrawing = 1;
IsoGlWidget->updateGL();
}
}
//==================================================/
void k3dsurface::pushButton71_2_clicked() {
QMessageBox message ;
double maxtr = (isomaxtr->text()).toDouble(); maxtr *= 1000000.;
double maxpt = (isomaxpt->text()).toDouble(); maxpt *= 1000000.;
if(maxtr > 10000000. || maxpt > 10000000.) {
message.setText(tr(QString("Resolution should be < 10M")));
message.adjustSize ();
message.exec();
}
else {
isoWidget->IsoObjet->ChangeMaxResolution((int)maxtr, (int)maxpt);
IsoGlWidget->ChangeMaxResolution((int)maxtr, (int)maxpt);
}
}
//==================================================/
void k3dsurface::SetResolutionTo(int maxgrid, double maxtr1, double maxpt1) {
QMessageBox message ;
if(maxgrid >500) {
message.setText(tr(QString("Resolution should be < 10M")));
message.adjustSize ();
message.exec();
return;
}
double maxtr = maxtr1 * 1000000.;
double maxpt = maxpt1 * 1000000.;
if(maxtr > 10000000. || maxpt > 10000000.) {
message.setText(tr(QString("Resolution should be < 10M")));
message.adjustSize ();
message.exec();
}
else {
isoWidget->IsoObjet->ChangeMaxResolution((int)maxtr, (int)maxpt);
IsoGlWidget->ChangeMaxResolution((int)maxtr, (int)maxpt);
IsoGlWidget->updateGL();
}
}
//==================================================/
void k3dsurface::SetColorsTo(int *ColorsArray) {
IsoGlWidget->setColorsTo(ColorsArray);
ParamGlWidget->setColorsTo(&ColorsArray[12]);
}
//==================================================/
void k3dsurface::f_1_clicked()
{
FunctionParser fp;
QMessageBox message ;
fp.AddConstant("pi", 3.14159265);
int ret;
ret = fp.Parse(unaryfct_1->text(), "u");
if(ret >= 0)
{
message.setText(tr(QString("U1(u)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
f_1->toggle();
return ;
}
isoWidget->IsoObjet->U1 *= -1;
isoWidget->IsoObjet->UnaryU1 = unaryfct_1->text();
}
//==================================================/
void k3dsurface::f_2_clicked()
{
FunctionParser fp;
QMessageBox message ;
fp.AddConstant("pi", 3.14159265);
int ret;
ret = fp.Parse(unaryfct_2->text(), "u");
if(ret >= 0)
{
message.setText(tr(QString("U2(u)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
f_2->toggle();
return ;
}
isoWidget->IsoObjet->U2 *= -1;
isoWidget->IsoObjet->UnaryU2 = unaryfct_2->text();
}
//==================================================/
void k3dsurface::f_3_clicked()
{
FunctionParser fp;
QMessageBox message ;
fp.AddConstant("pi", 3.14159265);
int ret;
ret = fp.Parse(unaryfct_3->text(), "u");
if(ret >= 0)
{
message.setText(tr(QString("U3(u)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
f_3->toggle();
return ;
}
isoWidget->IsoObjet->U3 *= -1;
isoWidget->IsoObjet->UnaryU3 = unaryfct_3->text();
}
//==================================================/
void k3dsurface::f_4_clicked()
{
FunctionParser fp;
QMessageBox message ;
fp.AddConstant("pi", 3.14159265);
int ret;
ret = fp.Parse(binaryfct_1->text(), "u,v");
if(ret >= 0)
{
message.setText(tr(QString("B1(u,v)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
f_4->toggle();
return ;
}
isoWidget->IsoObjet->B1 *= -1;
isoWidget->IsoObjet->BinaryB1 = binaryfct_1->text();
}
//==================================================/
void k3dsurface::f_5_clicked()
{
FunctionParser fp;
QMessageBox message ;
fp.AddConstant("pi", 3.14159265);
int ret;
ret = fp.Parse(binaryfct_2->text(), "u,v");
if(ret >= 0)
{
message.setText(tr(QString("B2(u,v)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
f_5->toggle();
return ;
}
isoWidget->IsoObjet->B2 *= -1;
isoWidget->IsoObjet->BinaryB2 = binaryfct_2->text();
}
//==================================================/
void k3dsurface::f_6_clicked()
{
FunctionParser fp;
QMessageBox message ;
fp.AddConstant("pi", 3.14159265);
int ret;
ret = fp.Parse(binaryfct_3->text(), "u,v");
if(ret >= 0)
{
message.setText(tr(QString("B3(u,v)--> At col:")+
QString::number(ret)+QString("--> \n")+ fp.ErrorMsg()));
message.adjustSize () ;
message.exec();
f_6->toggle();
return ;
}
isoWidget->IsoObjet->B3 *= -1;
isoWidget->IsoObjet->BinaryB3 = binaryfct_3->text();
}
//==================================================/
void k3dsurface::unaryfct_1_textChanged( const QString & )
{
if( isoWidget->IsoObjet->U1 == 1) { isoWidget->IsoObjet->U1 *= -1; f_1->toggle();}
}
//==================================================/
void k3dsurface::unaryfct_2_textChanged( const QString & )
{
if( isoWidget->IsoObjet->U2 == 1) { isoWidget->IsoObjet->U2 *= -1; f_2->toggle();}
}
//==================================================/
void k3dsurface::unaryfct_3_textChanged( const QString & )
{
if( isoWidget->IsoObjet->U3 == 1) { isoWidget->IsoObjet->U3 *= -1; f_3->toggle();}
}
//==================================================/
void k3dsurface::binaryfct_1_textChanged( const QString & )
{
if( isoWidget->IsoObjet->B1 == 1) { isoWidget->IsoObjet->B1 *= -1; f_4->toggle();}
}
//==================================================/
void k3dsurface::binaryfct_2_textChanged( const QString & )
{
if( isoWidget->IsoObjet->B2 == 1) { isoWidget->IsoObjet->B2 *= -1; f_5->toggle();}
}
//==================================================/
void k3dsurface::binaryfct_3_textChanged( const QString & )
{
if( isoWidget->IsoObjet->B3 == 1) { isoWidget->IsoObjet->B3 *= -1; f_6->toggle();}
}
//==================================================/
void k3dsurface::cleanbutton_2_clicked()
{
implicitfunct->setText("");
}
//==================================================/
void k3dsurface::stoprun_clicked()
{
isoWidget->IsoObjet->stopcalculations();
}
//==================================================/
void k3dsurface::loadtexture_clicked()
{/*
QString filename = QFileDialog::getOpenFileName(
"",
tr("k3dsurf files (*.bmp)"),
this,
"open file dialog",
tr("Please choose the Image file") );
if (filename.length()){
int current_pag = tabsurf->currentPageIndex();
imagename->setText(filename);
current_pag == 0 ? ParamGlWidget->LoadImage(filename): IsoGlWidget->LoadImage(filename);
}
*/
}
//==================================================/
void k3dsurface::checkBox83_clicked()
{
int current_pag = tabsurf->currentPageIndex();
current_pag == 0 ? ParamGlWidget->ActivateTexture() : IsoGlWidget->ActivateTexture();
}
//==================================================/
void k3dsurface::isonorm_clicked()
{
IsoGlWidget->normOk();
}
//==================================================/
void k3dsurface::LoadConfig()
{
QString line;
QFile file( "K3DSurfConfig" );
if ( file.open( IO_ReadOnly ) ) {
QTextStream stream( &file );
while ( !stream.atEnd() ) {
line = stream.readLine(); // line of text excluding '\n'
if (!line.contains("#")) {
if (line.contains("ISOMAXPOINTS=")) isomaxpt->setText(line.remove("ISOMAXPOINTS="));
else if (line.contains("ISOMAXTRIANG=")) isomaxtr->setText(line.remove("ISOMAXTRIANG="));
else if (line.contains("ISOMAXGRID=")) isomaxgrid->setText(line.remove("ISOMAXGRID="));
}
}
file.close();
pushButton71_2_clicked();
pushButton71_clicked();
}
else {
QMessageBox message ;
message.setText("No Config file...");
message.adjustSize();
message.exec();
}
}
//==================================================/
void k3dsurface::OpenConfig()
{
QString line;
QString lines;
QFile file( "K3DSurfConfig" );
if ( file.open( IO_ReadOnly ) ) {
QTextStream stream( &file );
QString line;
while ( !stream.atEnd() ) {
line = stream.readLine(); // line of text excluding '\n'
lines += line+"\n";
}
file.close();
}
else {
QString filename = QFileDialog::getOpenFileName( QString::null, QString::null, this);
if (filename.length()){
QFile file( filename );
if ( file.open( IO_ReadOnly ) ) {
QTextStream stream( &file );
while ( !stream.atEnd() ) {
line = stream.readLine(); // line of text excluding '\n'
lines += line+"\n";
}
file.close();
}
}
}
editeur *ed = new editeur();
ed->setCaption(tr("Config File"));
ed->settext(lines);
ed->show();
}
//==================================================/
void k3dsurface::pushButton80_pressed()
{QString CurrentEquationName;
static QString StaticNames;
static int staticnames =0;
if(staticnames == 0){
StaticNames.append(";Icosahedron;");
StaticNames.append(";pseudo_Duplin;");
StaticNames.append(";pseudo_Torus;");
StaticNames.append(";Bugs;");
StaticNames.append(";DifferenceSpheres;");
StaticNames.append(";BlendSpheres;");
StaticNames.append(";Holes;");
StaticNames.append(";Gyroid;");
StaticNames.append(";Diamand;");
StaticNames.append(";Tetrahedral;");
StaticNames.append(";DuplinCyclides;");
StaticNames.append(";Hyperboloid;");
StaticNames.append(";Hyperbolic;");
StaticNames.append(";Sinus;");
StaticNames.append(";Octahedron;");
StaticNames.append(";UnionSpheres;");
StaticNames.append(";IntersectSpheres;");
StaticNames.append(";Blobs;");
StaticNames.append(";Virus;");
StaticNames.append(";BlobySchwartz;");
StaticNames.append(";Blobs_2;");
StaticNames.append(";OrthoCircle;");
StaticNames.append(";CubeSphere;");
StaticNames.append(";CubeSphere_2;");
StaticNames.append(";Holes_2;");
StaticNames.append(";Virus;");
StaticNames.append(";Schwartz;");
StaticNames.append(";Schwartz_Morph;");
StaticNames.append(";Blob_Morph;");
StaticNames.append(";Torus;");
StaticNames.append(";TwoCylinderBlend;");
StaticNames.append(";BlendThreeCylinder;");
StaticNames.append(";Sphere;");
StaticNames.append(";RoundCube;");
StaticNames.append(";Toupie;");
StaticNames.append(";Chmutov;");
StaticNames.append(";Chmutov_2;");
StaticNames.append(";Clebsch;");
StaticNames.append(";DingDong;");
StaticNames.append(";Trap;");
StaticNames.append(";Cube;");
StaticNames.append(";Drope;");
StaticNames.append(";Leminescape;");
StaticNames.append(";Klein;");
StaticNames.append(";Chain;");
StaticNames.append(";Chain_2;");
staticnames = 1;
}
int Currentindex = IsoImplicitBox->currentItem ();
CurrentEquationName = IsoImplicitBox->currentText ();
if(StaticNames.contains( ";"+CurrentEquationName+";") == 0) { RootObjet.EquationsNames.remove(";"+CurrentEquationName+";");
IsoImplicitBox->removeItem (Currentindex);
textLabel1_14_4->setText("Examples ("+QString::number(IsoImplicitBox->count() + 1)+")");
// Update the Isosurface Viewer:
ImplicitFunChanged(IsoImplicitBox->currentText ());
}
}
syntax highlighted by Code2HTML, v. 0.9.1