Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа №6 - Программа3 / Gurwitz
.cpp#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)