3点共线斜率单位向量都相等吗还是都等于1?

2363人阅读
算法(14)
java(102)
学习总结(83)
工作(31)
& & & & & & & & &
作者:Vashon
时间: & 发布时间:
一、拿到问题,首先分析并理清思路。
判断三点是否在同一条直线上需满足以下几点:
1、两点共点(p1与p2共点,p1与p3共点,p2与p3共点)
2、三点纵坐标相等,横坐标不相等
3、三点横坐标相等,且纵坐标不相等(横坐标不相等则不存在除数为0问题)
4、三点共点(可考虑可不考虑)
以上几点需要把斜率考虑在内(斜率相等(除数不能为0,且满足随机输入))
二、创建一个点的实体:
package com.ywx.
public class Point{
public Point(float x,float y){
public float getX() {
public void setX(float x) {
public float getY() {
public void setY(float y) {
三、判断三点是否共线(包含历史测试代码):
package com.ywx.
public class IsOnLine {
public static boolean IsLine(Point p1,Point p2,Point p3){
boolean flag=
float k1=0.0f;//斜率
float k2=0.0f;//斜率
//1、两点共点(p1与p2共点,p1与p3共点,p2与p3共点)
if((p1.getX()==p2.getX()&&p1.getY()==p2.getY())
||(p1.getX()==p3.getX()&&p1.getY()==p3.getY())
||(p2.getX()==p3.getX()&&p2.getY()==p3.getY())){
//2、三点纵坐标相等,横坐标不相等
if((p1.getY()==p2.getY())&&(p1.getY()==p3.getY())
&&(p1.getX()!=p2.getX())&&(p1.getX()!=p3.getX())){
//3、三点横坐标相等,且纵坐标不相等
if((p1.getX()==p2.getX())&&(p1.getX()==p3.getX())
&&(p1.getY()!=p2.getY())&&(p1.getY()!=p3.getY())){
}else{//横坐标不相等则不存在除数为0问题
k1=(p3.getY()-p2.getY())/(p3.getX()-p2.getX());
k2=(p1.getY()-p2.getY())/(p1.getX()-p2.getX());
if(k1==k2){
//4、三点共点
if(p1.getX()==p2.getX()&&p1.getX()==p3.getX()
&&p1.getY()==p2.getY()&&p1.getY()==p3.getY()){
//5、斜率相等(除数不能为0,且满足随机输入)
//&&&&&中间点p2作为除数,则可以随机输入
float n=p3.getX()-p2.getX();
float m=p1.getX()-p2.getX();
if(n!=0&&m!=0){//除数不能为0
k1=(p3.getY()-p2.getY())/n;
k2=(p1.getY()-p2.getY())/m;
if(k1==k2){
@SuppressWarnings(&static-access&)
public static void main(String args[]){
//三点共点
boolean bool=new IsOnLine().IsLine(new Point(0.0f,0.0f), new Point(0.0f,0.0f), new Point(0.0f,0.0f));
bool=new IsOnLine().IsLine(new Point(0.0f,0.0f), new Point(0.0f,0.0f), new Point(1.0f,1.0f));
bool=new IsOnLine().IsLine(new Point(1.0f,2.0f), new Point(2.0f,4.0f), new Point(4.0f,8.0f));
bool=new IsOnLine().IsLine(new Point(2.0f,3.0f), new Point(2.0f,5.0f), new Point(2.0f,8.0f));
bool=new IsOnLine().IsLine(new Point(1.0f,1.0f), new Point(1.0f,1.0f), new Point(1.0f,1.0f));
//三点随机输入测试
bool=new IsOnLine().IsLine(new Point(0.0f,2.0f), new Point(1.0f,1.0f), new Point(2.0f,0.0f));
bool=new IsOnLine().IsLine(new Point(1.0f,1.0f), new Point(2.0f,0.0f), new Point(0.0f,2.0f));
bool=new IsOnLine().IsLine(new Point(2.0f,0.0f), new Point(0.0f,2.0f), new Point(1.0f,1.0f));
System.out.println(&三点是否共线:&+bool);
}四、用Junit测试(此部分主要是学习Junit测试):
package com.ywx.
import org.junit.A
import org.junit.A
import org.junit.B
import org.junit.BeforeC
import org.junit.I
import org.junit.T
import com.ywx.count.IsOnL
import com.ywx.count.P
@SuppressWarnings(&static-access&)
public class IsOnLineTest{
public void test1(){//测试三点在原点(或共点)
boolean bool=new IsOnLine().IsLine(new Point(0.0f,0.0f),new Point(0.0f,0.0f),
new Point(0.0f,0.0f));
bool=new IsOnLine().IsLine(new Point(3.0f,3.0f),new Point(3.0f,3.0f),
new Point(3.0f,3.0f));
System.out.println(&三点是否共线:&+bool);
public void test2(){//三点随机输入
boolean bool=new IsOnLine().IsLine(new Point(0.0f,2.0f), new Point(1.0f,1.0f), new Point(2.0f,0.0f));
bool=new IsOnLine().IsLine(new Point(1.0f,1.0f), new Point(2.0f,0.0f), new Point(0.0f,2.0f));
bool=new IsOnLine().IsLine(new Point(2.0f,0.0f), new Point(0.0f,2.0f), new Point(1.0f,1.0f));
System.out.println(&三点是否共线:&+bool);
public void test3(){//横坐标相等
boolean bool=new IsOnLine().IsLine(new Point(1.0f,2.0f), new Point(1.0f,2.0f), new Point(1.0f,5.0f));
System.out.println(&三点是否共线:&+bool);
public void test4(){//纵坐标相等
boolean bool=new IsOnLine().IsLine(new Point(5.0f,2.0f), new Point(1.0f,2.0f), new Point(3.0f,2.0f));
System.out.println(&三点是否共线:&+bool);
public void test5(){//斜率测试1
boolean bool=new IsOnLine().IsLine(new Point(1.0f,2.0f),new Point(2.0f,4.0f),
new Point(3.0f,6.0f));
bool=new IsOnLine().IsLine(new Point(0.0f,-1.0f),new Point(1.0f,0.0f),
new Point(2.0f,1.0f));
System.out.println(&三点是否共线:&+bool);
public void test6(){//斜率测试2
boolean bool=new IsOnLine().IsLine(new Point(0.0f,-1.0f),new Point(1.0f,0.0f),
new Point(2.0f,1.0f));
bool=new IsOnLine().IsLine(new Point(1.0f,0.0f),new Point(2.0f,1.0f),
new Point(0.0f,-1.0f));
bool=new IsOnLine().IsLine(new Point(2.0f,1.0f),new Point(0.0f,-1.0f),
new Point(1.0f,0.0f));
System.out.println(&三点是否共线:&+bool);
public void test7(){
boolean bool=
Assert.assertTrue(&返回结果:&, new IsOnLine().IsLine(new Point(0.0f,-1.0f),new Point(1.0f,0.0f),
new Point(2.0f,1.0f)));
Assert.assertTrue(&返回结果:&, new IsOnLine().IsLine(new Point(0.0f,-1.0f),new Point(1.0f,0.0f),
new Point(2.0f,1.0f)));
Assert.assertTrue(&返回结果:&, new IsOnLine().IsLine(new Point(0.0f,-1.0f),new Point(1.0f,0.0f),
new Point(2.0f,1.0f)));
public void test0(){
Assert.assertTrue(&返回结果:&, new IsOnLine().IsLine(new Point(1.0f,0.0f),new Point(2.0f,0.0f),
new Point(3.0f,0.0f)));
Assert.assertTrue(&返回结果:&, new IsOnLine().IsLine(new Point(0.0f,1.0f),new Point(0.0f,2.0f),
new Point(0.0f,3.0f)));
public void test8(){
System.out.println(&开始测试。。。&);
public void test9(){
System.out.println(&测试结束。。。&);
后记:最后得感谢当时带我的在一线打拼十余年的技术大牛,虽然这是一个小程序,但在他的苛刻要求及耐心指引下意识到很多,这将会在我以后的工作中能派上用场。
总结:小小事情,大感悟。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:327374次
积分:5209
积分:5209
排名:第4641名
原创:181篇
转载:88篇
评论:139条
(2)(6)(2)(4)(7)(6)(2)(6)(1)(5)(6)(12)(13)(10)(3)(14)(23)(9)(7)(5)(6)(7)(14)(16)(34)(31)已知椭圆C:x2a2+y2b2=1(a>b>0),⊙O:x2+y2=b2,点A、F分别是椭圆C的左顶点和左焦点,点P是⊙O上的动点.(1)若P(-1,3),PA是⊙O的切线,求椭圆C的方程;(2)若PAPF是一个常数,求椭圆C的离心率;(3)当b=1时,过原点且斜率为k的直线交椭圆C于D、E两点,其中点D在第一象限,它在x轴上的射影为点G,直线EG交椭圆C于另一点H,是否存实数a,使得对任意的k>0,都有DE⊥DH?若存在,求出a的值,若不存在,请说明理由. - 跟谁学
跟谁学学生版:genshuixue_student精品好课等你领在线咨询下载客户端关注微信公众号
搜索你想学的科目、老师试试搜索吉安
跟谁学学生版:genshuixue_student精品好课等你领在线咨询下载客户端关注微信公众号&&&分类:已知椭圆C:x2a2+y2b2=1(a>b>0),⊙O:x2+y2=b2,点A、F分别是椭圆C的左顶点和左焦点,点P是⊙O上的动点.(1)若P(-1,3),PA是⊙O的切线,求椭圆C的方程;(2)若PAPF是一个常数,求椭圆C的离心率;(3)当b=1时,过原点且斜率为k的直线交椭圆C于D、E两点,其中点D在第一象限,它在x轴上的射影为点G,直线EG交椭圆C于另一点H,是否存实数a,使得对任意的k>0,都有DE⊥DH?若存在,求出a的值,若不存在,请说明理由.已知椭圆C:2a2+2b2=1(a>b>0),⊙O:x2+y2=b2,点A、F分别是椭圆C的左顶点和左焦点,点P是⊙O上的动点.(1)若P(-1,),PA是⊙O的切线,求椭圆C的方程;(2)若是一个常数,求椭圆C的离心率;(3)当b=1时,过原点且斜率为k的直线交椭圆C于D、E两点,其中点D在第一象限,它在x轴上的射影为点G,直线EG交椭圆C于另一点H,是否存实数a,使得对任意的k>0,都有DE⊥DH?若存在,求出a的值,若不存在,请说明理由.科目:最佳答案解:(1)∵点P(-1,)在圆上,∴b2=4又∵PA是⊙O的切线,∴△OPA为直角三角形,∠POA=60°∴OA=2OP=2b=4,∴a=4∴椭圆C的方程为216+24=1.…(4分)(2)∵是一个常数,∴当点P分别在(±b,0)时比值相等,即=,整理可得,b2=ac,又∵b2=a2-c2,∴a2-c2-ac=0,同除以a2可得e2+e-1=0,解得离心率e=.…(8分)(3)如若存在,∵b=1,∴设椭圆方程为2a2+y2=1设y1∈(0,1),D(x1,y1),H(x2,y2),E(-x1,-y1),G(x1,0)∵D、H都在椭圆C上,∴12a2+y12=1x12a2+y22=1,两式相减得&(x12-x22)+a2(y12-y22)=0由题意可得,D、H在第一象限,且不重合,故(x1-x2)(x1+x2)≠0∴1-y2x1-x2o1+y2x1+x2=-2&(*)而又因为E、G、H三点共线,故kEH=kEG,即1+y2x1+x2=1)x1-(-x1)=12x1,代入(*)式可得1-y2x1-x2o12x1=-2而DE⊥DH,即为1x1o1-y2x1-x2=-1,因此,-=-2,即a2=2,a=.从而存在椭圆22+y2=1满足题意.…(18分)解析(1)利用点P(-1,)在圆上,可得b的值,根据PA是⊙O的切线,可求a的值,从而可得椭圆C的方程;(2)利用是一个常数,可得当点P分别在(±b,0)时比值相等,即=,由此可求椭圆的离心率;(3)如若存在,设椭圆方程,将D,H坐标代入,利用点差法,结合E、G、H三点共线,即kEH=kEG,利用DE⊥DH,即可求得结论.知识点:&&&&基础试题拔高试题热门知识点最新试题
关注我们官方微信关于跟谁学服务支持帮助中心三点共线 - 搜狗百科
声明:搜狗百科免费提供信息查询和信息编辑,坚决打击恶意篡改、冒充官方收费代编等违规行为。
向量ON =#OA+(1-#)OB 则N. A . B 三点共线
三点在同一条直线上
三点共线的意思:三点在同一条直线上。
方法一:取两点确立一条直线,计算该直线的 。代入第三点坐标 看是否满足该解析式   方法二:设三点为A、B、C 。利用向量证明:a倍AB向量=AC向量(其中a为非零实数)。   方法三:利用求出AB斜率和AC斜率,相等即三点共线。   方法四: 证三次。(误,两点必然共线)   方法五:用梅涅劳斯定理   方法六:利用几何中的公理“如果两个不重合的平面有一个公共点,那么它们有且只有一条过该点的公共直线。”可知:如果三点同属于两个相交的平面则三点共线。   方法七:运用公(定)理 “过直线外一点有且只有一条直线与已知直线平行(垂直)”。其实就是。   方法八:证明其夹角为180°   方法九:设A B C ,证明△ABC面积为0
词条标签:
合作编辑者:
搜狗百科词条内容由用户共同创建和维护,不代表搜狗百科立场。如果您需要医学、法律、投资理财等专业领域的建议,我们强烈建议您独自对内容的可信性进行评估,并咨询相关专业人士。
点击编辑词条,进入编辑页面

我要回帖

更多关于 单位向量都相等吗 的文章

 

随机推荐