• 主要由顶点容器构成的平面图形类(Shape)——(第一次作业Draw类定义升级)


    //  https://github.com/orocos/orocos_kinematics_dynamics/blob/master/orocos_kdl/src/frames.hpp
    //  Vector2 defination
    
    #include <iostream>
    #include <cstring>
    #include<string>
    #include <math.h>
    #include <vector>
    #include <frames.hpp>
    using namespace std;
    using namespace KDL;
    #define PI 3.1415926
    
    class Point    //二维点class 
    {
        public:
        Vector2 point;//二维点 
        string name; 
        Point(Vector2 v,string s){point=v;name=s;}; 
        Point(Vector2 v){point=v;}; 
        Point(double x,double y){point=Vector2(x,y);}
        Point(){};
        void move_p(double x,double y);//平移算子
        void rota_p(double an);//旋转算子 
    };
    void Point::move_p(double x,double y){point+=Vector2(x,y);}
    void Point::rota_p(double an){
        Rotation2 rot(-an/180*PI);
        point=rot.Inverse(point);
    } //class defination finished;   
    
    ostream&
    operator << (ostream& os, const Point& X)
    {
      return os << '(' << X.point.x()<< ',' << X.point.y()<< ')';
    }
    //重载运算符           
    
    class Shape   //由点构成的二维图形class 
    {
        public:
        string name;//名称 
        int n;        //顶点数 
        vector<Point> points;//顶点容器 
        Shape(string s){name=s;}
        Shape(){}
        void getpoint(Point p){points.push_back(p);}
        void move_s(double x,double y){for(int i=0;i<points.size();i++)points[i].move_p(x,y);}
        void rota_s(double an){for(int j=0;j<points.size();j++)points[j].rota_p(an);}
    };
    
    int main(){
        Point p(3,2),p1(2,3),p2(4,5);
         Shape s1("mine");
         s1.getpoint(p);
         s1.getpoint(p1);
         s1.getpoint(p2);
         
         
         cout<<"图形"<<s1.name<<"里面有"<<s1.points.size()<<"个点"<<endl;
         vector<Shape> volume(0);//图形容器 
         volume.push_back(s1);
         
         cout<<"当前有"<<volume.size()<<"个图形"<<endl;
         s1.move_s(1,2);
         for(int i=0;i<s1.points.size();i++)cout<<s1.points[i]<<endl;
          
    
        return 0;
    }
  • 相关阅读:
    注意:MagickReadImageBlob() 引发的问题
    Notepad++ 【自动完成】与【输入时提示函数参数】互相冲突,无奈
    收藏:png8和png24的根本区别
    【物理分辨率】与【逻辑分辨率】
    算法
    算法
    Linux 用户和文件
    Oracle索引技术研究
    Linux Socket
    Linux Socket
  • 原文地址:https://www.cnblogs.com/mememagic/p/5103195.html
Copyright © 2020-2023  润新知