當前位置:首頁 » 編程語言 » python直線交點

python直線交點

發布時間: 2022-06-06 08:59:40

『壹』 python 知道直線方程,怎麼在直線上隨機生成一個點

我想在一個x,y散點圖上生成隨機點,這些點在給定線的上方或下方。例如,如果直線是y=x,我想在繪圖的左上角(直線上方)生成一個點列表,在繪圖的右下角(直線下方)生成一個點列表。下面是一個點在y=5以上或以下的示例:
import random
import matplotlib.pyplot as plt

num_points = 10
x1 = [random.randrange(start=1, stop=9) for i in range(num_points)]
x2 = [random.randrange(start=1, stop=9) for i in range(num_points)]
y1 = [random.randrange(start=1, stop=5) for i in range(num_points)]
y2 = [random.randrange(start=6, stop=9) for i in range(num_points)]

plt.scatter(x1, y1, c='blue')
plt.scatter(x2, y2, c='red')
plt.show()

但是,我獨立地生成了x和y點,這限制了我的方程,其中y=c(其中c是常數)。如何將其擴展到任意y=mx+b?在

『貳』 Python:怎麼求直線上一個點

1、把python的scripts文件夾加入到環境變數裡面 2、運行cmd 3、cd XXX切到程序所在文件夾 4、輸入python xxx.py

『叄』 python 如何在兩條折線圖的交點處做標記

把交點計算出來,然後把交點畫上去

『肆』 已知兩條直線(兩點式),求交點坐標,C語言實現

#include<stdio.h>
int main()
{
double x,y,x0,y0,x1,y1,x2,y2,x3,y3,k1,k2;
scanf("%lf %lf %lf %lf %lf %lf %lf %lf",&x0,&y0,&x1,&y1,&x2,&y2,&x3,&y3);
k1=(y0-y1)/(x0-x1);
k2=(y2-y3)/(x2-x3);
x=(k1*x0-k2*x2+y2-y0)/(k1-k2);
y=y0+(x-x0)*k1;
printf("%lf %lf\n",x,y);
return 0;
}
我測試了下,對的,你看看

『伍』 python怎麼判斷兩條線段相交

先判斷兩條線段是否不平行(最好同時判斷是否有交點並且不平行,因為浮點運算不精確),然後計算兩條線段的交點。以下是C語言代碼:
#include<stdio.h>
#include<math.h>
#define eps 1e-8
#define zero(x) (((x)>0?(x):-(x))<eps)
struct point{double x,y;};

//計算交叉乘積(P1-P0)x(P2-P0)
double xmult(point p1,point p2,point p0){
return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
}

//判點是否在線段上,包括端點
int dot_online_in(point p,point l1,point l2){
return zero(xmult(p,l1,l2))&&(l1.x-p.x)*(l2.x-p.x)<eps&&(l1.y-p.y)*(l2.y-p.y)<eps;
}

//判兩點在線段同側,點在線段上返回0
int same_side(point p1,point p2,point l1,point l2){
return xmult(l1,p1,l2)*xmult(l1,p2,l2)>eps;
}

//判兩直線平行
int parallel(point u1,point u2,point v1,point v2){
return zero((u1.x-u2.x)*(v1.y-v2.y)-(v1.x-v2.x)*(u1.y-u2.y));
}

//判三點共線
int dots_inline(point p1,point p2,point p3){
return zero(xmult(p1,p2,p3));
}

//判兩線段相交,包括端點和部分重合
int intersect_in(point u1,point u2,point v1,point v2){
if (!dots_inline(u1,u2,v1)||!dots_inline(u1,u2,v2))
return !same_side(u1,u2,v1,v2)&&!same_side(v1,v2,u1,u2);
return dot_online_in(u1,v1,v2)||dot_online_in(u2,v1,v2)||dot_online_in(v1,u1,u2)||dot_online_in(v2,u1,u2);
}

//計算兩線段交點,請判線段是否相交(同時還是要判斷是否平行!)
point intersection(point u1,point u2,point v1,point v2){
point ret=u1;
double t=((u1.x-v1.x)*(v1.y-v2.y)-(u1.y-v1.y)*(v1.x-v2.x))
/((u1.x-u2.x)*(v1.y-v2.y)-(u1.y-u2.y)*(v1.x-v2.x));
ret.x+=(u2.x-u1.x)*t;
ret.y+=(u2.y-u1.y)*t;
return ret;
}

int main(void)
{
point u1,u2,v1,v2,ans;
printf("請輸入線段1的兩個端點:\n");
scanf("%lf%lf%lf%lf",&u1.x,&u1.y,&u2.x,&u2.y);
printf("請輸入線段2的兩個端點:\n");
scanf("%lf%lf%lf%lf",&v1.x,&v1.y,&v2.x,&v2.y);
if (parallel(u1,u2,v1,v2)||!intersect_in(u1,u2,v1,v2)){
printf("無交點!\n");
}
else{
ans=intersection(u1,u2,v1,v2);
printf("交點為:(%lf,%lf)",ans.x,ans.y);
}
return 0;
}

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:639
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:368
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:84
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:310
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:793
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:344
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:212
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:812
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:366
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:592