Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "qpaintwidget.h"
- #include <QPainter>
- #include "math.h"
- QPaintWidget::QPaintWidget(QWidget *parent) :
- QWidget(parent)
- {
- sitka=0;mash=2;
- _scale=50;m1_x=0;m1_y=0;m1_k=0;metod=1;flag_move=0;
- }
- void QPaintWidget::paintEvent(QPaintEvent *)
- {
- double x1,y1,x2,y2;
- QPainter pa(this);
- int w = this->width();
- int h = this->height();
- int hw = w/2.;
- int hh = h/2.;
- double scale = _scale*mash;
- int xx,yy;xx=hw/mash;yy=hh/mash;
- if(metod==3)
- {hw=200;hh=2*hh-100;}
- if (sitka==1)
- {
- flag_move=1;
- pa.setPen(Qt::green);
- for(long int i=hw % (int)scale-scale*150;i<20*w;i+=scale)
- {
- x1=(i-hw)/mash;x2=x1;y1=-8*hh;y2=8*h;Met(&x1,&y1);Met(&x2,&y2);
- pa.drawLine(hw+x1*mash,hh-y1*mash,hw+x2*mash,hh-y2*mash);
- }
- for(int i=hh % (int)scale-scale*150;i<40*h;i+=scale)
- {
- x1=-xx-8*hw/mash;x2=+xx+8*hw/mash+500;y1=(hh-i)/mash;y2=y1;
- Met(&x1,&y1);Met(&x2,&y2);
- pa.drawLine(hw+x1*mash,hh-y1*mash,hw+x2*mash,hh-y2*mash);
- }
- flag_move=0;
- }
- flag_move=1;
- pa.setPen(Qt::red);
- for(int i=hw % (int)scale;i<w;i+=scale)
- {
- x1=(i-hw)/mash;y1=-yy-3+hh/mash;x2=x1;y2=-yy+3+hh/mash;Met(&x1,&y1);Met(&x2,&y2);
- pa.drawLine(hw+x1*mash,hh-y1*mash,hw+x2*mash,hh-y2*mash);//метки по Х
- }
- for(int i=hh % (int)scale;i<h;i+=scale)
- {
- x1=-xx+hw/mash-5;x2=-xx+hw/mash+5;y1=(hh-i)/mash;y2=y1;Met(&x1,&y1);Met(&x2,&y2);
- pa.drawLine(hw+x1*mash,hh-y1*mash,hw+x2*mash,hh-y2*mash);//метки по Х
- }
- flag_move=0;
- pa.setPen(Qt::black);
- //osi
- flag_move=1;
- x1=-20*xx;y1=-0;x2=xx*20;y2=-0;Met(&x1,&y1);Met(&x2,&y2);
- pa.drawLine(hw+x1*mash,hh-y1*mash,hw+x2*mash,hh-y2*mash);
- x1=-0;y1=-20*yy;x2=0;y2=20*yy;Met(&x1,&y1);Met(&x2,&y2);
- pa.drawLine(hw+x1*mash,hh-y1*mash,hw+x2*mash,hh-y2*mash);
- flag_move=0;
- if (metod==4)
- {
- //tochka vidnosno yakoyi povorot
- int _t=5;
- pa.drawLine(hw+m1_x*mash-_t,hh-m1_y*mash-_t,hw+m1_x*mash+_t,hh-m1_y*mash+_t);
- pa.drawLine(hw+m1_x*mash+_t,hh-m1_y*mash-_t,hw+m1_x*mash-_t,hh-m1_y*mash+_t);
- }
- //kvadrat
- x1=-100;y1=100;x2=-100;y2=-100;Met(&x1,&y1);Met(&x2,&y2);
- pa.drawLine(hw+x1*mash,hh-y1*mash,hw+x2*mash,hh-y2*mash);
- x1=100;y1=100;x2=100;y2=-100;Met(&x1,&y1);Met(&x2,&y2);
- pa.drawLine(hw+x1*mash,hh-y1*mash,hw+x2*mash,hh-y2*mash);
- x1=100;y1=100;x2=-100;y2=100;Met(&x1,&y1);Met(&x2,&y2);
- pa.drawLine(hw+x1*mash,hh-y1*mash,hw+x2*mash,hh-y2*mash);
- x1=100;y1=-100;x2=-100;y2=-100;Met(&x1,&y1);Met(&x2,&y2);
- pa.drawLine(hw+x1*mash,hh-y1*mash,hw+x2*mash,hh-y2*mash);
- //diagonali
- pa.setPen(Qt::yellow);
- x1=100;y1=-100;x2=-100;y2=100;Met(&x1,&y1);Met(&x2,&y2);
- pa.drawLine(hw+x1*mash,hh-y1*mash,hw+x2*mash,hh-y2*mash);
- x1=100;y1=100;x2=-100;y2=-100;Met(&x1,&y1);Met(&x2,&y2);
- pa.drawLine(hw+x1*mash,hh-y1*mash,hw+x2*mash,hh-y2*mash);
- }
- void QPaintWidget::Met(double *_x, double *_y)
- {
- double _X,_Y,x,y;
- x=*_x; y=*_y;
- if (metod==1)
- {
- //x=x-m1_x; y=y-m1_y;
- _X=x; _Y=y;
- x=_X*cos(m1_k)-_Y*sin(m1_k);
- y=_X*sin(m1_k)+_Y*cos(m1_k);//*/
- x=x+m1_x; y=y+m1_y;
- *_x=x;*_y=y;
- }
- if (metod==2)
- {
- //afinni
- _X=m2_x1*x+m2_y1*y;
- _Y=m2_x2*x+m2_y2*y;
- if (flag_move==0){_X+=X0;_Y+=Y0;}
- *_x=_X;*_y=_Y;
- }
- if (metod==3)
- {
- //proektivniy
- //////////////////////////////////////////////////////////////////////////////////////////////////////
- //error maybe where
- _X=(m3_X0*m3_W0*0+m3_Xx*m3_Wx*x+m3_Xy*m3_Wy*y)/(m3_Wx*x+m3_Wy*y+m3_W0);
- _Y=(m3_Y0*m3_W0*0+m3_Yx*m3_Wx*x+m3_Yy*m3_Wy*y)/(m3_Wx*x+m3_Wy*y+m3_W0);
- *_x=_X;*_y=_Y;
- }
- if (metod==4)
- {
- if (flag_move==0)
- {
- //ruh navkolo tochki
- //x=x-m1_x; y=y-m1_y;
- _X=x-m1_x; _Y=y-m1_y;
- x=_X*cos(m1_k)-_Y*sin(m1_k);
- y=_X*sin(m1_k)+_Y*cos(m1_k);//*/
- x=x+m1_x; y=y+m1_y;
- *_x=x;*_y=y;
- }
- }
- }
- void QPaintWidget::set_Sit(int _s)
- {
- sitka=_s;
- this->update();
- }
- void QPaintWidget::set_Met_1(double _k, double _x, double _y)
- {
- m1_k=_k;m1_x=_x;m1_y=_y;metod=1;
- }
- void QPaintWidget::set_Met_1A(double _k, double _x, double _y)
- {
- set_Met_1(_k,_x,_y);metod=4;
- }
- void QPaintWidget::set_Met_2(double _x1, double _y1, double _x2, double _y2, double _x0, double _y0)
- {
- m2_x1=_x1;m2_y1=_y1;m2_x2=_x2;m2_y2=_y2;X0=_x0;Y0=_y0;metod=2;
- }
- void QPaintWidget::set_Met_3(double _m3_xx, double _m3_xy, double _m3_yx, double _m3_yy, double _m3_wx, double _m3_wy, double _m3_x0, double _m3_y0, double _m3_w0)
- {
- m3_Xx=_m3_xx;m3_Xy=_m3_xy;
- m3_Yx=_m3_yx;m3_Yy=_m3_yy;
- m3_Wx=_m3_wx;m3_Wy=_m3_wy;
- m3_X0=_m3_x0;m3_Y0=_m3_y0;
- m3_W0=_m3_w0;
- metod=3;
- }
- void QPaintWidget::set_Mash(int _m)
- {
- mash=_m;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement