Changeset 8802:f37d84711799 in orange


Ignore:
Timestamp:
08/26/11 13:54:47 (3 years ago)
Author:
matejd <matejd@…>
Branch:
default
Convert:
2aaa596bb19861e6afa268743bf1d4674fe7afcc
Message:

Added edges geometry files

Location:
orange/OrangeWidgets/plot/primitives
Files:
11 added
1 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/plot/primitives/owprimitives3d.py

    r8734 r8802  
    11import os 
    22import re 
    3 from plot.owplot3d import Symbol 
     3from plot.owplot3d import Symbol, enum 
    44import numpy 
     5 
     6GeometryType = enum('SOLID_3D', 'SOLID_2D', 'EDGE_3D', 'EDGE_2D') 
    57 
    68def normalize(vec): 
     
    2931    Symbol.CIRCLE:    'sphere.obj', 
    3032    Symbol.LTRIANGLE: 'lpyramid.obj', 
    31     Symbol.DIAMOND:   'diamond.obj', 
     33    Symbol.DIAMOND:   'octahedron.obj', 
    3234    Symbol.WEDGE:     'wedge.obj', 
    3335    Symbol.LWEDGE:    'lwedge.obj', 
     
    4244    Symbol.CIRCLE:    'circle.obj', 
    4345    Symbol.LTRIANGLE: 'ltriangle.obj', 
    44     Symbol.DIAMOND:   'diamond_2d.obj', 
     46    Symbol.DIAMOND:   'diamond.obj', 
    4547    Symbol.WEDGE:     'wedge_2d.obj', 
    4648    Symbol.LWEDGE:    'lwedge_2d.obj', 
     
    5052 
    5153symbol_edge_map = { 
     54    Symbol.RECT:      'cube_edges.obj', 
     55    Symbol.TRIANGLE:  'pyramid_edges.obj', 
     56    Symbol.DTRIANGLE: 'dpyramid_edges.obj', 
     57    Symbol.CIRCLE:    'sphere_edges.obj', 
     58    Symbol.LTRIANGLE: 'lpyramid_edges.obj', 
     59    Symbol.DIAMOND:   'octahedron_edges.obj', 
     60    Symbol.WEDGE:     'wedge_edges.obj', 
     61    Symbol.LWEDGE:    'lwedge_edges.obj', 
     62    Symbol.CROSS:     'cross_edges.obj', 
     63    Symbol.XCROSS:    'xcross_edges.obj' 
     64} 
     65 
     66symbol_edge_map_2d = { 
    5267    Symbol.RECT:      'rect_edges.obj', 
    5368    Symbol.TRIANGLE:  'triangle_edges.obj', 
     
    5671    Symbol.LTRIANGLE: 'ltriangle_edges.obj', 
    5772    Symbol.DIAMOND:   'diamond_edges.obj', 
    58     Symbol.WEDGE:     'wedge_edges.obj', 
    59     Symbol.LWEDGE:    'lwedge_edges.obj', 
    60     Symbol.CROSS:     'cross_edges.obj', 
    61     Symbol.XCROSS:    'xcross_edges.obj' 
     73    Symbol.WEDGE:     'wedge_2d_edges.obj', 
     74    Symbol.LWEDGE:    'lwedge_2d_edges.obj', 
     75    Symbol.CROSS:     'cross_2d_edges.obj', 
     76    Symbol.XCROSS:    'xcross_2d_edges.obj' 
    6277} 
    6378 
    64 _symbol_data = {} # Cache: contains triangles + their normals for each needed symbol. 
     79_symbol_data = {} # Cache: contains triangles + vertices normals for each needed symbol. 
    6580_symbol_data_2d = {} 
    6681_symbol_edges = {} 
     82_symbol_edges_2d = {} 
    6783 
    6884def parse_obj(file_name): 
     
    96112    return triangles 
    97113 
    98 def get_symbol_data(symbol): 
     114def get_symbol_geometry(symbol, geometry_type): 
    99115    if not Symbol.is_valid(symbol): 
     116        print('Invalid symbol!') 
    100117        return [] 
    101     if symbol in _symbol_data: 
    102         return _symbol_data[symbol] 
    103     file_name = symbol_map[symbol] 
     118 
     119    if geometry_type == GeometryType.SOLID_3D: 
     120        cache = _symbol_data 
     121        name_map = symbol_map 
     122    elif geometry_type == GeometryType.SOLID_2D: 
     123        cache = _symbol_data_2d 
     124        name_map = symbol_map_2d 
     125    elif geometry_type == GeometryType.EDGE_3D: 
     126        cache = _symbol_edges 
     127        name_map = symbol_edge_map 
     128    elif geometry_type == GeometryType.EDGE_2D: 
     129        cache = _symbol_edges_2d 
     130        name_map = symbol_edge_map_2d 
     131    else: 
     132        print('Wrong geometry type!') 
     133        return [] 
     134 
     135    if symbol in cache: 
     136        return cache[symbol] 
     137 
     138    file_name = name_map[symbol] 
    104139    file_name = os.path.join(os.path.dirname(__file__), file_name) 
    105     triangles = parse_obj(file_name) 
    106     _symbol_data[symbol] = triangles 
    107     return triangles 
     140    if geometry_type in [GeometryType.SOLID_3D, GeometryType.SOLID_2D]: 
     141        triangles = parse_obj(file_name) 
     142        cache[symbol] = triangles 
     143        return triangles 
    108144 
    109 def get_2d_symbol_data(symbol): 
    110     if not Symbol.is_valid(symbol): 
    111         return [] 
    112     if symbol in _symbol_data_2d: 
    113         return _symbol_data_2d[symbol] 
    114     file_name = symbol_map_2d[symbol] 
    115     file_name = os.path.join(os.path.dirname(__file__), file_name) 
    116     triangles = parse_obj(file_name) 
    117     _symbol_data_2d[symbol] = triangles 
    118     return triangles 
    119  
    120 def get_2d_symbol_edges(symbol): 
    121     if not Symbol.is_valid(symbol): 
    122         return [] 
    123     if symbol in _symbol_edges: 
    124         return _symbol_edges[symbol] 
    125     file_name = symbol_edge_map[symbol] 
    126     file_name = os.path.join(os.path.dirname(__file__), file_name) 
    127145    lines = open(file_name).readlines() 
    128146    vertices_lines = filter(lambda line: line.startswith('v'), lines) 
     
    135153        v1 = vertices[i1-1] 
    136154        edges.append([v0, v1]) 
    137     _symbol_edges[symbol] = edges 
     155    cache[symbol] = edges 
    138156    return edges 
Note: See TracChangeset for help on using the changeset viewer.