找回密码
 立即注册

QQ登录

只需一步,快速开始

免费游戏加速器(十分好用)好用的城通网盘好用的城通网盘收入可提现
强大好用的简码阁识别插件个人可用的官方支付宝微信支付接口火山PC与安卓二合一绿色包
最新的易语言完整绿色版本下载易学火山模块下载易学模块易语言版本下载
查看: 980|回复: 0

[其它源码] 判断终点坐标是否超过以起点为中心的一个范围. 超出 得到距离终点坐标最近的坐标

[复制链接]
  • TA的每日心情

    2021-1-31 01:02
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2023-3-9 14:35:24 | 显示全部楼层 |阅读模式
    #include <iostream>
    #include <cmath>
    using namespace std;
    const double PI = 3.14159265358979323846;
    // 计算两点之间的距离
    double distance(double x1, double y1, double x2, double y2) {
        return sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));
    }
    int main() {
        double x1, y1, x2, y2, r;
        cout << "请输入起点坐标(x1, y1)、终点坐标(x2, y2)和半径r: ";
        cin >> x1 >> y1 >> x2 >> y2 >> r;
        double px, py;  // 最接近的半径坐标
        double minDist = distance(x2, y2, r, 0);  // 初始最小距离为终点到x轴半径的距离
        for (double angle = 0; angle <= 2 * PI; angle += 0.01) {
            double cx = r * cos(angle);
            double cy = r * sin(angle);
            double dist = distance(x2, y2, cx, cy);
            if (dist < minDist) {
                minDist = dist;
                px = cx;
                py = cy;
            }
        }
        cout << "最接近的半径坐标为(" << px << ", " << py << ")" << endl;
        if (minDist <= r) {
            cout << "终点坐标没有超过规定半径范围" << endl;
        } else {
            cout << "终点坐标已超过规定半径范围,已赋值成最接近的半径坐标" << endl;
            x2 = x1 + px;  // 以起点为中心,最接近半径坐标为终点的相对坐标
            y2 = y1 + py;
        }
        cout << "当前终点坐标为(" << x2 << ", " << y2 << ")" << endl;
        return 0;
    }

    请输入起点坐标(x1, y1)、终点坐标(x2, y2)和半径r: 0 0 6 7 5
    最接近的半径坐标为(-4.9999, 3.0001)
    终点坐标已超过规定半径范围,已赋值成最接近的半径坐标
    当前终点坐标为(-4.9999, 3.0001)

    简码阁全面专业的原创中文编程网站
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

     
     
    VIP咨询
    VIP办理
    VIP咨询QQ:2950831300
    交流1群:
    易语言脚本交流
    交流2群:
    【简码编程】交流2群
    工作时间:
    10:00-20:00

    QQ|Archiver|手机版|小黑屋|简码编程.易辅 ( 苏ICP备16034616号-2 )

    GMT+8, 2024-4-29 04:01 , Processed in 0.248600 second(s), 23 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表