您的位置:首页 > 房产 > 家装 > 网页开发制作教程_深圳市小程序科技有限公司_长沙seo网络优化_免费推广平台

网页开发制作教程_深圳市小程序科技有限公司_长沙seo网络优化_免费推广平台

2025/3/16 11:17:19 来源:https://blog.csdn.net/sinat_29890433/article/details/146094911  浏览:    关键词:网页开发制作教程_深圳市小程序科技有限公司_长沙seo网络优化_免费推广平台
网页开发制作教程_深圳市小程序科技有限公司_长沙seo网络优化_免费推广平台

圆弧的定义

圆心 (xc,yc)。

半径 r。

圆弧上的两点 P1(x1,y1) 和 P2(x2,y2)。

目标

在圆弧上均匀取 n 个点(包括 P1​ 和 P2​)。

1. 计算两点对应的角度

使用 atan2() 函数计算两点相对于圆心的角度:

θ1=atan2(y1−yc,x1−xc)

θ2=atan2(y2−yc,x2−xc)

将角度调整到 [0,2π)[0,2π) 范围

2 .计算圆弧的总角度

计算圆弧的总角度:

Δθ=θ2−θ1

如果 Δθ<0,则加上 2π 使其为正.

3.计算每个分段的角度

计算每个分段的角度:

δθ=Δθ/n−1

4.计算每个点的角度

计算每个点的角度:

θi=θ1+i⋅δθ,(i=0,1,2,…,n−1)

5.计算每个点的坐标

使用极坐标公式计算每个点的坐标:

xi=xc+r⋅cos⁡(θi)

yi=yc+r⋅sin⁡(θi)

#include <iostream>
#include <cmath>struct Point3D {double x, y, z;
};// 计算两点连线与 XY 平面的夹角(弧度制)
double calculate_angle_with_xy_plane(const Point3D& p1, const Point3D& p2) {// 计算连线向量double vx = p2.x - p1.x;double vy = p2.y - p1.y;double vz = p2.z - p1.z;// 计算连线向量的长度double v_length = std::sqrt(vx * vx + vy * vy + vz * vz);// 计算夹角double theta = std::asin(std::abs(vz) / v_length);return theta;
}int main() {Point3D p1 = {1, 2, 3}; // 点 P1Point3D p2 = {4, 5, 6}; // 点 P2double angle = calculate_angle_with_xy_plane(p1, p2);std::cout << "连线与 XY 平面的夹角(弧度制): " << angle << "\n";std::cout << "连线与 XY 平面的夹角(角度制): " << angle * 180 / M_PI << "°\n";return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com