日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

hdu1174(3维射线与圆是否相交)

發(fā)布時間:2025/3/19 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu1174(3维射线与圆是否相交) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡單的題意,要注意z2 = h2*0.9-r2

#include <iostream> #include <cmath> #include <vector> #include <string.h> #include <stdlib.h> #include <algorithm> using namespace std;#define MAX_N 110/*------------------常量區(qū)-------------------*/const double INF = 1e10; // 無窮大 const double EPS = 1e-8; // 計算精度 const double PI = acos(-1.0);// PI const int PINXING = 0; // 平行 const int XIANGJIAO = 1; // 相交 const int XIANGLI = 0; // 相離 const int GONGXIAN = 2; // 共線 const int CHONGDIE = -1; // 重疊 const int INSIDE = 1; // 點在圖形內(nèi)部 const int OUTSIDE = 0; // 點在圖形外部 const int BORDER = 2; // 點在圖形邊界/*-----------------類型定義區(qū)----------------*/struct Point { // 二維點或矢量double x, y;//double angle, dis; Point() {}Point(double x0, double y0): x(x0), y(y0) {}void read(){scanf("%lf%lf",&x,&y);} };struct Line { // 二維的直線或線段 Point p1, p2;Line() {}Line(Point p10, Point p20): p1(p10), p2(p20) {}void read(){scanf("%lf%lf%lf%lf",&p1.x,&p1.y,&p2.x,&p2.y);} };struct Rect { // 用長寬表示矩形的方法 w, h分別表示寬度和高度double w, h;Rect() {}Rect(double _w,double _h) : w(_w),h(_h) {} }; struct Rect_2 { // 表示矩形,左下角坐標是(xl, yl),右上角坐標是(xh, yh)double xl, yl, xh, yh;Rect_2() {}Rect_2(double _xl,double _yl,double _xh,double _yh) : xl(_xl),yl(_yl),xh(_xh),yh(_yh) {} }; struct Circle { // Point c;double r;Circle() {}Circle(Point _c,double _r) :c(_c),r(_r) {} };typedef vector<Point> Polygon; // 二維多邊形 typedef vector<Point> Points; // 二維點集/*-------------------基本函數(shù)區(qū)---------------------*/inline double max(double x,double y) {return x > y ? x : y; } inline double min(double x, double y) {return x > y ? y : x; } inline bool ZERO(double x) // x == 0 {return (fabs(x) < EPS); } inline bool ZERO(Point p) // p == 0 {return (ZERO(p.x) && ZERO(p.y)); }inline bool EQ(double x, double y) // eqaul, x == y {return (fabs(x - y) < EPS); } inline bool NEQ(double x, double y) // not equal, x != y {return (fabs(x - y) >= EPS); } inline bool LT(double x, double y) // less than, x < y {return ( NEQ(x, y) && (x < y) ); } inline bool GT(double x, double y) // greater than, x > y {return ( NEQ(x, y) && (x > y) ); } inline bool LEQ(double x, double y) // less equal, x <= y {return ( EQ(x, y) || (x < y) ); } inline bool GEQ(double x, double y) // greater equal, x >= y {return ( EQ(x, y) || (x > y) ); }// 輸出浮點數(shù)前,防止輸出-0.00調(diào)用該函數(shù)進行修正! inline double FIX(double x) {return (fabs(x) < EPS) ? 0 : x; }/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ //-------------------3D 區(qū)域----------------------------// struct Point3D { //三維點或矢量double x, y, z;Point3D() {}Point3D(double x0, double y0, double z0): x(x0), y(y0), z(z0) {} };struct Line3D { // 三維的直線或線段 Point3D p1, p2;Line3D() {}Line3D(Point3D p10, Point3D p20): p1(p10), p2(p20) {} };inline bool ZERO(Point3D p) // p == 0 {return (ZERO(p.x) && ZERO(p.y) && ZERO(p.z)); }// //三維矢量運算 bool operator==(Point3D p1, Point3D p2) {return ( EQ(p1.x, p2.x) && EQ(p1.y, p2.y) && EQ(p1.z, p2.z) ); } bool operator<(Point3D p1, Point3D p2) {if (NEQ(p1.x, p2.x)) {return (p1.x < p2.x);} else if (NEQ(p1.y, p2.y)) {return (p1.y < p2.y);} else {return (p1.z < p2.z);} } Point3D operator+(Point3D p1, Point3D p2) {return Point3D(p1.x + p2.x, p1.y + p2.y, p1.z + p2.z); } Point3D operator-(Point3D p1, Point3D p2) {return Point3D(p1.x - p2.x, p1.y - p2.y, p1.z - p2.z); } Point3D operator*(Point3D p1, Point3D p2) // 計算叉乘 p1 x p2 {return Point3D(p1.y * p2.z - p1.z * p2.y,p1.z * p2.x - p1.x * p2.z,p1.x * p2.y - p1.y * p2.x ); } double operator&(Point3D p1, Point3D p2) { // 計算點積 p1·p2return (p1.x * p2.x + p1.y * p2.y + p1.z * p2.z); } double Norm(Point3D p) // 計算矢量p的模 {return sqrt(p.x * p.x + p.y * p.y + p.z * p.z); }//求三維空間中兩點間的距離 double Dis(Point3D p1, Point3D p2) {return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y)+(p1.z-p2.z)*(p1.z-p2.z)); } // 求三維空間中點到直線的距離 double Dis(Point3D p, Line3D L) {if(L.p1==L.p2) return Dis(p, L.p1);return Norm((p - L.p1) * (L.p2 - L.p1)) / Norm(L.p2 - L.p1); }bool OnLine(Point3D p, Line3D L) // 判斷三維空間中點p是否在直線L上 {if(L.p1==L.p2 && p==L.p1) return true;//共點時,返回truereturn ZERO( (p - L.p1) * (L.p2 - L.p1) ); } bool OnLineSeg(Point3D p, Line3D L) // 判斷三維空間中點p是否在線段l上 {return ( ZERO((L.p1 - p) * (L.p2 - p)) &&EQ( Norm(p - L.p1) + Norm(p - L.p2), Norm(L.p2 - L.p1)) ); }///*---------------------代碼區(qū)---------------------------*/int main(int argc, const char * argv[]) {int T;cin>>T;while(T--){double h1,r1,x1,y1,z1;cin>>h1>>r1>>x1>>y1>>z1;z1 += h1-r1;double h2,r2,x2,y2,z2;double x3,y3,z3;cin>>h2>>r2>>x2>>y2>>z2;cin>>x3>>y3>>z3;z2 += h2*0.9-r2;Point3D p(x1,y1,z1);Point3D p1(x2,y2,z2),p2(x2+100*x3,y2+100*y3,z2+100*z3);if( LEQ(Dis(p, p1), r1) ){printf("YES\n");continue;}Line3D l(p1,p2);double dis=Dis(p,l);if( GT( dis,r1 ) ){printf("NO\n");}else{Point3D p3(x3,y3,z3);//然后判斷射線與球相交.if( LEQ( ((p1-p)&p3),0 ) ){printf("YES\n");}else printf("NO\n");}}return 0; }

?

總結(jié)

以上是生活随笔為你收集整理的hdu1174(3维射线与圆是否相交)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 毛片在线免费观看网址 | 国产一区二区三区视频在线 | 加勒比成人在线 | 性欧美极品 | 国产又粗又爽视频 | 亚洲一区二区三区黄色 | 最新中文字幕一区 | 日韩一区二区三区在线免费观看 | 精品一区二区三区人妻 | 精品欧美一区二区三区在线观看 | 婷婷九月丁香 | 欧美午夜一区二区三区 | 欧美三级欧美一级 | 日韩黄色网页 | 黄色一级免费大片 | 国产av成人一区二区三区高清 | 色亚洲影院 | 精品久久久久久久久中文字幕 | 国产传媒欧美日韩 | 澳门av在线 | 亚洲综合激情五月久久 | 黄色69 | 久久一区| 天天干夜夜看 | 亚洲天堂网在线观看 | 性高湖久久久久久久久免费 | 永久av免费在线观看 | 人成免费 | 欧美人狂配大交3d | 看个毛片 | 日日骚一区 | 性色影院 | 懂色视频在线观看 | 精品国产av 无码一区二区三区 | 亚洲精品1 | www.黄色在线观看 | 午夜精品欧美 | 五十路妻 | 黄色69视频| 91精品在线看 | 激情五月av | 女大学生的家政保姆初体验 | 日韩高清黄色 | 精品人妻天天爽夜夜爽视频 | 深夜福利免费视频 | 国产一区二区三区四区精 | 香蕉视频在线观看网站 | 国产精品一区在线观看 | 国产成人精品一区二区三区在线 | 寡妇高潮一级视频免费看 | 91热爆视频 | 黄网在线观看视频 | 国产欧美日韩另类 | 色欲久久久天天天精品综合网 | 日批免费观看视频 | 91.xxx.高清在线| 亚洲制服丝袜一区 | 国产一区二区三区四区hd | 五月天色综合 | 奶水旺盛的少妇在线播放 | 日日夜夜天天 | 九九热在线精品视频 | 女性毛片 | a黄色大片 | 毛片av免费 | 日韩一二三四 | 精品视频一区在线观看 | 一区二区三区成人 | 国产精品午夜福利视频234区 | 超碰导航| 中文人妻一区二区三区 | 少妇与公做了夜伦理 | 阿的白色内裤hd中文 | 欧美大尺度床戏做爰 | 男人的天堂狠狠干 | 国产精品国产精品国产 | 涩涩涩av | 韩国无码一区二区三区精品 | a黄色大片| 亚洲激情av | 玖玖在线视频 | 黄色片网站在线免费观看 | 亚洲人成在线免费观看 | 午夜88| 韩国一级淫一片免费放 | 姐姐你真棒插曲快来救救我电影 | 国产午夜一区二区三区 | 99久久久久久 | 一区欧美 | 秋霞影院午夜丰满少妇在线视频 | 香蕉久久夜色精品国产使用方法 | 亚洲精品成av人片天堂无码 | 日韩人体视频 | 高清中文字幕在线a片 | 影音先锋在线视频 | 在线欧美一区二区 | 免费性网站 | 免费看黄色一级片 | 丝袜在线视频 |