Скачиваний:
7
Добавлен:
02.05.2014
Размер:
3.96 Кб
Скачать
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <math.h>
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Chart.hpp>
#include <ExtCtrls.hpp>
#include <Series.hpp>
#include <TeEngine.hpp>
#include <TeeProcs.hpp>    1
#include <ArrowCha.hpp>
//---------------------------------------------------------------------------
class GV{
public:
    int **matrix;
    int row;
    GV(){
        row = 0;
        matrix = new int*[256];
        for(int i=0;i<256;i++)
            matrix[i] = new int[2];
    }

};

class SVD {
public:
    int index;

    SVD(int **matrix, int row){
        index = 0;
        float max_0=0,max_1=0;
        for(int i=0;i<row;i++) {
            if(max_0 < matrix[i][0])    max_0 = matrix[i][0];
            if(max_1 < matrix[i][1])    max_1 = matrix[i][1];
        }
        int **rem_matrix;
        int min_j = 65000;
        rem_matrix = new int*[256];
        for(int i=0;i<256;i++)
            rem_matrix[i] = new int[2];
        for(int i=0;i<row;i++) {
            rem_matrix[i][0] = max_0 - matrix[i][0];
            rem_matrix[i][1] = max_1 - matrix[i][1];
            int max = max_i(rem_matrix[i][0],rem_matrix[i][1]);
            if(min_j > max) {
                min_j = max;
                index = i;
            }
        }
    }

    DrawPoint(TChartSeries *srs,int **matrix, int row)
    {
        for(int i=0;i<row;i++)  srs->AddXY(matrix[i][0],matrix[i][1]);
    }

    DrawRectangle(TChartSeries *srs1,TChartSeries *srs2,TChartSeries *srs3,TChartSeries *srs4,int **matrix, int row)
    {
        float max_x=0, max_y=0, min_x = 65000, min_y = 65000;
        for(int i=0;i<row;i++)  {
            if(max_x < matrix[i][0]) max_x = matrix[i][0];
            if(max_y < matrix[i][1]) max_y = matrix[i][1];
            if(min_x > matrix[i][0]) min_x = matrix[i][0];
            if(min_y > matrix[i][1]) min_y = matrix[i][1];
        }
        srs1->AddXY(min_x, min_y);
        srs1->AddXY(max_x, min_y);
        srs1->AddXY(max_x, max_y);

        srs2->AddXY(min_x, min_y);
        srs2->AddXY(min_x, max_y);
        srs2->AddXY(max_x, max_y);

        srs3->AddXY(max_x - max_y,0);
        srs3->AddXY(max_x, max_y);

        float x_l = matrix[index][0];
        float x0_l = max_x - max_y;
        float xe_l = max_x;
        float ye_l = max_y;
        float y0_l = 0;
        float y_l = (x_l - x0_l)/(xe_l-x0_l)*(ye_l - y0_l) + y0_l;

        if(matrix[index][1] >= y_l)   {
            srs4->AddXY(matrix[index][0],max_y+1);
            srs4->AddXY(matrix[index][0],y_l);
            srs4->AddXY(max_x+1,y_l);
        }
        else    {
            x_l = (matrix[index][1] - y0_l)*(xe_l - x0_l)/(ye_l - y0_l)+ x0_l;
            srs4->AddXY(x_l,max_y+1);
            srs4->AddXY(x_l,matrix[index][1]);
            srs4->AddXY(max_x+1,matrix[index][1]);
        }

    }

private:
    int max_i(int a, int b) {
        if(a>b) return a;
        else return b;
    }
};

class TForm1 : public TForm
{
__published:	// IDE-managed Components
    TPanel *Panel1;
    TChart *Chart1;
    TPointSeries *Series1;
    TLineSeries *Series2;
    TLineSeries *Series3;
    TLineSeries *Series4;
    TLineSeries *Series5;
    TGroupBox *GroupBox1;
    TLabel *Label1;
    TLabel *Label2;
    TLabel *Label3;
    TLabel *Label4;
    TLabel *Label5;
    TLabel *Label6;
private:	// User declarations
public:		// User declarations
    __fastcall TForm1(TComponent* Owner);
    int LoadFile(String);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Соседние файлы в папке Лабораторная работа №6 - Программа