void graph2_1::paintEvent(QPaintEvent *) { /***********�����α߿���������**************/ QPainter *painter=new QPainter(this); painter->setRenderHint(QPainter::Antialiasing,true); painter->drawRect(10,10,380,230); QPoint beginPoint(50,200); QPoint xEndPoint(xEndX,xEndY); QPoint yEndPoint(yEndX,yEndY); painter->drawLine(beginPoint,xEndPoint); painter->drawLine(beginPoint,yEndPoint); //*****************����������ͷ*********/ int xOffset=13; brush.setColor(Qt::black); brush.setStyle(Qt::SolidPattern); painter->setBrush(brush); QPoint xarrowRightPoint(xEndX+xOffset,xEndY); QPoint xarrowTopPoint(xEndX,-xOffset*tan(PI/6)+xEndY); QPoint xarrowBotPoint(xEndX,xOffset*tan(PI/6)+xEndY); static const QPoint xarrowPoints[3] = { xarrowRightPoint,xarrowTopPoint,xarrowBotPoint, }; painter->drawPolygon(xarrowPoints,3); QPoint yarrowTopPoint(yEndX,yEndY-xOffset); QPoint yarrowRightPoint(xOffset*tan(PI/6)+yEndX,yEndY); QPoint yarrowLeftPoint(-xOffset*tan(PI/6)+yEndX,yEndY); static const QPoint yarrowPoints[3] = { yarrowTopPoint,yarrowLeftPoint,yarrowRightPoint, }; painter->drawPolygon(yarrowPoints,3); painter->setBrush(Qt::NoBrush); /************��ע������**********/ painter->drawText(xEndX,xEndY+20,tr("HZ")); //painter->rotate(270); painter->drawText(yEndY,yEndX+20,tr("dB")); //painter->rotate(90); /*************************/ QVector<qreal> dashes; qreal space = 3; dashes << 5 << space << 5 << space; pen.setDashPattern(dashes); pen.setWidth(2); pen.setColor(Qt::blue); painter->setPen(pen); QPoint point5(90,200); QPoint point6(100,155); QPoint point7(250,110); QPoint point8(300,80); painter->drawPath(drawBezierCurve(point5,point6)); painter->drawPath(drawBezierCurve(point6,point7)); painter->drawPath(drawBezierCurve(point7,point8)); }
void MyPrimitive::GenerateTube(float a_fOuterRadius, float a_fInnerRadius, float a_fHeight, int a_nSubdivisions, vector3 a_v3Color) { if (a_nSubdivisions < 3) a_nSubdivisions = 3; if (a_nSubdivisions > 360) a_nSubdivisions = 360; Release(); Init(); for (int i = 0; i < a_nSubdivisions; i++) { float ang = (2 * PI) / a_nSubdivisions; vector3 point0(a_fOuterRadius*cos((i + 1)*ang), a_fHeight, a_fOuterRadius*sin((i + 1)*ang)); //1 vector3 point1(a_fOuterRadius*cos(i*ang), 0, a_fOuterRadius*sin(i*ang)); //2 vector3 point2(a_fOuterRadius*cos(i*ang), a_fHeight, a_fOuterRadius*sin(i*ang)); //0 vector3 point3(a_fOuterRadius*cos((i + 1)*ang), 0, a_fOuterRadius*sin((i + 1)*ang)); //3 vector3 point4(a_fInnerRadius*cos((i + 1)*ang), a_fHeight, a_fInnerRadius*sin((i + 1)*ang)); //1 vector3 point5(a_fInnerRadius*cos(i*ang), 0, a_fInnerRadius*sin(i*ang)); //2 vector3 point6(a_fInnerRadius*cos(i*ang), a_fHeight, a_fInnerRadius*sin(i*ang)); //0 vector3 point7(a_fInnerRadius*cos((i + 1)*ang), 0, a_fInnerRadius*sin((i + 1)*ang)); //3 AddQuad(point4, point0, point6, point2); //Top AddQuad(point0, point3, point2, point1); //Outer AddQuad(point7, point5, point3, point1); //Bottom AddQuad(point5, point7, point6,point4 ); // Inner } //Your code ends here CompileObject(a_v3Color); }
void MyPrimitive::GenerateCube(float a_mSize, vector3 a_vColor) { //If the size is less than this make it this large if (a_mSize < 0.01f) a_mSize = 0.01f; //Clean up Memory Release(); Init(); float fValue = 0.5f * a_mSize; //3--2 //| | //0--1 vector3 point0(-fValue, -fValue, fValue); //0 vector3 point1(fValue, -fValue, fValue); //1 vector3 point2(fValue, fValue, fValue); //2 vector3 point3(-fValue, fValue, fValue); //3 //7--6 //| | //4--5 vector3 point4(-fValue, -fValue, -fValue); //4 vector3 point5(fValue, -fValue, -fValue); //5 vector3 point6(fValue, fValue, -fValue); //6 vector3 point7(-fValue, fValue, -fValue); //7 //F AddQuad(point0, point1, point3, point2); //B AddQuad(point5, point4, point6, point7); //L AddQuad(point4, point0, point7, point3); //R AddQuad(point1, point5, point2, point6); //U AddQuad(point3, point2, point7, point6); //D AddQuad(point4, point5, point0, point1); //Compile the object in this color and assign it this name CompileObject(a_vColor); }
void MyPrimitive::GenerateCube(float a_fSize, vector3 a_v3Color) { if (a_fSize < 0.01f) a_fSize = 0.01f; Release(); Init(); float fValue = 0.5f * a_fSize; //3--2 //| | //0--1 vector3 point0(-fValue, -fValue, fValue); //0 vector3 point1(fValue, -fValue, fValue); //1 vector3 point2(fValue, fValue, fValue); //2 vector3 point3(-fValue, fValue, fValue); //3 vector3 point4(-fValue, -fValue, -fValue); //4 vector3 point5(fValue, -fValue, -fValue); //5 vector3 point6(fValue, fValue, -fValue); //6 vector3 point7(-fValue, fValue, -fValue); //7 //F AddQuad(point0, point1, point3, point2); //B AddQuad(point5, point4, point6, point7); //L AddQuad(point4, point0, point7, point3); //R AddQuad(point1, point5, point2, point6); //U AddQuad(point3, point2, point7, point6); //D AddQuad(point4, point5, point0, point1); CompileObject(a_v3Color); }