知道两条相交两点坐标求直线方程的方程,怎么求两条相交

求与两直线都垂直相交的直线方程_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
求与两直线都垂直相交的直线方程
我有更好的答案
jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http://e.hiphotos.baidu./zhidao/pic/item/564ea62eb964b4de9c82d1584f27.baidu<a href="http://e.com/zhidao/wh%3D600%2C800/sign=ecd7b89ee9f/564ea62eb964b4de9c82d1584f27.jpg" esrc="http://e.hiphotos
为您推荐:
其他类似问题
您可能关注的内容
直线方程的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;2325人阅读
【计算几何】(24)
【学习笔记/总结】(166)
【算法总结】(58)
=====ACM=====(480)
转载自学长
如图,如何求得直线AB和直线CD的交点P?
以上内容摘自《算法艺术与信息学竞赛》。
思路:利用叉积求得点P分线段DC的比,然后利用高中学习的定比分点坐标公式求得分点P的坐标。
看不懂的可以去复习下
&pre name=&code& class=&cpp&&&span style=&font-family:Microsoft YaH&&#include&cmath&
#include&ctime&
#include&queue&
#include&stack&
#include&string&
#include&cstdio&
#include&cstring&
#include&cstdlib&
#include&iostream&
#include&algorithm&
#define Max(a,b) a&b?a:b
#define Min(a,b) a&b?b:a
#define mem(a,b) memset(a,b,sizeof(a))
int dir[4][2]= {{0,-1},{-1,0},{0,1},{1,0}};
#define N 105
const double eps = 1e-6;
const double Pi = acos(-1.0);
struct Point
Point() {}
Point(double x,double y):x(x),y(y) {}
double x,y;
struct Seg
Point p1,p2;
int sgn(double x)
return x&-eps ? -1 : (x&eps);
double Cross(const Point& p1,const Point& p2,const Point& p3,const Point& p4)
return (p2.x-p1.x)*(p4.y-p3.y) - (p2.y-p1.y)*(p4.x-p3.x);
double Area(const Point& p1,const Point& p2,const Point& p3)
return Cross(p1,p2,p1,p3);
double fArea(const Point& p1,const Point& p2,const Point& p3)
return fabs(Area(p1,p2,p3));
bool Meet(const Point& p1,const Point& p2,const Point& p3,const Point& p4)
return max(min(p1.x,p2.x),min(p3.x,p4.x)) &= min(max(p1.x,p2.x),max(p3.x,p4.x))
&& max(min(p1.y,p2.y),min(p3.y,p4.y)) &= min(max(p1.y,p2.y),max(p3.y,p4.y))
&& sgn(Cross(p3,p2,p3,p4) * Cross(p3,p4,p3,p1)) &= 0
&& sgn(Cross(p1,p4,p1,p2) * Cross(p1,p2,p1,p3)) &= 0;
Point Inter(const Point& p1,const Point& p2,const Point& p3,const Point& p4)
double k = fArea(p1,p2,p3) / fArea(p1,p2,p4);
return Point((p3.x + k*p4.x)/(1+k),(p3.y + k*p4.y)/(1+k));
int main()
while(T--)
Point a,b,c,d;
Inter(a,c, b,d).print();
代码方面,我并没有按照书上的写法来写,而是直接求出“比”k,然后利用通分前的公式计算。
书上那样写可能是因为前面已经求得了两个叉积,直接使用更方便的关系。
下面是书中的写法。
Point Inter(const Point& p1,const Point& p2,const Point& p3,const Point& p4)
double s1 = fArea(p1,p2,p3) , s2 = fArea(p1,p2,p4);
return Point((p4.x*s1+p3.x*s2)/(s1+s2),(p4.y*s1+p3.y*s2)/(s1+s2));
NYOJ例题1132链接:
1)先求一条线段的直线方程,判断另一条线段的两个端点是否在直线的异侧
2)再求另一条线段的直线方程,同上判断;
3)再考虑线段共线的情况,求出重合点;
不共线,用二阶行列式求出交点*/
#include&cmath&
#include&ctime&
#include&queue&
#include&stack&
#include&string&
#include&cstdio&
#include&cstring&
#include&cstdlib&
#include&iostream&
#include&algorithm&
#define Max(a,b) a&b?a:b
#define Min(a,b) a&b?b:a
#define mem(a,b) memset(a,b,sizeof(a))
int dir[4][2]= {{0,-1},{-1,0},{0,1},{1,0}};
const double eps = 1e-6;
const double Pi = acos(-1.0);
double a,b,c;
double a1,b1,c1,a2,b2,c2;
typedef struct Point
double min(double a,double b)
double max(double a,double b)
void GetLine(Point p,Point q)
a=q.y-p.y;
b=p.x-q.x;
c=q.x*p.y-p.x*q.y;
int flag(Point p1,Point p2,Point q1,Point q2)
double m,n;
GetLine(p2,q2);
a2=a,b2=b,c2=-c;
m=a*p1.x+b*p1.y+c;
n=a*q1.x+b*q1.y+c;
if(m*n&0) return 0;
if(fabs(m)&1e-8&&fabs(n)&1e-8)
if(fabs(b)&1e-8)
if(((p1.y&min(p2.y,q2.y)&&q1.y&min(p2.y,q2.y))||(p1.y&max(p2.y,q2.y)&&q1.y&max(p2.y,q2.y)))) return 0;
if(p1.y==p2.y || p1.y==q2.y)r.x=p1.x,r.y=p1.y;
else r.x=q1.x,r.y=q1.y;
if(((p1.x&min(p2.x,q2.x)&&q1.x&min(p2.x,q2.x))||(p1.x&max(p2.x,q2.x)&&q1.x&max(p2.x,q2.x)))) return 0;
if(p1.x==p2.x || p1.x==q2.x) r.x=p1.x,r.y=p1.y;
else r.x=q1.x,r.y=q1.y;
GetLine(p1,q1);
a1=a,b1=b,c1=-c;
m=a*p2.x+b*p2.y+c;
n=a*q2.x+b*q2.y+c;
if(m*n&0) return 0;
r.x=(c1*b2-c2*b1)/(a1*b2-a2*b1);
r.y=(a1*c2-a2*c1)/(a1*b2-a2*b1);
int main()
//freopen(&1.txt&,&r&,stdin);
//freopen(&2.txt&,&w&,stdout);
Point a,b,c,d;
scanf(&%d&,&n);
while(n--)
scanf(&%lf%lf%lf%lf%lf%lf%lf%lf&,&a.x,&a.y,&c.x,&c.y,&b.x,&b.y,&d.x,&d.y);
if(flag(a,b,c,d)) printf(&yes %.1lf %.1lf\n&,r.x,r.y);
else printf(&no\n&);
1、求交点之前,要保证两条直线不共线。
2、如果是求两条线段的交点,先判断两条线段是否相交。
& & & 若相交,则问题可转化成两条直线求交点。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:509075次
积分:11212
积分:11212
排名:第1580名
原创:534篇
转载:24篇
译文:75篇
评论:90条
nyist计科13级本科,bjtu17级在读硕士,喜爱算法,热爱编程,欢迎一起学习交流。
加贝木苇的理想国
文章:10篇
阅读:10170
文章:14篇
阅读:5720
阅读:3632
文章:77篇
阅读:84050
(1)(1)(6)(4)(18)(5)(18)(1)(15)(5)(2)(2)(12)(5)(4)(4)(6)(36)(42)(36)(33)(40)(19)(60)(26)(39)(43)(12)(37)(29)(12)(11)(29)(13)(2)(2)(3)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'已知两直线方程,并且相交,如何求出两直线的夹角,_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
已知两直线方程,并且相交,如何求出两直线的夹角,
我有更好的答案
两直线夹角θ公式: tgθ=(k2-k1)/(1+k1*k2)
先求出交点,再分别从两直线随便取两点,求出三点间两两的距离,用余弦定理即可求出。谢谢采纳,纯属原创
特殊情况除外,其他情况的可根据两直线斜率求出
为您推荐:
其他类似问题
您可能关注的内容
直线方程的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;两条直线的交点教案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
两条直线的交点教案
&&两条直线的交点教案
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢君,已阅读到文档的结尾了呢~~
●教学目标
一 教学知识点 1 交点
2 二元一次方程组的惟一解
二 能力训练要求 1 掌握判断两直线相交的方法
2 会求两直线交点坐标
3 认识两直线交点与二元一次方程组的关系
4 体会判断两直线相交中的数形结合思想
三 德育渗透目标 1 认识事物间的内在联系
2 用辩证的观点看问题
●教学重点 判断两直线是否相交
●教学难点 两直线相交与二元一次方程组的关系
●教学方法 启发引导式 在学生认识直线方程的基础上,启发&#46;&#46;
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
判断两直线是否相交
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 两点坐标求直线方程 的文章

 

随机推荐