数学思想:利用圆方程和直线方程
已知两点坐标和半径求圆心坐标程序
#include
#include
#include
using namespace std;
ofstream fout;
typedef struct
{
double x;
double y;
}Point;
double Y_Coordinates(double x,double y,double k,double x0);//4个参数
void Circle_Center(Point p1,Point p2,double dRadius);
bool Data_Validation(Point p1,Point p2,double dRadius);
void ReadData(Point &p1,Point &p2,double &dRadius);
void main()
{
Point p1,p2;
double dRadius = 0.0;
ReadData(p1,p2,dRadius);
fout.open("Result.txt");
Circle_Center(p1,p2,dRadius);
fout.close();
}
void Circle_Center(Point p1,Point p2,double dRadius)
{
double k = 0.0,k_verticle = 0.0;
double mid_x = 0.0,mid_y = 0.0;
double a = 1.0;
double b = 1.0;
double c = 1.0;
Point center1,center2;
k = (p2.y - p1.y) / (p2.x - p1.x);
if(k == )
{
center1.x = (p1.x + p2.x) / 2.0;
center2.x = (p1.x + p2.x) / 2.0;
center1.y = p1.y + sqrt(dRadius * dRadius -(p1.x - p2.x) * (p1.x - p2.x) / 4.0);
center2.y = p2.y - sqrt(dRadius * dRadius -(p1.x - p2.x) * (p1.x - p2.x) / 4.0);
}
else
{
k_verticle = -1.0 / k;
mid_x = (p1.x + p2.x) / 2.0;
mid_y = (p1.y + p2.y) / 2.0;
a = 1.0 + k_verticle * k_verticle;
b = - * mid_x - k_verticle * k_verticle * (p1.x + p2.x);
c = mid_x * mid_x + k_verticle * k_verticle * (p1.x + p2.x) * (p1.x + p2.x) / 4.0 -
(dRadius * dRadius - ((mid_x - p1.x) * (mid_x - p1.x) + (mid_y - p1.y) * (mid_y - p1.y)));
center1.x = (-1.0 * b + sqrt(b * b - * a * c)) / ( * a);
center2.x = (-1.0 * b - sqrt(b * b - * a * c)) / ( * a);
center1.y = Y_Coordinates(mid_x,mid_y,k_verticle,center1.x);
center2.y = Y_Coordinates(mid_x,mid_y,k_verticle,center2.x);
}
fout << center1.x << " " << center1.y << endl;
fout << center2.x << " " << center2.y << endl;
}
double Y_Coordinates(double x,double y,double k,double x0)
{
return k * x0 - k * x + y;
}
bool Data_Validation(Point p1,Point p2,double dRadius)
{
double dDistance = 0.0;
dDistance = sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));
if(dDistance == 0.0)
{
cout << "n输入了相同的点!n";
return false;
}
if(( * dRadius) >= dDistance)
return true;
else
{
cout << "n两点间距离大于直径!n";
return false;
}
}
void ReadData(Point &p1,Point &p2,double &dRadius)
{
cout << "请输入圆周上一点的坐标:";
cin >> p1.x >> p1.y;
cout << "请输入圆周上另一点的坐标:";
cin >> p2.x >> p2.y;
cout << "请输入圆的半径:";
cin >> dRadius;
if(! Data_Validation(p1,p2,dRadius))
{
cout << endl << "数据不合理!n";
exit();
}
}
【POJ 1981】Circle and Points(已知圆上两点求圆心坐标)
[题目链接]:http://poj.org/problem?id=1981 [题意] 给你n个点(n<=300); 然后给你一个半径R: 让你在平面上找一个半径为R的圆; 这里R=1 使得这个圆 ...
已知两点的经度和纬度,计算两点间的距离(php,javascript)
php代码:转载 http://www.cnblogs.com/caichenghui/p/5977431.html /** * 求两个已知经纬度之间的距离,单位为米 * * @param lng1 ...
NX二次开发-UFUN已知两个向量方向求夹角角度UF_VEC3_angle_between
NX9+VS2012 #include #include #include #include
【C语言】已知三角形三边长,求三角形面积
一. 数学基础: 已知三角形的三边,计算三角形面积,需要用到海伦公式: 即p=(a+b+c)/2 二. 算法: 输入三个边长,套用海伦公式计算面积,并输出. 可以先判断是否可以构成三角形,即任意两边之 ...
js已知A,B两点坐标,在线段AB上有C点,已知AC的距离,求C点的坐标
/** * @param {Number} _x1 A点坐标 * @param {Number} _y1 A点坐标 * @param {Number} _x2 B点坐标 * @param {Numbe ...
Codeforce 459A - Pashmak and Garden (已知两点求另外两点构成正方形)
Pashmak has fallen in love with an attractive girl called Parmida since one year ago... Today, Pashm ...
正方形已知两点对角线求另外两点(POJ2002)
至于为什么,上图.转载于MZW_BG 枚举正方形的一条边,此时有上正方形和下正方形. 最后正方形个数/4,因为每个正方形被枚举了4条边 #include u ...
ACM题目————已知前序和中序求后序
#include #include #include using namespace std; ], z ...
已知两点经纬度(百度地图),用js求解两点之间的角度
采用的网址:https://my.oschina.net/boogoogle/blog/740478
随机推荐
eclipse启动tomcat无法访问
eclipse启动tomcat无法访问 症状: tomcat在eclipse里面能正常启动,而在浏览器中访问http://localhost:8080/不能访问,且报404错误.同时其他项目页面也不能 ...
简单的sql server连接
private string constring="data source=112.74.73.122;initial catalog=qzyData;user id=sa;password ...
使用T4模板合并js文件
不知道该怎么表达,或许直接贴图贴代码更好 前因:在第一个使用angularjs的项目中我将所有的controller写到一个文件里面,深知维护起来那滋味,所以再次使用angularjs的时候,我便把所 ...
android 5.0以下版本使用atof报错解决
经过测试,如果手机系统在5.0之下,项目project.properties的target若在5.0以上(android-20), NDK 使用atof就会报错: cannot locate symb ...
stock 当天盘势
看盘 (一)怎样看大盘当天的指数收阴.收阳 投资者每天都看大盘,但多数人看不准大盘.大盘到底当天是收阴,还是收阳?我通过很长时间的记录.验证,发现大盘在正常时间内,收阴.收阳是有规律的.我判断的准确率 ...
js和jquery设置disabled属性为true使按钮失效
设置disabled属性为true即为不可用状态. JS: document.getElementByIdx("btn").disabled=true; Jquery: $(& ...
spark集群搭建
文中的所有操作都是在之前的文章scala的安装及使用文章基础上建立的,重复操作已经简写: 配置中使用了master01.slave01.slave02.slave03: 一.虚拟机中操作(启动网卡)s ...
ENQ: KO - FAST OBJECT CHECKPOINT tips
ENQ: KO - FAST OBJECT CHECKPOINT tips Question: What does the wait event ENQ: KO - FAST OBJECT CHECK ...
启用SharePoint 的 web application下面所有站点&ldquo;备用语言&rdquo;
clear $PSSnapin = Add-PsSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue | Out-N ...
Asp.Net Core发布绑定域名和端口
一.WebHostBuilder配置URL和端口进行侦听 UseUrls() 1.默认的ASP.NET Core项目绑定http://localhost:5000.通过使用UseUrls扩展方法——编 ...