Ignore:
Timestamp:
Nov 8, 2013, 5:58:40 PM (11 years ago)
Author:
ldelgass
Message:

Fix grid tick lengths

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/packages/vizservers/nanovis/Grid.cpp

    r4038 r4039  
    6767    glPushMatrix();
    6868
    69     glTranslatef(xAxis.min(), yAxis.min(), zAxis.min());
    70     glScalef(xAxis.range(), yAxis.range(), zAxis.range());
     69    double xLen = xAxis.range();
     70    double yLen = yAxis.range();
     71    double zLen = zAxis.range();
     72    double avgLen = 0.;
     73    double denom = 0.;
     74    if (xLen > 0.0) {
     75        avgLen += xLen;
     76        denom += 1.0;
     77    }
     78    if (yLen > 0.0) {
     79        avgLen += yLen;
     80        denom += 1.0;
     81    }
     82    if (zLen > 0.0) {
     83        avgLen += zLen;
     84        denom += 1.0;
     85    }
     86    if (denom > 0.0) {
     87        avgLen /= denom;
     88    } else {
     89        avgLen = 1.0;
     90    }
     91    float xTickLen = (TICK_LENGTH * avgLen) / xLen;
     92    float yTickLen = (TICK_LENGTH * avgLen) / yLen;
     93    float zTickLen = (TICK_LENGTH * avgLen) / zLen;
     94    float xLabelOfs = (LABEL_OFFSET * avgLen) / xLen;
     95    //float yLabelOfs = (LABEL_OFFSET * avgLen) / yLen;
     96    float zLabelOfs = (LABEL_OFFSET * avgLen) / zLen;
     97    float xTitleOfs = (TITLE_OFFSET * avgLen) / xLen;
     98    float yTitleOfs = (TITLE_OFFSET * avgLen) / yLen;
     99    float zTitleOfs = (TITLE_OFFSET * avgLen) / zLen;
     100
     101    glTranslated(xAxis.min(), yAxis.min(), zAxis.min());
     102    glScaled(xLen, yLen, zLen);
    71103
    72104    glLineWidth(2.0f);
     
    77109    {
    78110        glVertex3f(0.0f, 0.0f, 0.0f);
    79         glVertex3f(1.0f + TICK_LENGTH/xAxis.range(), 0.0f, 0.0f);
     111        glVertex3f(1.0f + xTickLen, 0.0f, 0.0f);
    80112        glVertex3f(0.0f, 0.0f, 0.0f);
    81         glVertex3f(0.0f, 1.0f + TICK_LENGTH/yAxis.range(), 0.0f);
     113        glVertex3f(0.0f, 1.0f + yTickLen, 0.0f);
    82114        glVertex3f(0.0f, 0.0f, 0.0f);
    83         glVertex3f(0.0f, 0.0f, 1.0f + TICK_LENGTH/zAxis.range());
     115        glVertex3f(0.0f, 0.0f, 1.0f + zTickLen);
    84116    }
    85117    glEnd();
     
    100132            glVertex3f(x, 1.0f, 0.0f);
    101133            glVertex3f(x, 0.0f, 0.0f);
    102             glVertex3f(x, 0.0f, 1.0f + TICK_LENGTH/zAxis.range());
     134            glVertex3f(x, 0.0f, 1.0f + zTickLen);
    103135        }
    104136        for (result = yAxis.firstMajor(iter); result; result = iter.next()) {
     
    106138            y = yAxis.map(iter.getValue());
    107139            glVertex3f(0.0f, y, 0.0f);
    108             glVertex3f(1.0f + TICK_LENGTH/xAxis.range(), y, 0.0f);
     140            glVertex3f(1.0f + xTickLen, y, 0.0f);
    109141            glVertex3f(0.0f, y, 0.0f);
    110142            glVertex3f(0.0f, y, 1.0f);
     
    116148            glVertex3f(0.0f, 1.0f, z);
    117149            glVertex3f(0.0f, 0.0f, z);
    118             glVertex3f(1.0f + TICK_LENGTH/xAxis.range(), 0.0f, z);
     150            glVertex3f(1.0f + xTickLen, 0.0f, z);
    119151        }
    120152    }
     
    169201
    170202        _font->begin();
    171         if (gluProject(1.0 + TITLE_OFFSET/xAxis.range(), 0.0, 0.0, mv, prjm, viewport, &wx, &wy, &wz) &&
     203        if (gluProject(1.0 + xTitleOfs, 0.0, 0.0, mv, prjm, viewport, &wx, &wy, &wz) &&
    172204            wz >= 0.0 && wz <= 1.0) {
    173205            glLoadIdentity();
     
    180212        }
    181213       
    182         if (gluProject(0.0, 1.0 + TITLE_OFFSET/yAxis.range(), 0.0, mv, prjm, viewport, &wx, &wy, &wz) &&
     214        if (gluProject(0.0, 1.0 + yTitleOfs, 0.0, mv, prjm, viewport, &wx, &wy, &wz) &&
    183215            wz >= 0.0 && wz <= 1.0) {
    184216            glLoadIdentity();
     
    191223        }
    192224       
    193         if (gluProject(0.0, 0.0, 1.0 + TITLE_OFFSET/zAxis.range(), mv, prjm, viewport, &wx, &wy, &wz) &&
     225        if (gluProject(0.0, 0.0, 1.0 + zTitleOfs, mv, prjm, viewport, &wx, &wy, &wz) &&
    194226            wz >= 0.0 && wz <= 1.0) {
    195227            glLoadIdentity();
     
    207239            float x;
    208240            x = xAxis.map(iter.getValue());
    209             if (gluProject(x, 0.0f, 1.0 + LABEL_OFFSET/zAxis.range(), mv, prjm, viewport, &wx, &wy, &wz) &&
     241            if (gluProject(x, 0.0f, 1.0 + zLabelOfs, mv, prjm, viewport, &wx, &wy, &wz) &&
    210242                wz >= 0.0 && wz <= 1.0) {
    211243                char buff[20];
     
    219251            float y;
    220252            y = yAxis.map(iter.getValue());
    221             if (gluProject(1.0 + LABEL_OFFSET/xAxis.range(), y, 0.0f, mv, prjm, viewport, &wx, &wy, &wz) &&
     253            if (gluProject(1.0 + xLabelOfs, y, 0.0f, mv, prjm, viewport, &wx, &wy, &wz) &&
    222254                wz >= 0.0 && wz <= 1.0) {
    223255                char buff[20];
     
    231263            float z;
    232264            z = zAxis.map(iter.getValue());
    233             if (gluProject(1.0 + LABEL_OFFSET/xAxis.range(), 0.0f, z, mv, prjm, viewport, &wx, &wy, &wz) &&
     265            if (gluProject(1.0 + xLabelOfs, 0.0f, z, mv, prjm, viewport, &wx, &wy, &wz) &&
    234266                wz >= 0.0 && wz <= 1.0) {
    235267                char buff[20];
Note: See TracChangeset for help on using the changeset viewer.