本文将要讨论的是椭圆中心到椭圆切线的距离公式,在求这个距离之前,我们首先要知道两个定理。


定理1:椭圆


      

椭圆中心到椭圆切线的距离_ios


      上的点

椭圆中心到椭圆切线的距离_ios_02

到椭圆左,右焦点的距离分别是

椭圆中心到椭圆切线的距离_#include_03


椭圆中心到椭圆切线的距离_ios_04

,其中

椭圆中心到椭圆切线的距离_php_05

是椭圆的离心率。



定理2:椭圆(1)上的点

椭圆中心到椭圆切线的距离_ios_02

处的切线方程是


     

椭圆中心到椭圆切线的距离_php_07


实际上这两个定理都是很容易证明的,这是高中所学的知识,此处不再赘述。接下来我们来认识一个定理。


定理3:椭圆(1)的中心(也就是坐标原点)到以椭圆上的点

椭圆中心到椭圆切线的距离_ios_02

为切点的切线的距离

椭圆中心到椭圆切线的距离_php_09

与椭圆的半长轴和半短

      周及焦半径的关系是

                      

椭圆中心到椭圆切线的距离_ios_10


现在我们来简略证明一下。


证明:定理2可以知道

    

椭圆中心到椭圆切线的距离_ios_11

     又因为点

椭圆中心到椭圆切线的距离_ios_02

在椭圆(1)上,那么有


    

椭圆中心到椭圆切线的距离_ios_13

,所以进一步得到


    

椭圆中心到椭圆切线的距离_ios_14


      所以继续得到


     

椭圆中心到椭圆切线的距离_ios_15


      又因为

椭圆中心到椭圆切线的距离_php_16

,所以最终得到


     

椭圆中心到椭圆切线的距离_ios_10

 

题目:http://acm.hdu.edu.cn/showproblem.php?pid=2876

 

题意:

椭圆中心到椭圆切线的距离_#include_18

的值,那么答案也就是

椭圆中心到椭圆切线的距离_ios_19



代码:

#include <iostream>
#include <string.h>
#include <algorithm>
#include <stdio.h>
#include <math.h>

using namespace std;

int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        double a,b,x,y;
        scanf("%lf%lf%lf%lf",&a,&b,&x,&y);
        if((x*x)/(a*a) + (y*y)/(b*b) < 1)
        {
            printf("In ellipse\n");
            continue;
        }
        printf("%.0lf\n",a*a*b*b);
    }
    return 0;
}