首页 > 编程知识 正文

c语言输入平面任意两点的坐标,c语言三个点的坐标怎么求

时间:2023-05-04 00:55:15 阅读:281620 作者:1929

数学思想:利用圆方程和直线方程

已知两点坐标和半径求圆心坐标程序

#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&lpar;已知圆上两点求圆心坐标&rpar;

[题目链接]:http://poj.org/problem?id=1981 [题意] 给你n个点(n<=300); 然后给你一个半径R: 让你在平面上找一个半径为R的圆; 这里R=1 使得这个圆 ...

已知两点的经度和纬度,计算两点间的距离&lpar;php,javascript&rpar;

php代码:转载 http://www.cnblogs.com/caichenghui/p/5977431.html /** * 求两个已知经纬度之间的距离,单位为米 * * @param lng1 ...

NX二次开发-UFUN已知两个向量方向求夹角角度UF&lowbar;VEC3&lowbar;angle&lowbar;between

NX9+VS2012 #include #include #include #include

【C语言】已知三角形三边长,求三角形面积

一. 数学基础: 已知三角形的三边,计算三角形面积,需要用到海伦公式: 即p=(a+b+c)/2 二. 算法: 输入三个边长,套用海伦公式计算面积,并输出. 可以先判断是否可以构成三角形,即任意两边之 ...

js已知A&comma;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 ...

正方形已知两点对角线求另外两点&lpar;POJ2002&rpar;

至于为什么,上图.转载于MZW_BG 枚举正方形的一条边,此时有上正方形和下正方形. 最后正方形个数/4,因为每个正方形被枚举了4条边 #include u ...

ACM题目————已知前序和中序求后序

#include #include #include using namespace std; ], z ...

已知两点经纬度&lpar;百度地图&rpar;&comma;用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&period;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&colon; 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&semi;备用语言&rdquo&semi;

clear $PSSnapin = Add-PsSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue | Out-N ...

Asp&period;Net Core发布绑定域名和端口

一.WebHostBuilder配置URL和端口进行侦听 UseUrls() 1.默认的ASP.NET Core项目绑定http://localhost:5000.通过使用UseUrls扩展方法——编 ...

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。