Скачиваний:
10
Добавлен:
02.05.2014
Размер:
2.31 Кб
Скачать
#pragma hdrstop
#include "Germeyer.h"
_fastcall Germeyer::Germeyer(int **matrix, int row, float F_q1, float F_q2){
        index = 0;
        q1 = F_q1;
        q2 = F_q2;
        float max=0, temp;
        for(int i=0;i<row;i++) {
            temp = min_i(matrix[i][0]*q1,matrix[i][1]*q2);
            if(temp > max) {
                max = temp;
                index = i;
            }
        }
    }
    void Germeyer::DrawPoint(TChartSeries *srs,int **matrix, int row){
        for(int i=0;i<row;i++)  srs->AddXY(matrix[i][0],matrix[i][1]);
    }
    void Germeyer::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(0,0);
        float line = max_i(max_x,max_y);
        srs3->AddXY(2*line*q2, 2*line*q1);

        float x_l = matrix[index][0];
        float x0_l = 0;
        float xe_l = 2*line*q2;
        float ye_l = 2*line*q1;
        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]);
        }
    }
    float Germeyer::min_i(float a, float b) {
        if(a<b) return a;
        else return b;
    }
    float Germeyer::max_i(float a, float b) {
        if(a>b) return a;
        else return b;
    }

#pragma package(smart_init)
 
Соседние файлы в папке Лабораторная работа №6 - Программа4