Как слепить класс и метод.
- Войдите на сайт для отправки комментариев
Ср, 24/12/2014 - 03:49
Есть вот такая простыня. Но выглядит по дурацки.
// Using UTFT lib. #include <UTFT.h> // Declare which fonts we will be using extern uint8_t SmallFont[]; //Model and pin settings UTFT myHUD(HX8352A,22,23,31,33); void setup() { // Setup the LCD myHUD.InitLCD(); myHUD.setFont(SmallFont); } void loop() { int center_X = myHUD.getDisplayXSize() / 2; int center_Y = myHUD.getDisplayYSize() / 2; // Начальные координаты образа int Horiz_Left[4] = {center_X-8, center_Y, center_X-100, center_Y}; int Horiz_Left_Down_Mark[4] = {center_X-100, center_Y, center_X-100, center_Y+8}; int Horiz_Right[4] = {center_X+8, center_Y, center_X+100, center_Y}; int Horiz_Right_Down_Mark[4] = {center_X+100, center_Y, center_X+100, center_Y+8}; int RotatedCoord[4] ={}; myHUD.setColor(128,255,0); int Roll=33; //Например // Вращаем и рисуем образ в зависимости от угла. RotatedCoord[0] = RotateX(Horiz_Left[0],Horiz_Left[1],center_X,center_Y,Roll); RotatedCoord[1] = RotateY(Horiz_Left[0],Horiz_Left[1],center_X,center_Y,Roll); RotatedCoord[2] = RotateX(Horiz_Left[2],Horiz_Left[3],center_X,center_Y,Roll); RotatedCoord[3] = RotateY(Horiz_Left[2],Horiz_Left[3],center_X,center_Y,Roll); myHUD.drawLine(RotatedCoord[0], RotatedCoord[1], RotatedCoord[2], RotatedCoord[3]); RotatedCoord[0] = RotateX(Horiz_Left_Down_Mark[0],Horiz_Left_Down_Mark[1],center_X,center_Y,Roll); RotatedCoord[1] = RotateY(Horiz_Left_Down_Mark[0],Horiz_Left_Down_Mark[1],center_X,center_Y,Roll); RotatedCoord[2] = RotateX(Horiz_Left_Down_Mark[2],Horiz_Left_Down_Mark[3],center_X,center_Y,Roll); RotatedCoord[3] = RotateY(Horiz_Left_Down_Mark[2],Horiz_Left_Down_Mark[3],center_X,center_Y,Roll); myHUD.drawLine(RotatedCoord[0], RotatedCoord[1], RotatedCoord[2], RotatedCoord[3]); RotatedCoord[0] = RotateX(Horiz_Right[0],Horiz_Right[1],center_X,center_Y,Roll); RotatedCoord[1] = RotateY(Horiz_Right[0],Horiz_Right[1],center_X,center_Y,Roll); RotatedCoord[2] = RotateX(Horiz_Right[2],Horiz_Right[3],center_X,center_Y,Roll); RotatedCoord[3] = RotateY(Horiz_Right[2],Horiz_Right[3],center_X,center_Y,Roll); myHUD.drawLine(RotatedCoord[0], RotatedCoord[1], RotatedCoord[2], RotatedCoord[3]); RotatedCoord[0] = RotateX(Horiz_Right_Down_Mark[0],Horiz_Right_Down_Mark[1],center_X,center_Y,Roll); RotatedCoord[1] = RotateY(Horiz_Right_Down_Mark[0],Horiz_Right_Down_Mark[1],center_X,center_Y,Roll); RotatedCoord[2] = RotateX(Horiz_Right_Down_Mark[2],Horiz_Right_Down_Mark[3],center_X,center_Y,Roll); RotatedCoord[3] = RotateY(Horiz_Right_Down_Mark[2],Horiz_Right_Down_Mark[3],center_X,center_Y,Roll); myHUD.drawLine(RotatedCoord[0], RotatedCoord[1], RotatedCoord[2], RotatedCoord[3]); } // Функции вращения int RotateX(int x, int y, int axis_x, int axis_y, float Angle) { int x1 = axis_x + (x - axis_x) * cos(Angle*PI/180) - (y-axis_y) * sin(Angle*PI/180); return x1; } int RotateY(int x, int y, int axis_x, int axis_y, float Angle) { int y1 = axis_y + (y - axis_y) * cos(Angle*PI/180) + (x-axis_x) * sin(Angle*PI/180); return y1; }
Полскажите как из этого создать класс который:
при запуске конструктора сразу имел бы внутри center_X, center_Y (для совмещения с экранами разного разрешения)
имеет метод Draw (например) использующий метод класса UTFT или таки придётся передирать код рисования линии?
всё хочется уложит примерно в myHUD.Draw(Roll);
Не вдаваясь в подробности, например, так:
Плюс добавить методы RotateX,Y туда же, например, в protected: область.