亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dgnhelp.cpp

?? GIS系統支持庫Geospatial Data Abstraction Library代碼.GDAL is a translator library for raster geospatial dat
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
              DGNTagDef *psTagDef = psTagSet->tagList + iTag;              fprintf( fp, "    %d: name=%s, type=%d, prompt=%s",                        psTagDef->id, psTagDef->name, psTagDef->type,                        psTagDef->prompt );              if( psTagDef->type == 1 )                  fprintf( fp, ", default=%s\n",                            psTagDef->defaultValue.string );              else if( psTagDef->type == 3 || psTagDef->type == 5 )                  fprintf( fp, ", default=%d\n",                            psTagDef->defaultValue.integer );              else if( psTagDef->type == 4 )                  fprintf( fp, ", default=%g\n",                            psTagDef->defaultValue.real );              else                  fprintf( fp, ", default=<unknown>\n" );          }      }      break;      case DGNST_TAG_VALUE:      {          DGNElemTagValue *psTag = (DGNElemTagValue*) psElement;          fprintf( fp, "  tagType=%d, tagSet=%d, tagIndex=%d, tagLength=%d\n",                    psTag->tagType, psTag->tagSet, psTag->tagIndex,                    psTag->tagLength );          if( psTag->tagType == 1 )              fprintf( fp, "  value=%s\n", psTag->tagValue.string );          else if( psTag->tagType == 3 )              fprintf( fp, "  value=%d\n", psTag->tagValue.integer );          else if( psTag->tagType == 4 )              fprintf( fp, "  value=%g\n", psTag->tagValue.real );      }      break;      case DGNST_CONE:      {          DGNElemCone *psCone = (DGNElemCone *) psElement;          fprintf( fp,                    "  center_1=(%g,%g,%g) radius=%g\n"                   "  center_2=(%g,%g,%g) radius=%g\n"                   "  quat=%d,%d,%d,%d unknown=%d\n",                    psCone->center_1.x, psCone->center_1.y, psCone->center_1.z,                   psCone->radius_1,                    psCone->center_2.x, psCone->center_2.y, psCone->center_2.z,                   psCone->radius_2,                    psCone->quat[0], psCone->quat[1],                   psCone->quat[2], psCone->quat[3],                   psCone->unknown );      }      break;      default:        break;    }    if( psElement->attr_bytes > 0 )    {        int iLink;        fprintf( fp, "Attributes (%d bytes):\n", psElement->attr_bytes );                for( iLink = 0; TRUE; iLink++ )        {            int nLinkType, nEntityNum=0, nMSLink=0, nLinkSize, i;            unsigned char *pabyData;            pabyData = DGNGetLinkage( hDGN, psElement, iLink, &nLinkType,                                       &nEntityNum, &nMSLink, &nLinkSize );            if( pabyData == NULL )                break;            fprintf( fp, "Type=0x%04x", nLinkType );            if( nMSLink != 0 || nEntityNum != 0 )                fprintf( fp, ", EntityNum=%d, MSLink=%d",                          nEntityNum, nMSLink );            fprintf( fp, "\n  0x" );            for( i = 0; i < nLinkSize; i++ )                fprintf( fp, "%02x", pabyData[i] );            fprintf( fp, "\n" );                    }    }}/************************************************************************//*                           DGNTypeToName()                            *//************************************************************************//** * Convert type to name. * * Returns a human readable name for an element type such as DGNT_LINE. * * @param nType the DGNT_* type code to translate. * * @return a pointer to an internal string with the translation.  This string * should not be modified or freed. */const char *DGNTypeToName( int nType ){    static char szNumericResult[16];    switch( nType )    {      case DGNT_CELL_LIBRARY:        return "Cell Library";              case DGNT_CELL_HEADER:        return "Cell Header";              case DGNT_LINE:        return "Line";              case DGNT_LINE_STRING:        return "Line String";      case DGNT_GROUP_DATA:        return "Group Data";      case DGNT_SHAPE:        return "Shape";              case DGNT_TEXT_NODE:        return "Text Node";      case DGNT_DIGITIZER_SETUP:        return "Digitizer Setup";              case DGNT_TCB:        return "TCB";              case DGNT_LEVEL_SYMBOLOGY:        return "Level Symbology";              case DGNT_CURVE:        return "Curve";              case DGNT_COMPLEX_CHAIN_HEADER:        return "Complex Chain Header";              case DGNT_COMPLEX_SHAPE_HEADER:        return "Complex Shape Header";              case DGNT_ELLIPSE:        return "Ellipse";              case DGNT_ARC:        return "Arc";              case DGNT_TEXT:        return "Text";      case DGNT_BSPLINE:        return "B-Spline";      case DGNT_APPLICATION_ELEM:        return "Application Element";      case DGNT_SHARED_CELL_DEFN:        return "Shared Cell Definition";              case DGNT_SHARED_CELL_ELEM:        return "Shared Cell Element";              case DGNT_TAG_VALUE:        return "Tag Value";              case DGNT_CONE:        return "Cone";      case DGNT_3DSURFACE_HEADER:        return "3D Surface Header";      case DGNT_3DSOLID_HEADER:        return "3D Solid Header";      default:        sprintf( szNumericResult, "%d", nType );        return szNumericResult;    }}/************************************************************************//*                         DGNGetAttrLinkSize()                         *//************************************************************************//** * Get attribute linkage size.  * * Returns the size, in bytes, of the attribute linkage starting at byte * offset nOffset.  On failure a value of 0 is returned. * * @param hDGN the file from which the element originated. * @param psElement the element to report on. * @param nOffset byte offset within attribute data of linkage to check. * * @return size of linkage in bytes, or zero.  */int DGNGetAttrLinkSize( DGNHandle hDGN, DGNElemCore *psElement,                         int nOffset ){    if( psElement->attr_bytes < nOffset + 4 )        return 0;    /* DMRS Linkage */    if( (psElement->attr_data[nOffset+0] == 0          && psElement->attr_data[nOffset+1] == 0)        || (psElement->attr_data[nOffset+0] == 0             && psElement->attr_data[nOffset+1] == 0x80) )        return 8;    /* If low order bit of second byte is set, first byte is length */    if( psElement->attr_data[nOffset+1] & 0x10 )        return psElement->attr_data[nOffset+0] * 2 + 2;    /* unknown */    return 0;}/************************************************************************//*                           DGNGetLinkage()                            *//************************************************************************//** * Returns requested linkage raw data.  * * A pointer to the raw data for the requested attribute linkage is returned * as well as (potentially) various information about the linkage including * the linkage type, database entity number and MSLink value, and the length * of the raw linkage data in bytes. * * If the requested linkage (iIndex) does not exist a value of zero is  * returned. * * The entity number is (loosely speaking) the index of the table within * the current database to which the MSLINK value will refer.  The entity * number should be used to lookup the table name in the MSCATALOG table.  * The MSLINK value is the key value for the record in the target table.  * * @param hDGN the file from which the element originated. * @param psElement the element to report on. * @param iIndex the zero based index of the linkage to fetch. * @param pnLinkageType variable to return linkage type.  This may be one of * the predefined DGNLT_ values or a different value. This pointer may be NULL. * @param pnEntityNum variable to return the entity number in or NULL if not * required.   * @param pnMSLink variable to return the MSLINK value in, or NULL if not  * required. * @param pnLength variable to returned the linkage size in bytes or NULL. *  * @return pointer to raw internal linkage data.  This data should not be * altered or freed.  NULL returned on failure.  */unsigned char *DGNGetLinkage( DGNHandle hDGN, DGNElemCore *psElement,                               int iIndex, int *pnLinkageType,                              int *pnEntityNum, int *pnMSLink, int *pnLength )    {    int nAttrOffset;    int iLinkage, nLinkSize;    for( iLinkage=0, nAttrOffset=0;         (nLinkSize = DGNGetAttrLinkSize( hDGN, psElement, nAttrOffset)) != 0;         iLinkage++, nAttrOffset += nLinkSize )    {        if( iLinkage == iIndex )        {            int  nLinkageType=0, nEntityNum=0, nMSLink = 0;            CPLAssert( nLinkSize > 4 );            if( psElement->attr_data[nAttrOffset+0] == 0x00                && (psElement->attr_data[nAttrOffset+1] == 0x00                    || psElement->attr_data[nAttrOffset+1] == 0x80) )            {                nLinkageType = DGNLT_DMRS;                nEntityNum = psElement->attr_data[nAttrOffset+2]                     + psElement->attr_data[nAttrOffset+3] * 256;                nMSLink = psElement->attr_data[nAttrOffset+4]                     + psElement->attr_data[nAttrOffset+5] * 256                    + psElement->attr_data[nAttrOffset+6] * 65536;            }            else                nLinkageType = psElement->attr_data[nAttrOffset+2]                     + psElement->attr_data[nAttrOffset+3] * 256;            // Possibly an external database linkage?            if( nLinkSize == 16 && nLinkageType != DGNLT_SHAPE_FILL )            {                nEntityNum = psElement->attr_data[nAttrOffset+6]                     + psElement->attr_data[nAttrOffset+7] * 256;                nMSLink = psElement->attr_data[nAttrOffset+8]                     + psElement->attr_data[nAttrOffset+9] * 256                    + psElement->attr_data[nAttrOffset+10] * 65536                    + psElement->attr_data[nAttrOffset+11] * 65536 * 256;                            }            if( pnLinkageType != NULL )                *pnLinkageType = nLinkageType;            if( pnEntityNum != NULL )                *pnEntityNum = nEntityNum;            if( pnMSLink != NULL )                *pnMSLink = nMSLink;            if( pnLength != NULL )                *pnLength = nLinkSize;            return psElement->attr_data + nAttrOffset;        }    }                 return NULL;}/************************************************************************//*                         DGNRotationToQuat()                          *//*                                                                      *//*      Compute a quaternion for a given Z rotation.                    *//************************************************************************/void DGNRotationToQuaternion( double dfRotation, int *panQuaternion ){    double dfRadianRot = (dfRotation / 180.0)  * PI;    panQuaternion[0] = (int) (cos(-dfRadianRot/2.0) * 2147483647);    panQuaternion[1] = 0;    panQuaternion[2] = 0;    panQuaternion[3] = (int) (sin(-dfRadianRot/2.0) * 2147483647);}/************************************************************************//*                         DGNQuaternionToMatrix()                      *//*                                                                      *//*      Compute a rotation matrix for a given quaternion                *//* FIXME: Write documentation on how to use this matrix                 *//* (i.e. things like row/column major, OpenGL style or not)             *//* kintel 20030819                                                      *//************************************************************************/void DGNQuaternionToMatrix( int *quat, float *mat ){  double q[4];  for (int i=0;i<4;i++) q[i] = 1.0 * quat[i] / (1<<31);  mat[0*3+0] = (float) (q[0]*q[0] - q[1]*q[1] - q[2]*q[2] + q[3]*q[3]);  mat[0*3+1] = (float) (2 * (q[2]*q[3] + q[0]*q[1]));  mat[0*3+2] = (float) (2 * (q[0]*q[2] - q[1]*q[3]));  mat[1*3+0] = (float) (2 * (q[0]*q[1] - q[2]*q[3]));  mat[1*3+1] = (float) (-q[0]*q[0] + q[1]*q[1] - q[2]*q[2] + q[3]*q[3]);  mat[1*3+2] = (float) (2 * (q[0]*q[3] + q[1]*q[2]));  mat[2*3+0] = (float) (2 * (q[0]*q[2] + q[1]*q[3]));   mat[2*3+1] = (float) (2 * (q[1]*q[2] - q[0]*q[3]));  mat[2*3+2] = (float) (-q[0]*q[0] - q[1]*q[1] + q[2]*q[2] + q[3]*q[3]);}/************************************************************************//*                  DGNTransformPointWithQuaternion()                   *//************************************************************************/void DGNTransformPointWithQuaternionVertex( int *quat, DGNPoint *v1, DGNPoint *v2 ){/* ==================================================================== *//*      Original code provided by kintel 20030819, but assumed to be    *//*      incomplete.                                                     *//* ==================================================================== */#ifdef notdef    See below for sketched implementation. kintel 20030819.                               float x,y,z,w;    // FIXME: Convert quat to x,y,z,w    v2.x = w*w*v1.x + 2*y*w*v1.z - 2*z*w*v1.y + x*x*v1.x + 2*y*x*v1.y + 2*z*x*v1.z - z*z*v1.x - y*y*v1.x;     v2.y = 2*x*y*v1.x + y*y*v1.y + 2*z*y*v1.z + 2*w*z*v1.x - z*z*v1.y + w*w*v1.y - 2*x*w*v1.z - x*x*v1.y;     v2.z = 2*x*z*v1.x + 2*y*z*v1.y + z*z*v1.z - 2*w*y*v1.x - y*y*v1.z + 2*w*x*v1.y - x*x*v1.z + w*w*v1.z;#endif/* ==================================================================== *//*      Impelementation provided by Peggy Jung - 2004/03/05.            *//*      peggy.jung at moskito-gis dot de.  I haven't tested it.         *//* ==================================================================== *//*  Version: 0.1                                 Datum: 26.01.2004 IN:x,y,z               // DGNPoint &v1quat[]              //  OUT:newX, newY, newZ    // DGNPoint &v2A u t o r  :  Peggy Jung*//*    double ROT[12];  //rotation matrix for a given quaternion    double xx, xy, xz, xw, yy, yz, yw, zz, zw;    double a, b, c, d, n, x, y, z;    x = v1->x;    y = v1->y;    z = v1->z;     n = sqrt((double)PDP2PC_long(quat[0])*(double)PDP2PC_long(quat[0])+(double)PDP2PC_long(quat[1])*(double)PDP2PC_long(quat[1])+             (double)PDP2PC_long(quat[2])*(double)PDP2PC_long(quat[2])+(double)PDP2PC_long(quat[3])*(double)PDP2PC_long(quat[3]));     a = (double)PDP2PC_long(quat[0])/n; //w    b = (double)PDP2PC_long(quat[1])/n; //x    c = (double)PDP2PC_long(quat[2])/n; //y    d = (double)PDP2PC_long(quat[3])/n; //z     xx      = b*b;    xy      = b*c;    xz      = b*d;    xw      = b*a;     yy      = c*c;    yz      = c*d;    yw      = c*a;     zz      = d*d;    zw      = d+a;     ROT[0] = 1 - 2 * yy - 2 * zz ;    ROT[1] =     2 * xy - 2 * zw ;    ROT[2] =     2 * xz + 2 * yw ;     ROT[4] =     2 * xy + 2 * zw ;    ROT[5] = 1 - 2 * xx - 2 * zz ;    ROT[6] =     2 * yz - 2 * xw ;     ROT[8] =     2 * xz - 2 * yw ;    ROT[9] =     2 * yz + 2 * xw ;    ROT[10] = 1 - 2 * xx - 2 * yy ;     v2->x = ROT[0]*x + ROT[1]*y + ROT[2]*z;    v2->y = ROT[4]*x + ROT[5]*y + ROT[6]*z;    v2->z = ROT[8]*x + ROT[9]*y + ROT[10]*z;*/}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲自拍偷拍欧美| 欧美一区二区三区在线视频| 国产欧美一区二区三区在线老狼| 国产综合一区二区| 久久综合精品国产一区二区三区| 国产一区二区三区精品欧美日韩一区二区三区 | 国产精品二三区| 99精品久久免费看蜜臀剧情介绍| 久久99国产精品久久99| 久久99精品久久久久久国产越南| 日韩成人av影视| 国内精品久久久久影院薰衣草| 韩国成人精品a∨在线观看| 国精产品一区一区三区mba视频 | 青青草97国产精品免费观看| 亚洲18影院在线观看| 天堂影院一区二区| 卡一卡二国产精品| 国产激情精品久久久第一区二区 | 91精品免费在线观看| 日韩亚洲欧美综合| 久久久国产一区二区三区四区小说| 国产亚洲欧美日韩俺去了| 国产精品美女久久久久久久久久久 | 在线欧美一区二区| 欧美日韩午夜在线| 91精品国产入口| 26uuu欧美| 日本一区二区三区免费乱视频| 亚洲欧洲国产日本综合| 亚洲一二三专区| 免费看黄色91| 成人高清在线视频| 欧美午夜电影一区| 日韩精品一区二区在线| 国产精品成人免费精品自在线观看 | 国产精品免费aⅴ片在线观看| 一区二区理论电影在线观看| 免费成人结看片| 国产成人精品aa毛片| 一区二区激情小说| 久久久久99精品国产片| 欧美日韩一本到| 不卡的av网站| 国产一区二区三区免费观看| 亚洲午夜久久久久中文字幕久| 国产午夜久久久久| 日韩欧美中文字幕制服| 在线观看亚洲a| 成人黄色电影在线| 国产精品一区二区在线观看不卡| 午夜精品久久久久久久99水蜜桃 | 亚洲图片欧美激情| 国产丝袜美腿一区二区三区| 欧美精品第1页| 91福利视频久久久久| 成人avav在线| 秋霞电影一区二区| 国产成人免费在线| 9191精品国产综合久久久久久 | 久久电影网站中文字幕| 99视频精品在线| 日韩欧美一区二区在线视频| 亚洲女同一区二区| 国内不卡的二区三区中文字幕| 欧美综合亚洲图片综合区| 久久久不卡网国产精品一区| 国产寡妇亲子伦一区二区| 欧美在线观看视频在线| 国产女人aaa级久久久级| 日韩成人午夜精品| 日本丶国产丶欧美色综合| 久久久不卡网国产精品一区| 日日夜夜精品视频天天综合网| av在线一区二区| 国产午夜精品一区二区三区嫩草| 日韩精品亚洲专区| 欧美手机在线视频| 亚洲欧洲一区二区在线播放| 国精产品一区一区三区mba视频| 欧美日韩国产一二三| 中文字幕欧美一| 国产精品一区二区免费不卡| 欧美一级片免费看| 亚洲123区在线观看| 色欧美日韩亚洲| 中文字幕一区二区三区精华液 | 2022国产精品视频| 天天色图综合网| 欧美日韩中文字幕一区| 亚洲免费看黄网站| 懂色av一区二区三区蜜臀| 久久网站热最新地址| 理论电影国产精品| 日韩欧美中文一区二区| 日本成人中文字幕| 777久久久精品| 午夜精品久久久久久久| 欧美伦理影视网| 五月激情综合网| 欧美军同video69gay| 午夜精品免费在线| 欧美日韩高清一区二区不卡| 国产免费成人在线视频| 欧美电影免费观看高清完整版在线观看| 欧美sm美女调教| 亚洲人成小说网站色在线| 亚洲一区二区三区爽爽爽爽爽 | 青草av.久久免费一区| 国产精品自拍网站| 91日韩在线专区| 日韩一区二区三区在线| 欧美国产在线观看| 一区二区三区加勒比av| 国内一区二区在线| 一本久道中文字幕精品亚洲嫩| 欧美日韩成人一区| 国产欧美精品在线观看| 亚洲一二三四区不卡| 韩国精品免费视频| 欧美羞羞免费网站| 欧美一级夜夜爽| 国产伦精品一区二区三区视频青涩 | 久久精品久久精品| 久久亚洲一级片| 东方欧美亚洲色图在线| 成人欧美一区二区三区黑人麻豆| 99精品欧美一区二区三区小说| 亚洲在线观看免费视频| 在线电影院国产精品| 精品在线观看免费| 国产精品你懂的在线欣赏| 色综合一区二区| 日日摸夜夜添夜夜添亚洲女人| ww久久中文字幕| eeuss影院一区二区三区| 亚洲国产另类av| 久久综合中文字幕| 99国产精品久久久久| 亚洲小少妇裸体bbw| 日韩你懂的电影在线观看| 从欧美一区二区三区| 亚洲国产精品久久久男人的天堂| 日韩美女主播在线视频一区二区三区| 国产99久久久久久免费看农村| 亚洲欧美一区二区三区国产精品 | 亚洲精品国产高清久久伦理二区| 欧美日韩精品欧美日韩精品一综合| 美国精品在线观看| 1区2区3区欧美| 日韩一区二区视频在线观看| 成人h精品动漫一区二区三区| 亚洲综合成人网| 国产亚洲精品中文字幕| 欧亚洲嫩模精品一区三区| 韩国v欧美v日本v亚洲v| 亚洲一级二级在线| 久久精品亚洲国产奇米99| 91国偷自产一区二区三区成为亚洲经典 | 国产一二三精品| 亚洲一二三区在线观看| 久久久777精品电影网影网| 色老头久久综合| 国内精品嫩模私拍在线| 亚洲一级二级三级| 国产精品久久网站| 日韩免费电影网站| 91福利精品视频| 成人av电影在线网| 极品少妇一区二区| 一区二区久久久久久| 国产日韩欧美一区二区三区乱码| 欧美体内she精视频| 成人午夜激情影院| 久久国产福利国产秒拍| 亚洲成人精品影院| 亚洲视频在线一区观看| 久久亚洲一区二区三区四区| 正在播放一区二区| 一本久道久久综合中文字幕| 国产高清精品久久久久| 精品一区二区免费视频| 天堂久久一区二区三区| 亚洲精选视频免费看| 欧美成人艳星乳罩| 欧美亚洲国产一卡| proumb性欧美在线观看| 国产在线不卡一区| 日韩av午夜在线观看| 亚洲一区二区3| 《视频一区视频二区| 欧美极品xxx| 国产色一区二区| 337p粉嫩大胆噜噜噜噜噜91av| 日韩午夜激情av| 欧美日韩不卡一区二区| 欧美专区日韩专区| 欧美亚洲丝袜传媒另类| 91官网在线观看| 色婷婷狠狠综合|