本文整理汇总了C++中HMGL类的典型用法代码示例。如果您正苦于以下问题:C++ HMGL类的具体用法?C++ HMGL怎么用?C++ HMGL使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了HMGL类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: mgl_cont_z_val
//-----------------------------------------------------------------------------
void MGL_EXPORT mgl_cont_z_val(HMGL gr, HCDT v, HCDT a, const char *sch, double sv, const char *opt)
{
long n=a->GetNx(),m=a->GetNy();
if(n<2 || m<2) { gr->SetWarn(mglWarnLow,"ContZ"); return; }
gr->SaveState(opt);
if(mgl_isnan(sv)) sv = gr->GetOrgZ('z');
if(sv<gr->Min.z || sv>gr->Max.z) { gr->SetWarn(mglWarnSlc,"ContZ"); gr->LoadState(); return; }
static int cgid=1; gr->StartGroup("ContZ",cgid++);
mglDataV xx,yy,zz; mglData aa;
int text=0;
if(mglchr(sch,'t')) text=1;
if(mglchr(sch,'T')) text=2;
long ss=gr->AddTexture(sch);
gr->SetPenPal(sch);
a = fill_slice_z(gr,sv,a,xx,yy,zz,aa);
#pragma omp parallel for
for(long i=0;i<v->GetNx();i++)
{
mreal v0 = v->v(i);
mgl_cont_gen(gr,v0,a,&xx,&yy,&zz,gr->GetC(ss,v0),text,0);
}
gr->EndGroup();
}
示例2: mgl_set_range_dat
void MGL_EXPORT mgl_set_range_dat(HMGL gr, char dir, HCDT a, int add)
{
if(dir=='c' || dir=='a') gr->CRange(a,add);
else if(dir=='x') gr->XRange(a,add);
else if(dir=='y') gr->YRange(a,add);
else if(dir=='z') gr->ZRange(a,add);
}
示例3: mgl_triplot_xy
//-----------------------------------------------------------------------------
void MGL_EXPORT mgl_triplot_xy(HMGL gr, HCDT nums, HCDT x, HCDT y, const char *sch, const char *opt)
{
gr->SaveState(opt);
mglData z(x->GetNx());
mreal zm = gr->AdjustZMin(); z.Fill(zm,zm);
mgl_triplot_xyzc(gr,nums,x,y,&z,&z,sch,0);
}
示例4: mgl_add_range_val
void MGL_EXPORT mgl_add_range_val(HMGL gr, char dir, double v1,double v2)
{
if(dir=='c' || dir=='a') gr->CRange(v1,v2,true);
else if(dir=='x') gr->XRange(v1,v2,true);
else if(dir=='y') gr->YRange(v1,v2,true);
else if(dir=='z') gr->ZRange(v1,v2,true);
}
示例5: mgl_dens_z
//-----------------------------------------------------------------------------
void MGL_EXPORT mgl_dens_z(HMGL gr, HCDT a, const char *sch, double sv, const char *opt)
{
long n=a->GetNx(),m=a->GetNy();
if(n<2 || m<2) { gr->SetWarn(mglWarnLow,"DensZ"); return; }
gr->SaveState(opt);
if(mgl_isnan(sv)) sv = gr->GetOrgZ('z');
if(sv<gr->Min.z || sv>gr->Max.z) { gr->SetWarn(mglWarnSlc,"DensZ"); gr->LoadState(); return; }
mglDataV xx,yy,zz; mglData aa;
a = fill_slice_z(gr,sv,a,xx,yy,zz,aa);
mgl_surf_gen(gr, &xx,&yy,&zz,a, 0, sch);
}
示例6: mgl_datac_refill_gr
//-----------------------------------------------------------------------------
void MGL_EXPORT mgl_datac_refill_gr(HMGL gr, HADT dat, HCDT xdat, HCDT ydat, HCDT zdat, HCDT vdat, long sl, const char *opt)
{
if(!vdat) return;
gr->SaveState(opt);
if(!ydat && !zdat) mgl_datac_refill_x(dat,xdat,vdat,gr->Min.x,gr->Max.x,sl);
// else if(!xdat && !zdat) mgl_datac_refill_x(dat,ydat,vdat,gr->Min.y,gr->Max.y,sl);
// else if(!xdat && !ydat) mgl_datac_refill_x(dat,zdat,vdat,gr->Min.z,gr->Max.z,sl);
else if(!zdat) mgl_datac_refill_xy(dat,xdat,ydat,vdat,gr->Min.x,gr->Max.x,gr->Min.y,gr->Max.y,sl);
// else if(!ydat) mgl_datac_refill_xy(dat,xdat,zdat,vdat,gr->Min.x,gr->Max.x,gr->Min.z,gr->Max.z,sl);
// else if(!xdat) mgl_datac_refill_xy(dat,ydat,zdat,vdat,gr->Min.y,gr->Max.y,gr->Min.z,gr->Max.z,sl);
else mgl_datac_refill_xyz(dat,xdat,ydat,zdat,vdat,gr->Min.x,gr->Max.x,gr->Min.y,gr->Max.y,gr->Min.z,gr->Max.z);
gr->LoadState();
}
示例7: mgl_contf_z
//-----------------------------------------------------------------------------
void MGL_EXPORT mgl_contf_z(HMGL gr, HCDT a, const char *sch, double sv, const char *opt)
{
mreal r = gr->SaveState(opt);
long Num = (mgl_isnan(r) || r<=0) ? 7:long(r+0.5);
mglData v(Num); v.Fill(gr->Min.c, gr->Max.c);
mgl_contf_z_val(gr,&v,a,sch,sv,0);
}
示例8: mgl_cont_z
//-----------------------------------------------------------------------------
void MGL_EXPORT mgl_cont_z(HMGL gr, HCDT a, const char *sch, double sv, const char *opt)
{
mreal r = gr->SaveState(opt);
long Num = (mgl_isnan(r) || r<=0) ? 7:long(r+0.5);
mglData v(Num);
for(long i=0;i<Num;i++) v.a[i] = gr->Min.c + (gr->Max.c-gr->Min.c)*mreal(i+1)/(Num+1);
mgl_cont_z_val(gr,&v,a,sch,sv,0);
}
示例9: mgl_tricontv_xyzc
//-----------------------------------------------------------------------------
void MGL_EXPORT mgl_tricontv_xyzc(HMGL gr, HCDT nums, HCDT x, HCDT y, HCDT z, HCDT a, const char *sch, const char *opt)
{
mreal r = gr->SaveState(opt);
long n = (mgl_isnan(r) || r<=0) ? 7:long(r+0.5);
mglData v(n);
for(long i=0;i<n;i++) v.a[i] = gr->Min.c + (gr->Max.c-gr->Min.c)*mreal(i+1)/(n+1);
mgl_tricontv_xyzcv(gr,&v,nums,x,y,z,a,sch,0);
}
示例10: mgl_crust
//-----------------------------------------------------------------------------
//
// Crust series
//
//-----------------------------------------------------------------------------
void MGL_EXPORT mgl_crust(HMGL gr, HCDT x, HCDT y, HCDT z, const char *sch, const char *opt)
{
if(y->GetNx()!=x->GetNx() || z->GetNx()!=x->GetNx())
{ gr->SetWarn(mglWarnDim,"Crust"); return; }
HMDT nums = mgl_triangulation_3d(x, y, z);
mgl_triplot_xyzc(gr,nums,x,y,z,z,sch,opt);
mgl_delete_data(nums);
}
示例11: mgl_tricontv_xyzcv
//-----------------------------------------------------------------------------
//
// TriContV series
//
//-----------------------------------------------------------------------------
void MGL_EXPORT mgl_tricontv_xyzcv(HMGL gr, HCDT v, HCDT nums, HCDT x, HCDT y, HCDT z, HCDT a, const char *sch, const char *opt)
{
mglDataV zz(x->GetNx(),x->GetNy());
if(!z) z = &zz;
if(mgl_check_trig(gr,nums,x,y,z,a,"TriContV")) return;
gr->SaveState(opt);
static int cgid=1; gr->StartGroup("TriContV",cgid++);
bool fixed=(mglchr(sch,'_')) || (gr->Min.z==gr->Max.z);
long s=gr->AddTexture(sch);
gr->SetPenPal(sch);
for(long k=0;k<v->GetNx();k++)
{
mreal v0 = v->v(k); zz.Fill(fixed ? gr->Min.z : v0);
mreal dv = (gr->Max.c-gr->Min.c)/8, c = gr->GetC(s,v0);
if(k>0) dv = v->v(k-1)-v->v(k);
else if(k<v->GetNx()-1) dv = v->v(k)-v->v(k+1);
if(fixed) dv=-dv;
const std::vector<mglSegment> curvs = mgl_get_curvs(gr,mgl_tri_lines(v0,nums,a,x,y,fixed?&zz:z));
for(size_t i=0;i<curvs.size();i++)
{
const std::list<mglPoint> &pp=curvs[i].pp;
long f2=-1,g2=-1;
for(std::list<mglPoint>::const_iterator it=pp.begin(); it != pp.end(); ++it)
{
mglPoint p=*it,q(p.y,-p.x);
long f1 = f2; f2 = gr->AddPnt(p,c,q); p.z+=dv;
long g1 = g2; g2 = gr->AddPnt(p,c,q);
gr->quad_plot(f1,g1,f2,g2);
}
}
}
}
示例12: mgl_data_fill_eq
//-----------------------------------------------------------------------------
void MGL_EXPORT mgl_data_fill_eq(HMGL gr, HMDT d, const char *eq, HCDT vdat, HCDT wdat, const char *opt)
{
if(vdat && vdat->GetNN()!=d->GetNN()) return; // incompatible dimensions
if(wdat && wdat->GetNN()!=d->GetNN()) return;
gr->SaveState(opt);
std::wstring s = d->Name(); d->Name(L"u");
mglDataV x(d->nx,d->ny,d->nz, gr->Min.x,gr->Max.x,'x'); x.Name(L"x");
mglDataV y(d->nx,d->ny,d->nz, gr->Min.y,gr->Max.y,'y'); y.Name(L"y");
mglDataV z(d->nx,d->ny,d->nz, gr->Min.z,gr->Max.z,'z'); z.Name(L"z");
mglDataV i(d->nx,d->ny,d->nz, 0,d->nx-1,'x'); i.Name(L"i");
mglDataV j(d->nx,d->ny,d->nz, 0,d->ny-1,'y'); j.Name(L"j");
mglDataV k(d->nx,d->ny,d->nz, 0,d->nz-1,'z'); k.Name(L"k");
mglDataV r(d->nx,d->ny,d->nz); r.Name(L"#$mgl");
mglData v(vdat), w(wdat); v.Name(L"v"); w.Name(L"w");
std::vector<mglDataA*> list;
list.push_back(&x); list.push_back(&y); list.push_back(&z); list.push_back(&r);
list.push_back(d); list.push_back(&v); list.push_back(&w);
list.push_back(&i); list.push_back(&j); list.push_back(&k);
d->Move(mglFormulaCalc(eq,list)); d->Name(s.c_str()); gr->LoadState();
}
示例13: mgl_subplot_d
//-----------------------------------------------------------------------------
void MGL_EXPORT mgl_subplot_d(HMGL gr, int nx,int ny,int m,const char *style,double dx,double dy)
{
double x1,x2,y1,y2;
int mx = m%nx, my = m/nx;
if(gr->get(MGL_AUTO_FACTOR)) { dx /= 1.55; dy /= 1.55; }
else { dx /= 2; dy /= 2; }
x1 = (mx+dx)/nx; x2 = (mx+1+dx)/nx;
y2 = 1.f-(my+dy)/ny; y1 = 1.f-(my+1+dy)/ny;
mglCanvas *g = dynamic_cast<mglCanvas *>(gr);
if(g) g->InPlot(x1,x2,y1,y2,style);
}
示例14: mgl_tricont_xyzcv
//-----------------------------------------------------------------------------
void MGL_EXPORT mgl_tricont_xyzcv(HMGL gr, HCDT v, HCDT nums, HCDT x, HCDT y, HCDT z, HCDT a, const char *sch, const char *opt)
{
mglDataV zz(x->GetNx(),x->GetNy());
if(!z) z = &zz;
if(mgl_check_trig(gr,nums,x,y,z,a,"TriCont")) return;
gr->SaveState(opt);
static int cgid=1; gr->StartGroup("TriCont",cgid++);
int text=0;
if(mglchr(sch,'t')) text=1;
if(mglchr(sch,'T')) text=2;
bool fixed=(mglchr(sch,'_')) || (gr->Min.z==gr->Max.z);
long s=gr->AddTexture(sch);
gr->SetPenPal(sch);
for(long k=0;k<v->GetNx();k++)
{
mreal v0 = v->v(k); zz.Fill(fixed ? gr->Min.z : v0);
mgl_draw_curvs(gr,v0,gr->GetC(s,v0),text,mgl_get_curvs(gr,mgl_tri_lines(v0,nums,a,x,y,fixed?&zz:z)));
}
}
示例15: mgl_contf_y_val
//-----------------------------------------------------------------------------
void MGL_EXPORT mgl_contf_y_val(HMGL gr, HCDT v, HCDT a, const char *sch, double sv, const char *opt)
{
long n=a->GetNx(),m=a->GetNy();
if(n<2 || m<2) { gr->SetWarn(mglWarnLow,"ContFY"); return; }
gr->SaveState(opt);
if(mgl_isnan(sv)) sv = gr->GetOrgY('y');
if(sv<gr->Min.y || sv>gr->Max.y) { gr->SetWarn(mglWarnSlc,"ContFY"); gr->LoadState(); return; }
static int cgid=1; gr->StartGroup("ContFY",cgid++);
mglDataV xx,yy,zz; mglData aa;
long ss=gr->AddTexture(sch);
a = fill_slice_y(gr,sv,a,xx,yy,zz,aa);
#pragma omp parallel for
for(long i=0;i<v->GetNx()-1;i++)
{
mreal v0 = v->v(i);
mgl_contf_gen(gr,v0,v->v(i+1),a,&xx,&yy,&zz,gr->GetC(ss,v0),0);
}
gr->EndGroup();
}