soj - 1815 - 计算两点间的距离

本文介绍了一个使用C++实现的计算二维平面上两点间距离的方法。通过定义一个名为node的类来存储点的坐标,并实现了一个dis成员函数来计算两点之间的欧几里得距离。最后,程序读取多组点坐标,并输出每组点的距离。

题意:请用类描述顶点信息,输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。

题目链接:http://soj.me/1815

——>>别拿int到定义double的东西就好

#include <iostream>
#include <iomanip>
#include <cmath>

using namespace std;

class node
{
    private:
        double x;
        double y;
    public:
        node(double xx, double yy):
            x(xx), y(yy){}
        double dis(node b)
        {
            return hypot(x-b.x, y-b.y);
        }
};

int main()
{
    int n;
    double x1, y1, x2, y2;
    cin>>n;
    while(n--)
    {
        cin>>x1>>y1>>x2>>y2;
        node a(x1, y1), b(x2, y2);
        cout<<setiosflags(ios::fixed)<<setprecision(2)<<a.dis(b)<<endl;
    }
    return 0;
}



%% 防空地面雷达搜索跟踪模型 %% 运行环境初始化 close all; % 关闭所有现有图形窗口 clear; clc; %% 全局参数设置 Sig_Time = 300; % 仿真总步数 STEP = 0.1; % 时步长(s) Sig_Num = floor(Sig_Time/STEP) + 1; % 总采样点数 Time = (0:STEP:Sig_Time)'; % 时数组 Max_R=20000; % 定义雷达PPI显示的最远距离 (注意: 这只是PPI显示范围) Ls = 1; %% 地面雷达参数(通过子程序获取) try Radar = getRadarParameters(); % 调用修改后的参数输入函数 catch ME errordlg(['雷达参数获取失败: ' ME.message], '初始化错误'); return; end Radar_Pos = [0, Radar.hr, 0]; % 雷达位置[x,y,z] (Y是高度) %% 目标参数 [Target, State_T, Guide_T] = createTargetParameters(Sig_Num, STEP); % State_T 包含 [x, y, z, vx, vy, vz, Theta_T, Psi_T] %% 动态计算雷达-目标距离 (可选,这里主要用于理解) Radar_Dist = zeros(Sig_Num, 1); % 三维距离 Radar_Dist_xz = zeros(Sig_Num, 1); % xz平面距离 for k = 1:Sig_Num target_pos = State_T(k,1:3); Radar_Dist(k) = norm(target_pos - Radar_Pos); Radar_Dist_xz(k) = norm([State_T(k,1), State_T(k,3)]); % XZ平面距离(雷达在原点xz平面) end %% 环境参数 Ts = 290; % 等效温度 [K] sigma_h = 0.1; % 地面粗糙度 (m) %% 计算最大探测距离(简化版) R_max_bt = calculateMaxDetectionRange(Target.RCS, Radar); % 确保这个函数存在或替换为实际计算 fprintf('理论最大探测距离: %.2f km\n', R_max_bt/1000); fprintf('PPI显示最大距离: %.2f km\n', Max_R/1000); %% 干扰选择 (这部分代码未提供,假设存在) % jamming_type = menu('选择干扰类型','远距离干扰','自卫干扰', '无干扰','混合干扰'); % [SOJ, SSJ] = jamming_parameters_with_position(jamming_type); % 确保这个函数存在 % ========================================================================= %% 新增:绘制三维运动轨迹图 % ========================================================================= figure('Name', '3D Trajectory Visualization', 'Position', [950, 100, 800, 800]); % 创建新窗口 plot3(State_T(:,1), State_T(:,3), State_T(:,2), 'b-', 'LineWidth', 1.5); % 绘制目标轨迹 (X, Z, Y -> X地距, Z地距, Y高度) hold on; plot3(Radar_Pos(1), Radar_Pos(3), Radar_Pos(2), 'rs', 'MarkerSize', 10, 'MarkerFaceColor', 'r'); % 绘制雷达位置 (红方块) plot3(State_T(1,1), State_T(1,3), State_T(1,2), 'go', 'MarkerSize', 8, 'MarkerFaceColor', 'g'); % 标记目标起点 (绿圈) plot3(State_T(end,1), State_T(end,3), State_T(end,2), 'mx', 'MarkerSize', 8, 'Li
最新发布
04-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值