Скачиваний:
8
Добавлен:
02.05.2014
Размер:
2.99 Кб
Скачать
#pragma hdrstop
#include "Gurwitz.h"
__fastcall Gurwitz::Gurwitz (int **matrix, int row, float F_c){
    index = 0;
    c = F_c;
    float max=0, temp_min,temp_max, temp;
    for(int i=0;i<row;i++) {
        temp_min = min_i(matrix[i][0],matrix[i][1]) * c ;
        temp_max = max_i(matrix[i][0],matrix[i][1]) * (1-c);
        temp = temp_min + temp_max;
        if(temp > max) {
            max = temp;
            index = i;
        }
    }
}
void Gurwitz::DrawPoint(TChartSeries *srs,int **matrix, int row){
    for(int i=0;i<row;i++)  srs->AddXY(matrix[i][0],matrix[i][1]);
}
void Gurwitz::DrawRectangle(TChartSeries *srs1,TChartSeries *srs2,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);
}
void Gurwitz::DrawModify(TChartSeries *srs1,TChartSeries *srs2,TChartSeries *srs3,int **matrix, int row)
{
    srs1->Clear();
    srs2->Clear();
    srs3->Clear();
    for(int i=0;i<row;i++)  srs1->AddXY(min_i(matrix[i][0],matrix[i][1]) * c,max_i(matrix[i][0],matrix[i][1]) * (1-c));
    srs2->AddXY(0,0);
    srs2->AddXY(6,6);

    float middle_x = 6;
    float middle_y = 6;

    double x_dot = min_i(matrix[index][0],matrix[index][1])* c ;
    double y_dot = max_i(matrix[index][0],matrix[index][1])* (1-c);
    double y1 = x_dot/middle_x*middle_y;
    double angle_a  = atan(x_dot/y1);
    double angle_a_b = atan(x_dot/y_dot);
    double angle_b= angle_a_b - angle_a;
    double z1 = sqrt(x_dot*x_dot + y_dot*y_dot);
    double z2= z1*cos(angle_b);
    double z = sqrt(x_dot*x_dot + y1*y1);
    double cos_a = x_dot/z;
    double x_res = z2 * cos_a;
    double y_res = x_res/middle_x*middle_y;

    srs3->AddXY(x_dot,y_dot);
    srs3->AddXY(x_res-2,y_res+2);
    srs3->AddXY(x_res+2,y_res-2);
    srs3->AddXY(x_res,y_res);
}
void Gurwitz::AddToString(TStringGrid *grid,int **matrix, int row){
    for(int i = 0;i<row;i++){
        grid->Rows[i+1]->Clear();
        grid->Rows[i+1]->Add(matrix[i][0]);
        grid->Rows[i+1]->Add(matrix[i][1]);
        grid->Rows[i+1]->Add(min_i(matrix[i][0],matrix[i][1]) * c);
        grid->Rows[i+1]->Add(max_i(matrix[i][0],matrix[i][1]) * (1-c));
        grid->Rows[i+1]->Add((min_i(matrix[i][0],matrix[i][1]) * c)+(max_i(matrix[i][0],matrix[i][1]) * (1-c)));
    }
    grid->RowCount = row;
}
float Gurwitz::min_i(float a, float b)
{
    if(a<b) return a;
    else return b;
}
float Gurwitz::max_i(float a, float b){
    if(a>b) return a;
    else return b;
}
#pragma package(smart_init)
 
Соседние файлы в папке Лабораторная работа №6 - Программа3