圓與直線交點

2021-10-22 17:20:21 字數 1988 閱讀 4273

圓與直線交點題目鏈結

#include

//使用scanf和printf的標頭檔案

#include

//使用c風格字串函式的標頭檔案

#include

//使用演算法庫的標頭檔案,max,min,swap,sort等

#include

//使用cin,cout的標頭檔案

#include

//數學標頭檔案

#include

//使用memset函式的標頭檔案

#include

using

namespace std;

#define ll long long

const

double pi=

3.1415926535

;const

double eps=

1e-10

;struct pot//點

//建構函式初始化

void

prf_pot()

\n",x,y);}

};typedef pot vec;

double

operator

^(pot a,pot b)

vec operator

-(pot b,pot a)

vec operator

+(pot a,pot b)

//(根據兩個點返回向量);

vec operator

*(vec a,

double k)

//向量乘以乙個常數(及對向量的拉伸,返回向量)

vec operator

/(vec a,

double k)

//向量除以乙個常數(及對向量的收縮,返回向量)!!注意k不為0 !!

bool

operator

<

(const pot a,

const pot b)

//判斷兩個點之間的大小(橫座標作為第一縱座標作為第二引數進行判斷)

bool

operator==(

const pot a,

const pot b)

double

dot(vec a,vec b)

double

length

(vec a)

struct line//線(點和方向向量構成)

pot point

(double x)};

pot foot_pot

(pot a,pot b,pot p)

//(點積滿**換律)

struct cir

;double

area()

intis_relation

(cir a)

//通過角度求座標

inline pot point

(double a)

//a指的是距x軸偏移的角度 };

intsgn

(double x)

double

dis_p

(pot a,pot b)

intlinecirceinter

(line l,cir c,vector

& sol)

double base=

sqrt

(c.r*c.r-dis)

; pot e=l.v/

length

(l.v)

;//單位方向向量

sol.

push_back

(pr+e*base)

; sol.

push_back

(pr-e*base)

;return2;

}vector sol;

intmain()

sol.

clear()

;puts(""

);}return0;

}

計算幾何之求圓與直線的交點

求圓與直線的交點的方法是 求圓心c在直線l上的投影點pr 求出直線l上的單位向量e 根據r和pr的長度來計算出圓內線段部分的一半base 用pr base e即得到答案 題目 cgl 7 d ac include include include using namespace std define ...

圓與線段的交點

poj 3819 給出一條線段的兩個端點,再給出n個圓,求出這條線段被所有圓覆蓋的部分佔了整條線段的百分比。圓與線段的交點 向量ab 的引數方程 p a t b a 0 t 1 將點帶入圓的方程即可。注意 有交點 0 t 1 此題求覆蓋的部分。則 若求得 t 滿足 double ask double...

求向量與圓交點

這個題也是被t4專家暴虐的題,我直接直線然後delta。跟高中數學一樣,大佬叫我用向量的方式還是啥做,就是不要解方程,結果還是沒想出來。後來把這個題分享給乙個師兄,他剛好在一篇講光線追蹤的 看到然後拿給我看,書中是球面不是圓,都差不多,下面按我的理解寫一下。首先三維空間下,假設圓心o a,b,c 半...