绘制一个300x200像素大小的椭圆,然后以圆心为原点,绘制长度分别为400和300像素的x轴和y轴。标记椭圆的两个焦点;标记椭圆边上不在坐标轴上的一个点,并绘制连接焦点到该点的两条线。

最终效果:

//绘制一个300x200像素大小的椭圆,然后以圆心为原点,绘制长度分别为400和300像素的x轴和y轴。
//标记椭圆的两个焦点;标记椭圆边上不在坐标轴上的一个点,并绘制连接焦点到该点的两条线。
#include"../实践/GUI/Simple_window.h"
#include"GUI/Graph.h"


int main()
try
{
    using namespace Graph_lib;
    //创建一个1000x800大小的Simple_window。
    Simple_window win(Point(100,100), 1000,800 , "My_Window");
    //------------------------------------------------------------------------------------------
    //绘制一个300x200像素大小的椭圆。
    Graph_lib::Ellipse ee(Point(500, 400), 150, 100);
    ee.set_color(0);
    win.attach(ee);
    //------------------------------------------------------------------------------------------
    //以椭圆圆心为原点,绘制长度分别为400和300像素的x轴和y轴。
    Axis ax(Axis::x,Point(300, 400), 400,10,"x axis");
    ax.set_color(0);
    win.attach(ax);

    Axis ay(Axis::y, Point(500, 550), 300, 10, "y axis");
    ay.set_color(0);
    win.attach(ay);
    //------------------------------------------------------------------------------------------
    //标记椭圆的两个焦点。
    Circle f1(ee.focus1(), 5);
    f1.set_fill_color(Color::red);
    win.attach(f1);

    Text ff1(Point(ee.focus1().x-10, ee.focus1().y + 20), "F1");
    ff1.set_color(Color::red);
    win.attach(ff1);

    Circle f2(ee.focus2(), 5);
    f2.set_fill_color(Color::red);
    win.attach(f2);

    Text ff2(Point(ee.focus2().x - 10, ee.focus2().y + 20), "F2");
    ff2.set_color(Color::red);
    win.attach(ff2);
    //------------------------------------------------------------------------------------------
    // 标记椭圆边上不在坐标轴上的一个点.
    Circle p(Point(600,400-sqrt(100*100-(100*100*100*100)/(150*150))), 5);
    p.set_fill_color(Color::blue);
    win.attach(p);

    Text pp(Point(p.center().x, p.center().y -10), "P");
    pp.set_color(Color::blue);
    win.attach(pp);
    //------------------------------------------------------------------------------------------
    // 绘制连接焦点到该点的两条线.
    Line l1(p.center(), f1.center());
    l1.set_color(Color::green);
    win.attach(l1);

    Line l2(p.center(), f2.center());
    l2.set_color(Color::green);
    win.attach(l2);
    //将控制权交给显示引擎,使GUI系统在屏幕上显示一个对象,并等待用户按下窗口中的“Next”,以便执行下面的程序。
    win.wait_for_button();
    //------------------------------------------------------------------------------------------
}
catch (exception& e) {
    cerr << "error: " << e.what() << '\n';
    return 1;
}
catch (...) {
    cerr << "Oops: unknown exception!\n";
    return 2;
};
//---------------------------------------------------------------------------------------------

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值