chunye19950806 2015-05-26 10:27 采纳率: 50%
浏览 5874
已采纳

java如何画圆弧!!!!

知道一个圆弧的两个端点和终点还有角度,怎么将这个圆弧画出来?用java,说出具体的方法及过程,谢谢了!

  • 写回答

8条回答

  • JonsonJiao 2015-05-27 03:46
    关注

    想了想你这个问题,你这个需要解方程来确定圆弧所在圆或椭圆的方程的,而这个实现起来是比较麻烦的,我试着写了一下,没有写完,需要考虑的条件很多,有些复杂,先说下思路吧:
    1、先假设三个点落在圆上,圆相比椭圆要好一些;
    1)根据三个点的坐标求出圆心和半径来
    因为知道三个点的坐标,根据圆的方程是可以求出方程中的三个参数的,如果直接用圆方程求会比较麻烦,涉及到二次运算;
    可以使用另一种方式,即起点和中点连线的中垂线与终点和中点连线的中垂线相交就是圆心了。
    求出圆心后就能知道半径了,这样就确定了圆的方程,比如是(x-a)*(x-a)+(y-b)*(y-b)=r*r,a,b是圆心,r是半径
    2)其实这时候要判断假设的对不对了,如果假设圆正确,那么圆心与两个端点的夹角与给定的圆弧对应角度应该是一样的,否则不一样
    已知圆心O(a,b)与两个端点(如A(x1,y1)和B(x2,y2))的坐标,可以使用余弦定理求出角AOB的度数,这个不难请自行百度。
    2-1假设通过检测的话说明三个点就是在圆上,
    2-1-1)有了圆的方程就知道圆的外接矩形的左上角坐标和宽度、高度了
    左上角坐标x=a-r,y=b-r,width=r+r,height=r+r;
    需要这些参数是因为画弧线的方法中需要使用到这些参数。
    2-1-2)求起始的角度
    起始角度也是绘制圆弧所需要的参数,这个的计算可以通过起始端点与圆心连线的斜率来求,这个里面也要分情况,需要说明的是在Java中绘制圆弧的起始角度0表示水平正值方向,
    比如起始端点为(1,0),那么起始角度为0,起始端点为(0,1),那么起始角度为90,这里用度表示,使用中也是。
    注意起始端点在四个象限分别处理起始的角度。
    2-1-3)求终止角度,有了起始角度加上给定的弧度对应角度就是终止角度了。
    2-1-4)绘制
    最后调用drawArc(x,y,width,height,startAngle,endAngle)就可以绘制了。

    2-2)假设没有通过检测,说明三个点不在圆上,需要计算椭圆的方程了。
        这个没有具体的写代码,先看看上面的是否符合要求吧。
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥15 Oracle触发器记录修改前后的字段值
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题