Changeset 8494:1804f71d69d5 in orange


Ignore:
Timestamp:
07/27/11 22:45:15 (3 years ago)
Author:
miha <miha.stajdohar@…>
Branch:
default
Convert:
0b831e5bddc7521460b335e5ab2309eb3bfce098
Message:
 
Location:
source/orangeplot
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • source/orangeplot/networkcurve.cpp

    r8492 r8494  
    66#include <QtCore/qmath.h> 
    77#include <limits> 
     8#include <QStyleOptionGraphicsItem> 
     9#include <QCoreApplication> 
    810 
    911/************/ 
     
    3133    Q_UNUSED(option) 
    3234    Q_UNUSED(widget) 
     35 
     36    //painter->setClipRect(option->exposedRect); 
    3337 
    3438    if (is_selected()) { 
     
    290294} 
    291295 
    292 int NetworkCurve::fr(int steps, bool weighted, double temperature, double cooling) 
     296int NetworkCurve::fr(int steps, bool weighted, double temperature) 
    293297{ 
    294298    int i, j; 
     
    296300    NodeItem *u, *v; 
    297301    EdgeItem *edge; 
    298     QRectF data_r = data_rect(); 
     302    double rect[4] = {std::numeric_limits<double>::max(), 
     303              std::numeric_limits<double>::max(), 
     304              std::numeric_limits<double>::min(), 
     305              std::numeric_limits<double>::min()}; 
    299306 
    300307    QMap<int, DataPoint> disp; 
     
    305312        point.y = 0; 
    306313        disp[node->index()] = point; 
    307     } 
    308  
     314 
     315        double x = node->x(); 
     316        double y = node->y(); 
     317        if (rect[0] > x) rect[0] = x; 
     318        if (rect[1] > y) rect[1] = y; 
     319        if (rect[2] < x) rect[2] = x; 
     320        if (rect[3] < y) rect[3] = y; 
     321    } 
     322    QRectF data_r(rect[0], rect[1], rect[2]-rect[0], rect[3]-rect[1]); 
     323    qDebug() << data_r << data_rect(); 
    309324    double area = data_r.width() * data_r.height(); 
    310325 
    311     int updateCheckpoint = steps / 100 + 1; 
     326 
     327    int updateCheckpoint = steps / 50 + 1; 
    312328    double k2 = area / m_nodes.size(); 
    313329    double k = sqrt(k2); 
    314330    double kk = 2 * k; 
    315331    double kk2 = kk * kk; 
    316     qDebug() << "area " << area << "; k2 " << k2 << "; k " << k << "; kk " << kk << "; kk2 " << kk2; 
     332    temperature = sqrt(area) / 5; 
     333    double cooling = exp(log(k / 10 / temperature) / steps); 
     334    qDebug() << "k " << k; 
    317335    // iterations 
    318336    for (i = 0; i < steps; i++) 
     
    396414                               u->y() + (disp[u->index()].y * qMin(fabs(disp[u->index()].y), temperature) / dif)); 
    397415        } 
    398         /* 
    399         ++count; 
    400         if (count % updateCheckpoint == 0) 
    401         { 
    402             update(); 
    403         } 
    404         */ 
     416 
     417        if (++count % updateCheckpoint == 0) 
     418        { 
     419            update_properties(); 
     420            QCoreApplication::processEvents(); 
     421        } 
     422 
    405423        temperature = temperature * cooling; 
    406424    } 
    407  
     425    data_r =  data_rect(); 
     426    area = data_r.width() * data_r.height(); 
     427    k = sqrt(data_r.width() * data_r.height() / m_nodes.size()); 
     428    qDebug() << "k " << k; 
    408429    return 0; 
    409430} 
  • source/orangeplot/networkcurve.h

    r8483 r8494  
    140140    virtual QRectF data_rect() const; 
    141141     
    142     int fr(int steps, bool weighted, double temperature, double cooling); 
     142    int fr(int steps, bool weighted, double temperature); 
    143143    int random(); 
    144144     
  • source/orangeplot/networkcurve.sip

    r8483 r8494  
    8787    virtual QRectF data_rect() const; 
    8888     
    89     int fr(int steps, bool weighted, double temperature, double cooling); 
     89    int fr(int steps, bool weighted, double temperature); 
    9090    int random(); 
    9191     
  • source/orangeplot/plot.cpp

    r8491 r8494  
    2424} 
    2525 
    26 Plot::Plot(QWidget* parent):  
     26Plot::Plot(QWidget* parent): 
    2727QGraphicsView(parent) 
    2828{ 
Note: See TracChangeset for help on using the changeset viewer.