⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cogenpixmap.cxx

📁 有限元学习研究用源代码(老外的),供科研人员参考
💻 CXX
字号:
#include "cogenpixmap.hxx"
void CogenPixmap::endInitialization()
{
  wzFloat xh;
  if(pixmap.ly()*(xp-xm) > pixmap.lx()*(yp-ym)){
    dy = (yp-ym) / pixmap.ly();
    dx = dy;
    xh = (xm+xp)/2;
    xm = xh - pixmap.lx()*dx/2;
    xp = xm + pixmap.lx()*dx;
  }else{
    dx = (xp-xm) / pixmap.lx();
    dy = -dx;
    xh = (ym+yp)/2;
    yp = xh + pixmap.ly()*dy/2;
    ym = yp - pixmap.ly()*dy;
  }
  setBorder(xm,xp, yp,ym);
  CogenOctree::endInitialization();
}

cogIndex CogenPixmap::Point( cogPoint& p0) const
{
// computation of the segment number for the point (x[0],x[1]):	
 cogFloat rx,ry;
 int ix = (int)((rx = (p0.x() - xm) / (dx)));       
 int iy = (int)((ry = (p0.y() - ym) / (dy)));
 int lx = pixmap.lx();
 int ly = pixmap.ly();
 int u00,u01,u10,jx,jy;
 rx -= ix; ry -= iy;
 if(ix<0) {ix = 0; rx = 0;} else if(ix>=lx) {ix = lx - 1; rx = 1;}
 if(iy<0) {iy = 0; ry = 0;} else if(iy>=ly) {iy = ly - 1; ry = 1;}
 u00 = pixmap(ix,iy);
 if(cutPixelCorner){
   if(rx > 0.5) {jx = ix+1; rx -= 0.5;}	else {jx = ix-1; rx = 0.5-rx;}
   if(ry > 0.5) {jy = iy+1; ry -= 0.5;}	else {jy = iy-1; ry = 0.5-ry;}
   if(jx<0) jx = 0;	else if(jx>=lx) jx = lx - 1;
   if(jy<0) jy = 0;	else if(jy>=ly) jy = ly - 1;
   u01 = pixmap(ix,jy);
   u10 = pixmap(jx,iy);
   if(u10 == u01)	if(rx+ry > 0.5) u00 = u10;
 }
 p0.segment() = wzRegion(u00);
 return cogRCRegionFound;
}

CogenPixmap::CogenPixmap(cogName f, int maxcolors)
:pixmap((wzString)f,maxcolors)
,cutPixelCorner(0)
{
  xm = -1.0;  xp = 1.0;
  ym = -1.0;  yp = 1.0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -