精华内容
下载资源
问答
  • 如题,已经知道圆心和两点,画出两点间的圆弧,思路,先分别出原点到两点向量x轴间的夹角余弦值,然后反余弦得出角度,这里要注意的是,出的向量的夹角是按几何坐标系中定义的逆时针,然后用DrawArc()函数画...

    如题,已经知道圆心和两点,画出两点间的圆弧,思路,先分别求出原点到两点向量和x轴间的夹角余弦值,然后求反余弦得出角度,这里要注意的是,求出的向量的夹角是按几何坐标系中定义的逆时针,然后用DrawArc()函数画圆弧。

    如图的三点:o(200,200),a(100,100),b(300,100)

    求夹角的方法是使用高中学过的向量求夹角公式:

    通过该公式,很方便地求出a,b向量的夹角的余弦值,然后使用反余弦函数求出弧长,然后用弧长radian*(180/pi)求出几何坐标系中的夹角。

    这个时候值得注意的是C#里面GDI+使用的坐标体系与常用的几何坐标系有所不同,所以画圆弧使用DrawArc()函数的时候要小心,从MSDN中可以看到DrawArc()的用法:

    C# public void DrawArc (Pen pen,float x,float y,float width,float height,float startAngle,float sweepAngle)

    参数

    penPen,它确定弧线的颜色、宽度和样式。x定义椭圆的矩形的左上角的 x 坐标。y定义椭圆的矩形的左上角的 y 坐标。width定义椭圆的矩形的宽度。height定义椭圆的矩形的高度。startAngle从 x 轴到弧线的起始点沿顺时针方向度量的角(以度为单位)。sweepAngle从 startAngle 参数到弧线的结束点沿顺时针方向度量的角(以度为单位)。

    这里的startAngle 是从 x 轴到弧线的起始点沿顺时针方向度量的角,而不是几何坐标体系中的逆时针所以使用startAngle 的时候,要在原来的坐标体系值加上90度,下面贴出源程序:

    运行情况为:

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Text;

    using System.Windows.Forms;

    namespace draw

    {

    public partial class Form1 : Form

    {

    public Form1()

    {

    InitializeComponent();

    }

    private void Form1_Paint(object sender, PaintEventArgs e)

    {

    //三个点,O为原点,A、B为圆上另外两点

    Point Point_O = new Point(200, 200);

    Point Point_A = new Point(100, 100);

    Point Point_B = new Point(300, 100);

    //x轴上的向量

    int Vector_Xx = 100;

    int Vector_Xy = 0;

    //oa向量

    int Vector_ax = Point_A.X - Point_O.X;

    int Vector_ay = Point_A.Y - Point_O.Y;

    //ob向量

    int Vector_bx = Point_B.X - Point_O.X;

    int Vector_by = Point_B.Y - Point_O.Y;

    //oa和X轴上向量的点乘积

    int Point_Mul_a = (Vector_ax * Vector_Xx) + (Vector_ay * Vector_Xy);

    double Mul_a = Math.Sqrt(Vector_ax * Vector_ax + Vector_ay * Vector_ay) * Math.Sqrt(Vector_Xx * Vector_Xx + Vector_Xy * Vector_Xy);

    //计算oa和x轴夹角余弦值

    double Cos_a = Point_Mul_a / Mul_a;

    double A_Cos = Math.Acos(Cos_a);

    //求出几何坐标系中的角度,即按逆时针的方法

    double A_Angle = A_Cos * (180 / Math.PI);

    //b和X轴上向量的点乘积

    int Point_Mul_b = (Vector_bx * Vector_Xx) + (Vector_by * Vector_Xy);

    double Mul_b = Math.Sqrt(Vector_bx * Vector_bx + Vector_by * Vector_by) * Math.Sqrt(Vector_Xx * Vector_Xx + Vector_Xy * Vector_Xy);

    计算b和x轴夹角余弦值

    double Cos_b = Point_Mul_b / Mul_b;

    double B_Cos = Math.Acos(Cos_b);

    //求出几何坐标系中的角度,即按逆时针的方法

    double B_Angle = B_Cos * (180 / Math.PI);

    //初始化画板

    Graphics gr = this.CreateGraphics();

    Brush br = new SolidBrush(Color.Black);

    Pen pe = new Pen(Color.Black, 10);

    //画出原点

    gr.FillEllipse(br,200,200,7,7);

    //画出圆弧

    gr.DrawArc(pe, 100, 100, 200, 200, (float)(A_Angle+90), (float)(A_Angle-B_Angle));

    }

    }

    }

    程序后的思考:本程序没有关心圆弧到底是劣弧还是优弧,要视使用情况而定。

    展开全文
  • 思路,先分别出原点到两点向量x轴间的夹角余弦值,然后反余弦得出角度,这里要注意的是,出的向量的夹角是按几何坐标系中定义的逆时针,然后用DrawArc()函数画圆弧。注意的是C#里面GDI+使用的坐标体系与常用...
    (本文转载自)http://www.cnblogs.com/stalwart/archive/2010/12/06/1897636.html
    如题,已经知道圆心和两点,画出两点间的圆弧,思路,先分别求出原点到两点向量和x轴间的夹角余弦值,然后求反余弦得出角度,这里要注意的是,求出的向量的夹角是按几何坐标系中定义的逆时针,然后用DrawArc()函数画圆弧。
    如图的三点:o(200,200),a(100,100),b(300,100)
    求夹角的方法是使用高中学过的向量求夹角公式:
    通过该公式,很方便地求出a,b向量的夹角的余弦值,然后使用反余弦函数求出弧长,然后用弧长radian*(180/pi)求出几何坐标系中的夹角。
    这个时候值得注意的是C#里面GDI+使用的坐标体系与常用的几何坐标系有所不同,所以画圆弧使用DrawArc()函数的时候要小心,从MSDN中可以看到DrawArc()的用法:
    C#
    public void DrawArc (Pen pen,float x,float y,float width,float height,float startAngle,float sweepAngle)
    参数
    pen
    Pen,它确定弧线的颜色、宽度和样式。
    x
    定义椭圆的矩形的左上角的 x 坐标。
    y
    定义椭圆的矩形的左上角的 y 坐标。
    width
    定义椭圆的矩形的宽度。
    height
    定义椭圆的矩形的高度。
    startAngle
    从 x 轴到弧线的起始点沿顺时针方向度量的角(以度为单位)。
    sweepAngle
    从 startAngle 参数到弧线的结束点沿顺时针方向度量的角(以度为单位)。
     
     
     
     
    这里的startAngle 是从 x 轴到弧线的起始点沿顺时针方向度量的角,而不是几何坐标体系中的逆时针所以使用startAngle 的时候,要在原来的坐标体系值加上90度,下面贴出源程序:
    运行情况为:
     
     
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    namespace draw
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                
            }
            private void Form1_Paint(object sender, PaintEventArgs e)
            {
                //三个点,O为原点,A、B为圆上另外两点
                Point Point_O = new Point(200, 200);
                Point Point_A = new Point(100, 100);
                Point Point_B = new Point(300, 100);
                //x轴上的向量
                int Vector_Xx = 100;
                int Vector_Xy = 0;
                //oa向量
                int Vector_ax = Point_A.X - Point_O.X;
                int Vector_ay = Point_A.Y - Point_O.Y;
                //ob向量
                int Vector_bx = Point_B.X - Point_O.X;
                int Vector_by = Point_B.Y - Point_O.Y;
                //oa和X轴上向量的点乘积
                int Point_Mul_a = (Vector_ax * Vector_Xx) + (Vector_ay * Vector_Xy);
                double Mul_a = Math.Sqrt(Vector_ax * Vector_ax + Vector_ay * Vector_ay) * Math.Sqrt(Vector_Xx * Vector_Xx + Vector_Xy * Vector_Xy);
                
                
                //计算oa和x轴夹角余弦值
                double Cos_a = Point_Mul_a / Mul_a;
                double A_Cos = Math.Acos(Cos_a);
                //求出几何坐标系中的角度,即按逆时针的方法
                double A_Angle = A_Cos * (180 / Math.PI);

                //b和X轴上向量的点乘积
                int Point_Mul_b = (Vector_bx * Vector_Xx) + (Vector_by * Vector_Xy);
                double Mul_b = Math.Sqrt(Vector_bx * Vector_bx + Vector_by * Vector_by) * Math.Sqrt(Vector_Xx * Vector_Xx + Vector_Xy * Vector_Xy);
                计算b和x轴夹角余弦值
                double Cos_b = Point_Mul_b / Mul_b;
                double B_Cos = Math.Acos(Cos_b);
                //求出几何坐标系中的角度,即按逆时针的方法
                double B_Angle = B_Cos * (180 / Math.PI);

                //初始化画板
                Graphics gr = this.CreateGraphics();
                Brush br = new SolidBrush(Color.Black);
                Pen pe = new Pen(Color.Black, 10);
                //画出原点
                gr.FillEllipse(br,200,200,7,7);

                //画出圆弧
                gr.DrawArc(pe, 100, 100, 200, 200, (float)(A_Angle+90), (float)(A_Angle-B_Angle));
                
            }
        }
    }
     
    程序后的思考:本程序没有关心圆弧到底是劣弧还是优弧,要视使用情况而定。
    展开全文
  • Problem 12 两点角度

    2019-01-05 18:19:13
    使用数学反三角函数分别两点与x轴夹角弧度值,再对弧度值做差,进而出夹角角度。 细节: 对于反三角函数的选择有很多,每一种都可以选择,这里采用的是atan2。既然使用反三角函数,就要有math.h的预处理文件...
    • 题目描述:

     在一个平面内有两个点,求两个点分别和原点的连线的夹角的大小。

    注:夹角的范围[0,180],两个点不会在圆心出现。

    • 思路:

    使用数学反三角函数分别求出两点与x轴夹角弧度值,再对弧度值做差,进而求出夹角角度。

    • 细节:

    对于反三角函数的选择有很多,每一种都可以选择,这里采用的是atan2。既然使用反三角函数,就要有math.h的预处理文件。以及定义点坐标时应使用double定义。

    • 源代码:
      #include<iostream>
      #include <math.h>
      #include<cstdio>
      using namespace std;
      #define PI 3.141592653
      int main()
      {
          double x1,y1,x2,y2,a1,a2,a3;
          int n;
          cin>>n;
          for(int i=0;i<n;i++)
          {
              cin>>x1>>y1>>x2>>y2;
              a1=atan2(y1,x1);
              a2=atan2(y2,x2);
              a3=fabs(a1-a2);
              printf("%.2lf\n",a3*180/PI);
          }
          return 0;
      }
       
      

       

    展开全文
  • 如题,已经知道圆心和两点,画出两点间的圆弧,思路,先分别出原点到两点向量x轴间的夹角余弦值,然后反余弦得出角度,这里要注意的是,出的向量的夹角是按几何坐标系中定义的逆时针,然后用DrawArc()函数画...
    如题,已经知道圆心和两点,画出两点间的圆弧,思路,先分别求出原点到两点向量和x轴间的夹角余弦值,然后求反余弦得出角度,这里要注意的是,求出的向量的夹角是按几何坐标系中定义的逆时针,然后用DrawArc()函数画圆弧。
    如图的三点:o(200,200),a(100,100),b(300,100)
    求夹角的方法是使用高中学过的向量求夹角公式:
    通过该公式,很方便地求出a,b向量的夹角的余弦值,然后使用反余弦函数求出弧长,然后用弧长radian*(180/pi)求出几何坐标系中的夹角。
    这个时候值得注意的是C#里面GDI+使用的坐标体系与常用的几何坐标系有所不同,所以画圆弧使用DrawArc()函数的时候要小心,从MSDN中可以看到DrawArc()的用法:
    C#
    public void DrawArc (Pen pen,float x,float y,float width,float height,float startAngle,float sweepAngle)
    参数
    pen
    Pen,它确定弧线的颜色、宽度和样式。
    x
    定义椭圆的矩形的左上角的 x 坐标。
    y
    定义椭圆的矩形的左上角的 y 坐标。
    width
    定义椭圆的矩形的宽度。
    height
    定义椭圆的矩形的高度。
    startAngle
    从 x 轴到弧线的起始点沿顺时针方向度量的角(以度为单位)。
    sweepAngle
    startAngle 参数到弧线的结束点沿顺时针方向度量的角(以度为单位)。
     
     
     
     
    这里的startAngle 是从 x 轴到弧线的起始点沿顺时针方向度量的角,而不是几何坐标体系中的逆时针所以使用startAngle 的时候,要在原来的坐标体系值加上90度,下面贴出源程序:
    运行情况为:
     
     
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    namespace draw
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
               
            }
            private void Form1_Paint(object sender, PaintEventArgs e)
            {
                //三个点,O为原点,A、B为圆上另外两点
                Point Point_O = new Point(200, 200);
                Point Point_A = new Point(100, 100);
                Point Point_B = new Point(300, 100);
                //x轴上的向量
                int Vector_Xx = 100;
                int Vector_Xy = 0;
                //oa向量
                int Vector_ax = Point_A.X - Point_O.X;
                int Vector_ay = Point_A.Y - Point_O.Y;
                //ob向量
                int Vector_bx = Point_B.X - Point_O.X;
                int Vector_by = Point_B.Y - Point_O.Y;
                //oa和X轴上向量的点乘积
                int Point_Mul_a = (Vector_ax * Vector_Xx) + (Vector_ay * Vector_Xy);
                double Mul_a = Math.Sqrt(Vector_ax * Vector_ax + Vector_ay * Vector_ay) * Math.Sqrt(Vector_Xx * Vector_Xx + Vector_Xy * Vector_Xy);
               
               
                //计算oa和x轴夹角余弦值
                double Cos_a = Point_Mul_a / Mul_a;
                double A_Cos = Math.Acos(Cos_a);
                //求出几何坐标系中的角度,即按逆时针的方法
                double A_Angle = A_Cos * (180 / Math.PI);

                //b和X轴上向量的点乘积
                int Point_Mul_b = (Vector_bx * Vector_Xx) + (Vector_by * Vector_Xy);
                double Mul_b = Math.Sqrt(Vector_bx * Vector_bx + Vector_by * Vector_by) * Math.Sqrt(Vector_Xx * Vector_Xx + Vector_Xy * Vector_Xy);
                计算b和x轴夹角余弦值
                double Cos_b = Point_Mul_b / Mul_b;
                double B_Cos = Math.Acos(Cos_b);
                //求出几何坐标系中的角度,即按逆时针的方法
                double B_Angle = B_Cos * (180 / Math.PI);

                //初始化画板
                Graphics gr = this.CreateGraphics();
                Brush br = new SolidBrush(Color.Black);
                Pen pe = new Pen(Color.Black, 10);
                //画出原点
                gr.FillEllipse(br,200,200,7,7);

                //画出圆弧
                gr.DrawArc(pe, 100, 100, 200, 200, (float)(A_Angle+90), (float)(A_Angle-B_Angle));
               
            }
        }
    }
     
    程序后的思考:本程序没有关心圆弧到底是劣弧还是优弧,要视使用情况而定。

    本文出自 “waster” 博客,http://waster.blog.51cto.com/117583/82851

    转载于:https://www.cnblogs.com/stalwart/archive/2010/12/06/1897636.html

    展开全文
  • 根据圆心离心角

    2018-08-03 19:05:41
    个架设不影响,“圆心角”离心角。 令椭圆中心为O,长轴半长为a,短轴半长为b。以O为中心,b为半径做圆,以下简称小圆。以O为中心,a为半径做圆,以下简称大圆。以O为端点,任意离心角度t,作射线,交...
  • 预备知识矩阵乘法介绍略,去网上查吧(差)公式推导旋转变换一般是按照某个圆心点,以一定半径 r 旋转一定的角度α,为了简单起见我们给出下面的情景假定点A(x,y)想经过旋转变换到达B(x',y'),已知旋转角度α...
  • 这次xhd面临的问题是这样的:在一个平面内有求两分别原点的连线的夹角的大小。注:夹角的范围[0,180],不会在圆心出现。 Input 输入数据的第一行是一个数据T,表示有T组数据。每组数据有四个...
  • 对于直角三角形钝角三角形来的话,就是以直角为中介,如果产生的是直角的话,那么枚举的这个对应的那个的连线经过圆心,也就是每次二分找到一个于180最接近的,那么这直接的所有的都能抽出个与...
  • 线段与圆弧的交点

    2020-12-29 10:22:55
    最近面试遇到一个问题,就是已知一条线段的个端点坐标,一个圆弧(起始逆时针旋转到终止的圆弧)的圆心坐标,半径,起始角终止角(起始角终止角是指以x轴正方向为起点,逆时针转动的角度),线段圆弧的...
  • 概念弧度 角度定义:弧长为半径的狐,其所对的圆心角为1弧度。(条射线从圆心向圆周射出,形成一个夹角夹角正对的一段狐。当这段弧长正好等于圆的半径时,条射线的夹角的弧度...形成的直线x的夹角ta...
  • 1.如果根据给出的中心和角度求四个圆心的坐标 2.如何求凸包 对于问题2我们可以愉快的上凸包的模板了! 对于问题1: 设当前为(x,y),将其绕原点逆时针旋转z°z°z°得到的坐标为: (x∗cos(z)−y∗sin(z),y
  • DyShape.cs

    2020-05-11 23:38:28
    用C# gdi 绘制五角星,八卦图,关闭...通过圆上的两点和圆心坐标,返回得到的两点之间的圆心角 获取两点之间的夹角 返回两点之间的直线距离 将文字轮换为Icon图标(默认用宋体) 根据大小调整指定文本和字体名称的大小
  • 链接 ...至于方向问题,在r得时候 可以使r = asin((p.x-c.x)/d) p为源点,c为圆心 ,d为两点距离。 若在反方向,自然r为负角 ,并不影响最后的结果。 排序后,统计区间就可以了。 1 ...
  • Problem 13. 夹角度数

    2019-01-05 10:38:37
    Problem 13. 夹角度数 题目简述:  在一个平面内有两个点,两个点分别和原点的...利用给定的两点和(0,0)分别出三边的长,就可将cosA表示出来,再用反三角函数acos()即可。 细节处理: 因为题目中给定了夹角...
  • HDU 4454 杭州赛区现场赛B题

    千次阅读 2012-11-08 19:16:24
    就是三分~囧~现场赛时把三分的下界写错了一直到最后也没过~另外还把切点...在红色圆弧上取一个到起点的距离和点到矩形的距离,则在这段圆弧上的距离一定是凹函数,我是选择三分角度求圆弧上的。 当天现场
  • HDU 4998 Rotate --几何

    2014-11-27 18:44:45
    解法:直接模拟旋转,每次计算新的坐标,最后选个新的分别他们原来的连一条线,条线的中垂线的交点即为圆心出了圆心就可以出转了多少弧度了。 注意判中垂线垂直x轴的情况以及n==1的情况。 最后...
  • 题意:给出n个球的圆心坐标半径大小,从原点扔飞镖,最小飞镖数使刺破所有球。(飞镖是射线,球可以穿透,没有球包含原点) 解法:n个球对应n个角度区间,然后这是一个(-PI,PI]内的环状区间选点问题,要求选最少...
  • POJ-2504(简单几何)

    2012-03-15 15:59:50
    yy1),(xx2,yy2)(xx3,yy3),要求外接圆圆心坐标(x,y),有圆心O到三个顶点A,B,C距离相等,可得个方程,联立求解这个方程,即可得外接圆圆心坐标,而根据已经求得的圆心坐标向量旋转公式就可以出正多边形其它顶点的...
  • 计算方法:通过圆心的坐标O圆上一点M的坐标可以利用这个关系出切线的斜率K值 k=-(O.x-M.x)/(O.y-M.y); 这样就可以出切线的斜率,然后再通过反正切可以出切线的倾斜角度A值。 我们使用f...
  • 1、设rand(s,t)返回[s,t]之间的随机小数,利用该函数在一个半径为R的圆内找随机n个,并给出时间复杂度...b:已知圆心的距离该连线的角度,也可以。 第一种情况:x = rand(-1,1)*R;y = rand(-1,1)*R则(x,
  • 题意:给出一个圆O严格在圆内的两点A,B,在圆上一点C使得∠ACB最大。tip:A,B,C所构成的外接圆与圆O相切时最大。因为AB所在的圆,无论半径多大,所对应的圆周角是固定的,且半径越大角度越小,所有在相切时最好...

空空如也

空空如也

1 2 3
收藏数 46
精华内容 18
关键字:

两点和角度求圆心