Changeset 8392:c6ef4f151d5b in orange


Ignore:
Timestamp:
07/15/11 23:48:13 (3 years ago)
Author:
matejd <matejd@…>
Branch:
default
Convert:
f78cacf1aad830a3c3a33d8371f03b38e9058a0f
Message:

owplot3d: label values scale as well now

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/owplot3d.py

    r8391 r8392  
    103103    return value 
    104104 
     105def normal_from_points(p1, p2, p3): 
     106    v1 = p2 - p1 
     107    v2 = p3 - p1 
     108    return normalize(numpy.cross(v1, v2)) 
     109 
     110def draw_triangle(x0, y0, x1, y1, x2, y2): 
     111    glBegin(GL_TRIANGLES) 
     112    glVertex2f(x0, y0) 
     113    glVertex2f(x1, y1) 
     114    glVertex2f(x2, y2) 
     115    glEnd() 
     116 
     117def draw_line(x0, y0, x1, y1): 
     118    glBegin(GL_LINES) 
     119    glVertex2f(x0, y0) 
     120    glVertex2f(x1, y1) 
     121    glEnd() 
     122 
    105123def enum(*sequential): 
    106124    enums = dict(zip(sequential, range(len(sequential)))) 
     
    398416            0, 0, 0, 
    399417            0, 1, 0) 
    400         self.paint_axes() 
     418        self.draw_grid_and_axes() 
    401419 
    402420        glDisable(GL_DEPTH_TEST) 
     
    442460 
    443461    def draw_helpers(self): 
    444         def draw_triangle(x0, y0, x1, y1, x2, y2): 
    445             glBegin(GL_TRIANGLES) 
    446             glVertex2f(x0, y0) 
    447             glVertex2f(x1, y1) 
    448             glVertex2f(x2, y2) 
    449             glEnd() 
    450  
    451         def draw_line(x0, y0, x1, y1): 
    452             glBegin(GL_LINES) 
    453             glVertex2f(x0, y0) 
    454             glVertex2f(x1, y1) 
    455             glEnd() 
    456  
    457462        if self.state == PlotState.SCALING: 
    458463            if not self.show_legend: 
     
    463468                glLoadIdentity() 
    464469            x, y = self.mouse_pos.x(), self.mouse_pos.y() 
    465             glColor4f(0,0,0,1) 
     470            glColor4f(0, 0, 0, 1) 
    466471            draw_triangle(x-5, y-30, x+5, y-30, x, y-40) 
    467472            draw_line(x, y, x, y-30) 
     
    473478            draw_triangle(x+50, y, x+40, y-5, x+40, y+5) 
    474479            self.renderText(x+60, y+3, 
    475                             'Scale {0} axis'.format(['x', 'z'][self.scale_x_axis]), 
     480                            'Scale {0} axis'.format(['z', 'x'][self.scale_x_axis]), 
    476481                            font=self.labels_font) 
    477482        elif self.state == PlotState.SELECTING: 
     
    507512        self.updateGL() 
    508513 
    509     def paint_axes(self): 
     514    def draw_grid_and_axes(self): 
    510515        cam_in_space = numpy.array([ 
    511516          self.camera[0]*self.camera_distance, 
     
    513518          self.camera[2]*self.camera_distance 
    514519        ]) 
    515  
    516         def normal_from_points(p1, p2, p3): 
    517             v1 = p2 - p1 
    518             v2 = p3 - p1 
    519             return normalize(numpy.cross(v1, v2)) 
    520520 
    521521        def plane_visible(plane): 
     
    526526            return True 
    527527 
    528         def draw_line(line): 
     528        def draw_axis(line): 
    529529            glColor4f(0.2, 0.2, 0.2, 1) 
    530530            glLineWidth(2) # Widths > 1 are actually deprecated I think. 
     
    549549                glEnd() 
    550550                position += offset 
     551                value = position[coord_index] / (self.scale[coord_index] + self.add_scale[coord_index]) 
     552                value += self.center[coord_index] 
    551553                self.renderText(position[0], 
    552554                                position[1], 
    553555                                position[2], 
    554                                 '{0:.2}'.format(position[coord_index])) 
     556                                '{0:.2}'.format(value)) 
    555557 
    556558        glDisable(GL_DEPTH_TEST) 
     
    572574            cos = numpy.dot(normal, camera_vector) 
    573575            cos = max(0.7, cos) 
    574             glColor4f(*(self.color_plane*cos)) 
     576            glColor4f(*(self.color_plane * cos)) 
    575577            P11, P12, P21, P22 = numpy.asarray(axis_plane) 
     578            # Draw background quad first. 
    576579            glBegin(GL_QUADS) 
    577580            glVertex3f(*P11) 
     
    580583            glVertex3f(*P22) 
    581584            glEnd() 
     585 
    582586            P22, P21 = P21, P22 
    583587            glColor4f(*(self.color_grid * cos)) 
     
    587591            P1vecV = P21 - P11 
    588592            P2vecV = P22 - P12 
     593            # Draw grid lines. 
    589594            glBegin(GL_LINES) 
    590595            for i, dx in enumerate(Dx): 
     
    612617 
    613618        if visible_planes[0]: 
    614             draw_line(self.x_axis) 
     619            draw_axis(self.x_axis) 
    615620            draw_values(self.x_axis, 0, numpy.array([0,0,-1])) 
    616621        elif visible_planes[2]: 
    617             draw_line(self.x_axis + self.unit_z) 
     622            draw_axis(self.x_axis + self.unit_z) 
    618623            draw_values(self.x_axis + self.unit_z, 0, numpy.array([0,0,1])) 
    619624 
    620625        if visible_planes[1]: 
    621             draw_line(self.z_axis) 
     626            draw_axis(self.z_axis) 
    622627            draw_values(self.z_axis, 2, numpy.array([-1,0,0])) 
    623628        elif visible_planes[3]: 
    624             draw_line(self.z_axis + self.unit_x) 
     629            draw_axis(self.z_axis + self.unit_x) 
    625630            draw_values(self.z_axis + self.unit_x, 2, numpy.array([1,0,0])) 
    626631 
     
    638643                   numpy.array([0,0,1]), 
    639644                   numpy.array([-1,0,0]), 
    640                    numpy.array([0,0,-1]) 
    641                 ] 
     645                   numpy.array([0,0,-1])] 
    642646        axis = y_axis_translated[rightmost_visible] 
    643         draw_line(axis) 
     647        draw_axis(axis) 
    644648        normal = normals[rightmost_visible] 
    645649        draw_values(y_axis_translated[rightmost_visible], 1, normal) 
Note: See TracChangeset for help on using the changeset viewer.