Changeset 8390:1bfec186de6b in orange


Ignore:
Timestamp:
07/14/11 13:48:05 (3 years ago)
Author:
matejd <matejd@…>
Branch:
default
Convert:
aea9609494fe6acba1a0865158b52d7552e22d64
Message:

OWPlot3D: few bugfixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/owplot3d.py

    r8389 r8390  
    11""" 
    22    .. class:: OWPlot3D 
    3         Base class for 3D graphs. 
     3        Base class for 3D plots. 
    44 
    55    .. attribute:: show_legend 
     
    9393def normalize(vec): 
    9494    return vec / numpy.sqrt(numpy.sum(vec** 2)) 
     95 
     96def clamp(value, min, max): 
     97    if value < min: 
     98        return min 
     99    if value > max: 
     100        return max 
     101    return value 
    95102 
    96103 
     
    305312                if labels != None: 
    306313                    for (x,y,z), label in zip(array, labels): 
    307                         self.renderText(x,y,z, '{0:.2}'.format(label), font=self.labels_font) 
     314                        self.renderText(x,y,z, '{0:.1}'.format(label), font=self.labels_font) 
     315 
     316        self.draw_center() 
    308317 
    309318        glDisable(GL_BLEND) 
    310319        if self.show_legend: 
    311320            self.draw_legend() 
    312  
    313         self.draw_center() 
    314321 
    315322    def draw_legend(self): 
     
    383390 
    384391    def draw_center(self): 
    385         pass 
     392        glColor3f(0,0,0) 
     393        glLineWidth(2) 
     394        glBegin(GL_LINES) 
     395        size = 2. 
     396        glVertex3f(self.center[0] - size*self.normal_size, 
     397                   self.center[1] + size*self.normal_size, 
     398                   self.center[2]) 
     399        glVertex3f(self.center[0] + size*self.normal_size, 
     400                   self.center[1] - size*self.normal_size, 
     401                   self.center[2]) 
     402        glVertex3f(self.center[0] - size*self.normal_size, 
     403                   self.center[1] - size*self.normal_size, 
     404                   self.center[2]) 
     405        glVertex3f(self.center[0] + size*self.normal_size, 
     406                   self.center[1] + size*self.normal_size, 
     407                   self.center[2]) 
     408        glEnd() 
     409        glLineWidth(1) 
    386410 
    387411    def paint_axes(self): 
     
    570594            sizes = [sizes for _ in array] 
    571595 
     596        # Normalize sizes to 0..1 
     597        max_size = float(numpy.max(sizes)) 
     598        sizes = [size / max_size for size in sizes] 
     599 
    572600        if shapes == None: 
    573601            shapes = [0 for _ in array] 
     
    689717                self.yaw += dx /  self.rotation_factor 
    690718                self.pitch += dy / self.rotation_factor 
     719                self.pitch = clamp(self.pitch, -3., -0.1) 
    691720                self.camera = [ 
    692721                    sin(self.pitch)*cos(self.yaw), 
     
    714743if __name__ == "__main__": 
    715744    app = QApplication(sys.argv) 
    716     w = OWGraph3D() 
     745    w = OWPlot3D() 
    717746    w.show() 
    718747  
Note: See TracChangeset for help on using the changeset viewer.